Compare commits

...

1780 Commits

Author SHA1 Message Date
ashilkn
f0c29fef5c Merge branch 'main' into f-droid 2024-10-16 17:06:01 +05:30
Neeraj Gupta
f32d881485 [mob][photos] Add artificial delay to debug thrown exception (#3729) 2024-10-16 16:30:50 +05:30
Ashil
88210223be [mob][photos] Bump up to v0.9.49 (#3730) 2024-10-16 16:29:41 +05:30
ashilkn
2301244cd6 [mob][photos] Bump up to v0.9.49 2024-10-16 16:17:46 +05:30
ashilkn
c62a3258ad [mob][photos] Refactor 2024-10-16 16:00:23 +05:30
ashilkn
deef7ac290 [mob][photos] Wrap with unawaited 2024-10-16 15:55:15 +05:30
ashilkn
15074c1945 [mob][photos] Make return type more correct 2024-10-16 15:49:02 +05:30
ashilkn
182972ce4a [mob][photos] Add delay before calling setHideAppContent in init of LockScreenSettings to check whether 'lateinit property activity has not been initialized' PlatformExecption goes away 2024-10-16 15:47:42 +05:30
Neeraj Gupta
e52fad6b2c [mob] Upgrade onnxruntime (#3726)
## Description

## Tests
2024-10-16 13:18:35 +05:30
Neeraj Gupta
beca27a0f5 [mob] Upgrade onnxruntime 2024-10-16 13:18:01 +05:30
Neeraj Gupta
8ee62da280 [auth] updated icons for dark/light modes (#3535) 2024-10-16 12:51:53 +05:30
Manav Rathi
5ef1b62854 [desktop] People suggestions - WIP - Part x/x (#3725)
Use a median based suggestion mechanism.
2024-10-16 12:24:05 +05:30
mangesh
e99a0444f9 Adding steps to install dependencies (#3693)
## Description

This PR includes some minor updates with the installation of
dependencies. I tried setting up ente on a fresh server and I did not
notice that I did not have all the dependencies until I was getting
stopped by errors at every step.

## Tests

Any tests needed for docs ?
2024-10-16 12:20:37 +05:30
Manav Rathi
6578d4e570 Sort by median sim 2024-10-16 12:05:52 +05:30
Manav Rathi
56365ac520 Use median check 2024-10-16 11:57:59 +05:30
Manav Rathi
e697b863e7 Debugging timings 2024-10-16 10:57:12 +05:30
Manav Rathi
90494c6144 Filter empty suggestions 2024-10-16 10:53:11 +05:30
Ashil
7dbc1f9389 [mob][photos] Fix system back gesture closing the app when triggered after closing a modal (#3723)
Closes #3613 
Resolves issues in #3524 which are reproducible after a modal is closed
(like bottom sheets, dialogs etc).
2024-10-16 09:49:14 +05:30
ashilkn
56604f627e [mob][photos] Bump up to v0.9.48 2024-10-16 09:26:23 +05:30
ashilkn
0a8d403ea0 [mob][photos] Fix system back gesture closing the app when triggered after closing a modal 2024-10-16 09:09:07 +05:30
Manav Rathi
a60a6c84cf [web] Support Italian 🇮🇹 and Lithuanian 🇱🇹 translations (#3721) 2024-10-16 09:02:16 +05:30
Manav Rathi
12161eec26 Use endonyms consistently 2024-10-16 08:57:50 +05:30
Manav Rathi
73f823b21e [web] Added Italian 🇮🇹 and Lithuanian 🇱🇹 translations 2024-10-16 08:53:16 +05:30
Manav Rathi
eda51ecab5 [web] Suggestions from translators in Crowdin (#3720) 2024-10-16 08:42:35 +05:30
Manav Rathi
97fc3539b6 [web] Suggestions from translators in Crowdin 2024-10-16 08:38:40 +05:30
Manav Rathi
9f2c7811ec [web] New translations (#3719)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-16 08:37:05 +05:30
Crowdin Bot
cb38af127b New Crowdin translations by GitHub Action 2024-10-16 03:05:14 +00:00
Neeraj Gupta
2a3e317725 Merge branch 'main' into f-droid 2024-10-15 21:01:21 +05:30
Neeraj Gupta
33b7cafb9d [mob] Bump version v0.9.48 (#3716)
## Description

## Tests
2024-10-15 20:57:02 +05:30
Neeraj Gupta
e0988596e4 [mob] Bump version v0.9.48 2024-10-15 20:54:52 +05:30
Ashil
745ff262da [mob][photos] fix video editor back button (#3695)
## Description
Back doesn't work when in video editor.
## Tests
2024-10-15 17:55:59 +05:30
Manav Rathi
335e4777a3 [desktop] People suggestions - WIP - Part x/x (#3712) 2024-10-15 17:15:28 +05:30
Manav Rathi
a0b601c847 Enable for internal users 2024-10-15 17:08:20 +05:30
Manav Rathi
9c4d734b26 Fix 2024-10-15 16:57:14 +05:30
Manav Rathi
b2b649d203 Disambiguate implementations 2024-10-15 16:44:51 +05:30
Manav Rathi
358f741d7d Use via worker 2024-10-15 16:41:32 +05:30
Manav Rathi
e0b8999696 Reset scroll pos 2024-10-15 16:38:47 +05:30
Neeraj Gupta
fa8060ee6b [mob] Minor improvements for ml sync (#3711)
## Description

## Tests
2024-10-15 16:35:39 +05:30
Neeraj Gupta
2b147c1a87 [mob] Minor improvements for ml sync 2024-10-15 16:34:38 +05:30
Manav Rathi
2c91eb82bc Use a disambiguating background 2024-10-15 16:25:12 +05:30
Manav Rathi
a745b69ebe State updates 2024-10-15 15:50:52 +05:30
Neeraj Gupta
39f4f55bae [mob] Handle int value for face[blur] json (#3709)
## Description

## Tests
2024-10-15 15:44:54 +05:30
Neeraj Gupta
270aa4301e [mob] Fix query for getPersonToClusterIdToFaceIds 2024-10-15 15:41:24 +05:30
Manav Rathi
6b05782446 Show option only if there is something to revert 2024-10-15 15:37:01 +05:30
Manav Rathi
865b5f3c8f rework fin 2024-10-15 15:34:33 +05:30
Neeraj Gupta
81d9cc6e7f Merge remote-tracking branch 'origin/main' into face_parse 2024-10-15 15:19:03 +05:30
Neeraj Gupta
2e15cb35bc [mob] Handle invalid logger name 2024-10-15 15:18:26 +05:30
Manav Rathi
b21639059e Rework wip 2024-10-15 15:14:56 +05:30
Neeraj Gupta
5a691778f6 [mob] Fix init for discovery section (#3708)
## Description

## Tests
2024-10-15 15:13:51 +05:30
Neeraj Gupta
bee9694f34 [mob] Add mount check 2024-10-15 15:13:14 +05:30
Neeraj Gupta
9f1a3ad7d6 [mob] Handle int value for face[blur] json 2024-10-15 15:06:32 +05:30
Neeraj Gupta
5e401cc9a8 [mob] Add missing await 2024-10-15 14:59:50 +05:30
Neeraj Gupta
2e36ea788c [mob] Fix init for discovery section 2024-10-15 14:52:36 +05:30
Manav Rathi
520777083b Use 2024-10-15 14:48:16 +05:30
Manav Rathi
ebab2e0387 wip checkpoint 2024-10-15 14:12:12 +05:30
Manav Rathi
3298cb6c14 wip checkpoint 2024-10-15 14:01:15 +05:30
Manav Rathi
c629d66d67 List order is not reflective of primary 2024-10-15 13:53:54 +05:30
Manav Rathi
a14db23873 wip fin 2024-10-15 13:36:06 +05:30
Manav Rathi
f89c03318a wip checkpoint 2024-10-15 13:21:32 +05:30
Manav Rathi
3121462829 wip checkpoint 2024-10-15 13:11:25 +05:30
Manav Rathi
050347762a Alt 2024-10-15 12:37:23 +05:30
Manav Rathi
a27310b80c Toggle 2024-10-15 12:09:58 +05:30
Ashil
c3c8d157e3 [mob][photos] Fix build error due to 'other' missing in translation (#3706) 2024-10-15 12:03:36 +05:30
ashilkn
97fad5962e [mob][photos] Fix build error due to 'other' missing in translation 2024-10-15 12:01:44 +05:30
Manav Rathi
f9ad4c36a6 RestoreIcon 2024-10-15 11:51:18 +05:30
mangeshrex
084d70ccaa fix: reorganize the structure of commands 2024-10-15 11:50:31 +05:30
Manav Rathi
78a87ad6d4 Increase preview count 2024-10-15 11:33:14 +05:30
Manav Rathi
d8ed89d5fd Flip 2024-10-15 11:00:49 +05:30
Manav Rathi
8e35068271 Count 2024-10-15 11:00:20 +05:30
Manav Rathi
79740eeee7 Avatar fit 2024-10-15 10:39:45 +05:30
Manav Rathi
a6a647786f Subtitle 2024-10-15 10:32:48 +05:30
Neeraj Gupta
832841e424 [auth] fix: don't use GNOME header bar outside of GNOME (#3688)
Currently, Flutter defaults to always using GTK
window decorations regardless of the window
manager, when running Wayland. This makes the app
look out of place on KDE Plasma and other Qt-based desktop environments.

This change checks the XDG_CURRENT_DESKTOP
environment variable to determine the running
desktop environment, and if it is GNOME continues
to use the GTK header, otherwise it uses the Qt
header.

| Before | After |
|--------|--------|
|
![before](https://github.com/user-attachments/assets/db7161fa-3d87-4c62-bc38-e74763cb2304)
|
![after](https://github.com/user-attachments/assets/f6ece7d6-f2cc-4ee7-b3d2-3eda722aee67)
|
2024-10-15 10:19:43 +05:30
Brian Choromanski
d2110afe68 [auth] Alt names not being formatted when processing (#3516)
## Description

The alt names are not being lowercased or striped of whitespace.
2024-10-15 10:07:28 +05:30
LauShyO
78c51a7042 [auth]Added Logos & Added altName (#3482)
Added logos for:

Band
LINUX DO
Binance
jianguoyun
tianyiyun
aliyun
Lark
tencent cloud
qiniuyun
volcengine
BaiduCloud
NeteaseMail
BBS.NGA

Added altName for:

okx
Nintendo
2024-10-15 10:05:08 +05:30
Neeraj Gupta
6279b280a8 [mobile] New translations (#3690)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-10-15 10:04:26 +05:30
Neeraj Gupta
b56cd4490b [auth] New translations (#3691)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-10-15 10:04:17 +05:30
Manav Rathi
bf5f9b6af5 Avatars 1 2024-10-15 09:51:52 +05:30
Manav Rathi
74bbdd5e72 Random sampling 2024-10-15 09:47:47 +05:30
Manav Rathi
b11e0e42bf Pick until 3 2024-10-15 09:43:40 +05:30
Manav Rathi
192f2062b9 [web] EnteFile related refactoring (#3705)
Non functional changes only.

Also move the RecoveryKey component out of the photos app specific
namespace since it is used also in the account creation flow.
2024-10-15 09:31:24 +05:30
Manav Rathi
ef64bfb249 Fix 2024-10-15 09:19:55 +05:30
Manav Rathi
3935734942 Move 2024-10-15 09:18:09 +05:30
Manav Rathi
785f54e043 Move 2024-10-15 09:13:25 +05:30
Manav Rathi
5d9e37730f Move 2024-10-15 09:06:31 +05:30
Manav Rathi
1df253d41a Move 2024-10-15 09:02:35 +05:30
Manav Rathi
3a4e798e1e Move 2024-10-15 09:00:11 +05:30
Manav Rathi
97eaafc67c Doc 2024-10-15 08:53:07 +05:30
Manav Rathi
80f5cf0f66 Move 2024-10-15 08:40:46 +05:30
Manav Rathi
d2db4c9cfa Merge 2024-10-15 08:35:34 +05:30
Manav Rathi
7a95495390 Scope 2024-10-15 08:31:46 +05:30
Manav Rathi
4fa7a4e794 Move 2024-10-15 08:27:58 +05:30
Manav Rathi
de5772b045 Unused 2024-10-15 08:23:37 +05:30
Manav Rathi
877e36ab96 Unused 2024-10-15 08:22:03 +05:30
Manav Rathi
8c176cce22 Localize 2024-10-15 08:20:01 +05:30
Manav Rathi
be1a79b1a3 [web] Remove prefix where not required for disambiguation 2024-10-15 08:07:13 +05:30
Aman Raj Singh Mourya
73ee5a8131 [mob][photos] fix video editor back button 2024-10-14 19:02:15 +05:30
Manav Rathi
44ba81e781 [desktop] People suggestions - WIP - Part x/x (#3694) 2024-10-14 17:40:17 +05:30
Manav Rathi
bf096572a6 Include preview faces 2024-10-14 17:35:20 +05:30
Manav Rathi
5aeb3fa615 List 2024-10-14 17:05:13 +05:30
Manav Rathi
8c6363efce Toggle fin 2024-10-14 16:51:51 +05:30
mangeshrex
3639a01d2b docs: add steps to install dependencies 2024-10-14 16:40:50 +05:30
Manav Rathi
7701823abb Toggle 2024-10-14 16:01:28 +05:30
Manav Rathi
74d4046671 List 3 2024-10-14 15:47:28 +05:30
Manav Rathi
efb88f1c90 List 2 2024-10-14 15:27:18 +05:30
Manav Rathi
e0519d30e9 List1 2024-10-14 14:55:57 +05:30
Manav Rathi
f5229f1117 Workarounds take 2 2024-10-14 14:37:05 +05:30
Manav Rathi
4173a8a02f Add workarounds for lack of stable person identity 2024-10-14 13:55:39 +05:30
Manav Rathi
616e970dd0 Refactor 2024-10-14 13:29:53 +05:30
Manav Rathi
0053f4fcbd See if a reducer helps 2024-10-14 13:19:16 +05:30
Manav Rathi
8af518a9db Regenerate suggestions on each open even for the same person 2024-10-14 13:09:56 +05:30
Manav Rathi
61e870fe79 [docs] Desktop large uploads - Add a note about the underlying likely cause (#3692) 2024-10-14 12:36:51 +05:30
Manav Rathi
2fc6a24565 [docs] Desktop large uploads - Add a note about the underlying likely cause 2024-10-14 12:36:06 +05:30
Manav Rathi
14f618af71 Improvements to the Auth FAQs (#3682)
## Description

Fixes many inconsistencies and grammatical errors in the Auth FAQs.
2024-10-14 10:41:48 +05:30
Manav Rathi
70d74a47e0 [web] New translations (#3689)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-14 10:40:42 +05:30
Crowdin Bot
704db942da New Crowdin translations by GitHub Action 2024-10-14 01:17:22 +00:00
Crowdin Bot
c89efebf7a New Crowdin translations by GitHub Action 2024-10-14 01:05:03 +00:00
Crowdin Bot
028036128a New Crowdin translations by GitHub Action 2024-10-14 00:35:07 +00:00
Kristen McWilliam
2f9ff47720 fix: don't use GNOME header bar outside of GNOME
Currently, Flutter defaults to always using GTK
window decorations regardless of the window
manager, when running Wayland. This makes the app
look out of place on KDE Plasma and other Qt-based
desktop environments.

This change checks the XDG_CURRENT_DESKTOP
environment variable to determine the running
desktop environment, and if it is GNOME continues
to use the GTK header, otherwise it uses the Qt
header.
2024-10-13 18:19:09 -04:00
Jake Anto
7b1f42714c Format with Prettier 2024-10-12 19:30:04 +00:00
Jake Anto
fe46b68a4e Fix grammar and clarity 2024-10-12 19:23:40 +00:00
Jake Anto
af5afb124d Fix naming inconsistencies 2024-10-12 19:12:27 +00:00
Jake Anto
9dc989a613 Fix grammar and clarity 2024-10-12 19:08:28 +00:00
Jake Anto
e8cf688d95 Fix typo 2024-10-13 00:24:42 +05:30
Manav Rathi
14a350b261 [web] People suggestions - WIP - Part x/x (#3679) 2024-10-12 18:31:11 +05:30
Manav Rathi
15e0c96db5 [web][auth] Fix signups (#3677) 2024-10-12 17:54:14 +05:30
Manav Rathi
2d7fa257cd [web][auth] Fix signups 2024-10-12 17:51:29 +05:30
Manav Rathi
54b6e6636e Error indicator 2024-10-12 17:41:19 +05:30
Manav Rathi
2bec720074 Empty states 2024-10-12 17:16:13 +05:30
Manav Rathi
1e8ae47f2e Add caption 2024-10-12 16:59:18 +05:30
Manav Rathi
c0a1b2daef Center 2024-10-12 16:50:53 +05:30
Manav Rathi
67fda60ba5 Actions 2024-10-12 12:52:57 +05:30
Manav Rathi
51cf2aef4b Action buttons 2024-10-12 12:35:05 +05:30
Manav Rathi
572a36abcc Ignore singletons 2024-10-12 12:15:07 +05:30
Manav Rathi
552116f51c Match material (and macOS) convention whilst retaining document order 2024-10-12 12:11:14 +05:30
Manav Rathi
46ea59ed9e Rename 2024-10-12 12:06:19 +05:30
Manav Rathi
ed7047e440 Scaffold 2024-10-12 11:56:57 +05:30
Manav Rathi
4085742de9 Forward 2024-10-12 11:44:11 +05:30
Manav Rathi
1cb0799bd0 Outline 2024-10-12 11:20:15 +05:30
Manav Rathi
7506a35f1f Add convenience hooks 2024-10-12 10:14:50 +05:30
Manav Rathi
1ac9594fe3 [web] Rename the breakpoint hook (#3670)
Did this while sketching out a people suggestion approach, though it is
conceptually unrelated.
2024-10-12 08:48:47 +05:30
Manav Rathi
ab75a9e55f Fix typo 2024-10-12 08:45:08 +05:30
Manav Rathi
85cb80597f Sketch 2024-10-12 08:40:01 +05:30
Manav Rathi
dfa782068f Occam 2024-10-12 08:31:42 +05:30
Manav Rathi
605e9ae533 Scaffold 2024-10-12 08:16:28 +05:30
Manav Rathi
9cc3ade58e [desktop] People - WIP - Part x/x (#3667)
- Move cluster merging from behind ff
- Other minor people related features
2024-10-11 19:56:37 +05:30
Manav Rathi
26e4b6a724 Lint fix 2024-10-11 19:52:41 +05:30
Manav Rathi
b2100c1e1f Show the error inline 2024-10-11 19:29:52 +05:30
Manav Rathi
71982d5557 Show the error inline 2024-10-11 19:27:49 +05:30
Manav Rathi
4bf2780807 Fix loading indicator 2024-10-11 19:19:20 +05:30
Manav Rathi
d1a202fd8b Prevent layout shift on mobile 2024-10-11 19:14:20 +05:30
Manav Rathi
04b61ddb21 Reintroduce row, but deviate from material to retain accessibility
row-reverse causes the tab order to deviate from the reading order
2024-10-11 18:54:14 +05:30
Manav Rathi
70cd901571 Visual 2024-10-11 18:51:32 +05:30
Manav Rathi
413d85bbf9 Differentiate 2024-10-11 18:43:56 +05:30
Manav Rathi
1332dffad3 Tweak 2024-10-11 18:32:39 +05:30
Manav Rathi
d3b45cab6d Dedup 2024-10-11 18:27:39 +05:30
Manav Rathi
6515e13a9a Alt 2024-10-11 18:24:41 +05:30
Manav Rathi
e9ed2fd332 Split 2024-10-11 18:21:28 +05:30
Manav Rathi
b5d2fbbd69 Unused 2024-10-11 18:02:52 +05:30
Manav Rathi
58ff5a6ede Switch to new code path 2024-10-11 18:00:49 +05:30
Manav Rathi
f69ada05de [web] Translations cleanup (#3666) 2024-10-11 16:42:40 +05:30
Manav Rathi
75b127f8c8 Rename 2024-10-11 16:39:31 +05:30
Manav Rathi
38a0d73926 Rename 2024-10-11 16:34:54 +05:30
Manav Rathi
a32ceed72a Rename and move 2024-10-11 16:34:10 +05:30
Manav Rathi
547d64f3b2 Rename 2024-10-11 16:31:25 +05:30
Manav Rathi
d2c8f0bff4 [web] New translations (#3665)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-11 16:29:34 +05:30
Crowdin Bot
f1e148e316 New Crowdin translations by GitHub Action 2024-10-11 10:57:28 +00:00
Manav Rathi
5cd8ae0677 [web] Misc code touchups (#3664) 2024-10-11 16:11:59 +05:30
Manav Rathi
2f1ecbc79d Lint 2024-10-11 16:07:59 +05:30
Manav Rathi
893b504e94 The error is now handled inline 2024-10-11 15:59:38 +05:30
Manav Rathi
bd97a49640 Use 2024-10-11 15:46:56 +05:30
Manav Rathi
4ecd89f326 Use 2024-10-11 15:41:08 +05:30
Manav Rathi
897c584438 Sort and use 2024-10-11 15:38:01 +05:30
Manav Rathi
293d0a642f Use 2024-10-11 15:32:42 +05:30
Manav Rathi
9d9baa5bc5 Use 2024-10-11 15:29:31 +05:30
Manav Rathi
4384a72f3a Use 2024-10-11 15:25:33 +05:30
Manav Rathi
d527a97cd5 Download 2024-10-11 15:10:31 +05:30
Manav Rathi
d665a6a23a Switch 2024-10-11 14:47:27 +05:30
Manav Rathi
c92bfc1f1c Use 2024-10-11 14:42:14 +05:30
Manav Rathi
4bef94aac0 Inline 2024-10-11 14:30:39 +05:30
Manav Rathi
add1c7a089 Same as the other TitledMiniDialogs 2024-10-11 14:11:00 +05:30
Manav Rathi
0466d7024a Fix same issue elsewhere 2024-10-11 14:06:27 +05:30
Manav Rathi
c7191ae7f0 row-reverse is (a) infrequently needed, and (b) causes a accessibility disconnect 2024-10-11 14:01:05 +05:30
Manav Rathi
e5c6999b94 Exit section 2024-10-11 13:54:42 +05:30
Manav Rathi
5442742cf3 Fix lints 2024-10-11 13:41:35 +05:30
Manav Rathi
4bfcd9d374 Trim 2024-10-11 13:31:56 +05:30
Manav Rathi
651575ec6e Update 2024-10-11 13:28:46 +05:30
Manav Rathi
06f19b26d2 Update 2024-10-11 12:32:46 +05:30
Manav Rathi
b92e9e366b Remove spurious warning 2024-10-11 12:01:51 +05:30
Manav Rathi
e1199222e1 Abstract 2024-10-11 11:58:21 +05:30
Manav Rathi
2465871c7c Extract 2024-10-11 11:41:43 +05:30
Manav Rathi
7788ba1fa4 Move 2024-10-11 11:36:16 +05:30
Manav Rathi
88801beaf1 Use 2024-10-11 11:31:58 +05:30
Manav Rathi
be60bec4ae Switch 2024-10-11 11:24:07 +05:30
Manav Rathi
6c8bec0bad prettier 2024-10-11 11:14:04 +05:30
Manav Rathi
f3eb0fc181 [desktop] Remove old ML models when downloading new ones (#3661) 2024-10-11 10:31:50 +05:30
Manav Rathi
3512615780 [desktop] Remove old ML models when downloading new ones 2024-10-11 10:25:52 +05:30
Laurens Priem
b9dd0bc3b7 ONNX changes (#3654)
## Description

- Quantized the CLIP text encoder
- Moved preprocessing and postprocessing of face detection inside the
model
- Optimised the ONNX models more wherever possible
- Created a place in infra for ML version control of sorts

## Tests

Have tested the changes on mobile, but not on desktop. Please carefully
review the changes on desktop, especially regarding the face detection
post-processing, more specifically the image (re-)size correction.
2024-10-11 10:02:11 +05:30
Neeraj Gupta
61236650dc [auth] Add custom icons for Simplicity, RealMe, and PBTech (#3549)
Added custom icons for:
- [Simplicity](https://simplicity.kiwi/), an investment/superannuation
provider
- [RealMe](https://www.realme.govt.nz/), a government authentication
service
- [PBTech](https://www.pbtech.co.nz/), a tech retailer

None of which currently have icons in the authenticator.
2024-10-11 02:26:41 +05:30
Neeraj Gupta
cbbaecb2a2 [mobile] New translations (#3598)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-10-11 02:21:59 +05:30
Neeraj Gupta
1400604687 [auth] New translations (#3599)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-10-11 02:21:26 +05:30
Neeraj Gupta
aed85f2327 [auth][win] remove win_http_client.dart (#3578)
## Description

This wasn't really fixing the SSL Certificate issue faced by multiple
Windows 10 & 11 user.

The new guide should be followed instead:
https://help.ente.io/auth/troubleshooting/windows-login

## Tests
2024-10-11 02:20:51 +05:30
Manav Rathi
41c8f9578f [web] Translation cleanup (#3660) 2024-10-10 21:02:58 +05:30
Manav Rathi
62ecfc34c2 Rename and move 2024-10-10 20:56:35 +05:30
Manav Rathi
1c1ad93875 Rename 2024-10-10 20:54:41 +05:30
Manav Rathi
c23fc79134 Trim 2024-10-10 20:53:03 +05:30
Manav Rathi
16f54342ae Rename 2024-10-10 20:49:38 +05:30
Manav Rathi
96e541acb4 Fix 2024-10-10 20:48:32 +05:30
Manav Rathi
fa75392a37 Rename 2024-10-10 20:43:45 +05:30
Manav Rathi
c48fbb328b Rename 2024-10-10 20:41:29 +05:30
Manav Rathi
29477ab4a0 Move 2024-10-10 20:40:27 +05:30
Manav Rathi
d1bcd12599 Rename 2024-10-10 20:38:21 +05:30
Manav Rathi
86add71393 Rename 2024-10-10 20:31:17 +05:30
Manav Rathi
a7c31b65a2 Rename 2024-10-10 20:26:03 +05:30
Laurens Priem
8dfd7b5921 [mob][photos] Decode heic using flutter compress (#3658)
## Description

Change decode method for heic for ML to using flutter_image_compress.

## Tests

Tested in debug mode on my pixel 8.
2024-10-10 19:08:39 +05:30
laurenspriem
1cdc7aa594 [mob][photos] Decode heic using flutter compress 2024-10-10 18:45:05 +05:30
Manav Rathi
54662a34ea [web] Dialog enhancements - Part x/x (#3657) 2024-10-10 17:36:28 +05:30
Manav Rathi
710b7e93dc Ok is a better title, the go back is a bit confusing 2024-10-10 17:25:58 +05:30
Manav Rathi
78962b2611 Touchups 2024-10-10 17:21:51 +05:30
Manav Rathi
de74acedab Use inbuilt error handler 2024-10-10 17:11:25 +05:30
Manav Rathi
4d3b89048c Fix error about nesting p in div 2024-10-10 17:06:22 +05:30
Manav Rathi
5e639e9729 Provision an error handler 2024-10-10 17:03:29 +05:30
Manav Rathi
24dc72eee3 Loose ends 2024-10-10 16:48:10 +05:30
Manav Rathi
e822d327e4 All cases 2024-10-10 16:46:30 +05:30
Manav Rathi
ed17206f51 Fix warnings 2024-10-10 16:46:30 +05:30
Manav Rathi
151c50f7af Tune semantics 2024-10-10 16:46:30 +05:30
Manav Rathi
dde2b8894a Test 1 2024-10-10 16:04:59 +05:30
Manav Rathi
288d66dfa7 Finish re 2024-10-10 16:02:07 +05:30
Manav Rathi
f9209e212d wip checkpoint 2024-10-10 15:57:04 +05:30
Manav Rathi
d6a39ae452 wip checkpoint 2024-10-10 15:41:32 +05:30
Manav Rathi
6b64e20a7e Move 2024-10-10 15:22:21 +05:30
Manav Rathi
03e5e16bc3 Move 2024-10-10 15:00:28 +05:30
Manav Rathi
79eb912a42 Fin apps/accounts 2024-10-10 14:55:45 +05:30
Manav Rathi
68e7a38463 Another helper 2024-10-10 14:37:06 +05:30
Manav Rathi
88c10db52d Create helper hook 2024-10-10 14:18:34 +05:30
Manav Rathi
8b24225fbb wip checkpoint 2024-10-10 13:49:28 +05:30
Manav Rathi
473e22c0c1 wip checkpoint 2024-10-10 13:49:28 +05:30
Manav Rathi
0a6ffb226f wip: checkpoint 2024-10-10 13:49:28 +05:30
Manav Rathi
a0ecc943d4 Fix 2024-10-10 13:49:28 +05:30
Manav Rathi
86f0dbb620 Rename 2024-10-10 13:49:28 +05:30
Manav Rathi
d904b9318a Remove unnecessary setter deps
> React guarantees that setState function identity is stable and won't change on
> re-renders. Thus it is safe to omit it from the useEffect or useCallback
> dependency list.
>
> https://legacy.reactjs.org/docs/hooks-reference.html#usestate
2024-10-10 13:49:28 +05:30
Manav Rathi
0e46287eee Add icon to error 2024-10-10 13:49:28 +05:30
Manav Rathi
f5ebecfa69 Move icon to the right 2024-10-10 13:49:28 +05:30
Manav Rathi
4908648137 Similar to TitledMiniDialog 2024-10-10 13:49:28 +05:30
Manav Rathi
d2d5f630aa Use 2024-10-10 13:49:28 +05:30
Manav Rathi
8999c7045a Avoid a useEffect (eventually) 2024-10-10 13:49:28 +05:30
Manav Rathi
d5d015c13c Tweak 2024-10-10 13:49:28 +05:30
Manav Rathi
8479809109 Rename 2024-10-10 13:49:28 +05:30
Manav Rathi
c7dd5dcbca zi 2024-10-10 13:49:28 +05:30
Manav Rathi
126904c68f Move 2024-10-10 13:49:28 +05:30
Manav Rathi
145c7356a8 Rename 1 2024-10-10 13:49:28 +05:30
Manav Rathi
0dd5fd6d23 Use standard components 2024-10-10 13:49:28 +05:30
Manav Rathi
bc3488cb9c Dedup 2024-10-10 13:49:28 +05:30
Manav Rathi
2cede3a46f Reify 2024-10-10 13:49:28 +05:30
Manav Rathi
ceed538181 Inline 2024-10-10 13:49:28 +05:30
Manav Rathi
ec37cb3eff Prune 2024-10-10 13:49:28 +05:30
Manav Rathi
4b38164c58 Prune (secondary prop was set but was not being used) 2024-10-10 13:49:28 +05:30
Manav Rathi
66ac35cbcc Prune 2024-10-10 13:49:28 +05:30
Manav Rathi
9e10ec7ff6 Dup 2024-10-10 13:49:28 +05:30
Manav Rathi
2f4c4e0948 Remove unused 2024-10-10 13:49:28 +05:30
Manav Rathi
cc0902f021 [web] [auth] Fix crash due to incorrect context (#3653)
Introduced since the deployment this morning.
2024-10-10 13:22:09 +05:30
Manav Rathi
dd2bc6df9a Fix lints 2024-10-10 13:19:26 +05:30
Manav Rathi
edd3aa4ea0 [web] [auth] Fix crash due to incorrect context
Introduced since the deployment this morning.
2024-10-10 13:15:03 +05:30
Manav Rathi
aed143919e [web] New translations (#3650)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-10 07:53:42 +05:30
Crowdin Bot
3607bb95a4 New Crowdin translations by GitHub Action 2024-10-10 02:21:28 +00:00
Vishnu Mohandas
11edb980e8 [docs] Update FAQ about key rederivation 2024-10-09 21:14:52 +05:30
Manav Rathi
d53b0b62c4 [desktop] People - WIP - Part x/x (#3645)
Associating an cluster with an existing cgroup now works (behind a ff).
2024-10-09 17:55:16 +05:30
Manav Rathi
9411f28194 Tweak 2024-10-09 17:45:01 +05:30
Manav Rathi
c27393c97e Remove test code 2024-10-09 17:38:11 +05:30
Manav Rathi
de5e811f12 API 2024-10-09 17:15:34 +05:30
Manav Rathi
66123e2876 Allow passing args 2024-10-09 17:09:45 +05:30
Manav Rathi
17f02cd749 Outline, inspired by https://github.com/jonatanklosko/material-ui-confirm 2024-10-09 16:50:05 +05:30
Manav Rathi
9c35c28e90 Set fullWidth on the alert dialog scenario 2024-10-09 16:50:05 +05:30
Manav Rathi
2540a8bcfe Fix 2024-10-09 16:29:28 +05:30
Manav Rathi
832a8c77c9 Move 2024-10-09 16:29:28 +05:30
Manav Rathi
6e08ca8f14 Inline 2024-10-09 15:26:06 +05:30
Manav Rathi
ea0532d76a Move to the same file 2024-10-09 15:25:00 +05:30
Manav Rathi
0a424deceb Remove intermediary 2024-10-09 15:11:35 +05:30
Manav Rathi
08623b50db Use 2024-10-09 15:07:45 +05:30
Manav Rathi
fb4c15bf52 Cleanup 2024-10-09 15:05:08 +05:30
Vishnu Mohandas
bdb30f15fa Smaller logos 2024-10-09 15:00:30 +05:30
Manav Rathi
4cd3590a07 Use 2024-10-09 14:46:34 +05:30
Manav Rathi
8717ca1b28 Rename and move 2024-10-09 14:39:36 +05:30
Manav Rathi
1de0fe9ab2 Mark the problematic ones 2024-10-09 14:19:05 +05:30
Manav Rathi
c3389a6cf8 Don't use the retry variant by default
The op might not be retriable
2024-10-09 14:13:52 +05:30
Manav Rathi
ef75956a24 Fix typo
b03907deca
2024-10-09 14:10:42 +05:30
Manav Rathi
f2dc01c579 Move app context to new 2024-10-09 14:10:36 +05:30
ashilkn
1a1b3ebf12 [mob][photos] Resolve merge conflicts and merge main 2024-10-09 13:52:19 +05:30
Manav Rathi
c297a60c85 Impl 2024-10-09 13:11:17 +05:30
Manav Rathi
744707ca5c Use actual API 2024-10-09 13:07:04 +05:30
Manav Rathi
4e5747b19b Inline 2024-10-09 13:00:34 +05:30
Manav Rathi
51be3fb130 Remove hover tooltip so that people behave same as collections 2024-10-09 12:55:55 +05:30
Vishnu Mohandas
c556c1e882 Add Obtainium links to docs (#3642)
This PR includes updates to the documentation to make it easier for
people to add both Auth and Photos to Obtainium. I also fixed the
incorrect spelling of "Obtainium".
2024-10-09 12:39:14 +05:30
Manav Rathi
810729add9 [web] Add People WIP - Part x/x (#3641) 2024-10-09 12:22:29 +05:30
Manav Rathi
0934aa9c6d Name by page 2024-10-09 12:15:34 +05:30
Hamish
85a5c99d46 Merge branch 'obtainium' of git@github.com:Hamster45105/ente.git 2024-10-09 17:39:22 +11:00
Hamish
8a256da26a Update information in Obtainium help sections
- Fix spelling
- Add link to instantly add
2024-10-09 17:38:34 +11:00
Hamish
d20717df00 Add Obtainium badges to README 2024-10-09 17:34:08 +11:00
Hamish
490c05ed98 Upload Obtainium badge 2024-10-09 17:31:29 +11:00
Manav Rathi
c29d9fcc45 Some components will need to be split 2024-10-09 11:52:40 +05:30
Manav Rathi
9f97814027 Promote 2024-10-09 11:47:45 +05:30
Manav Rathi
f41bd698f7 Promote 2024-10-09 11:41:09 +05:30
Manav Rathi
05d9b18e9e Breathing space at the top 2024-10-09 11:10:06 +05:30
Manav Rathi
fcc4122bcb [web] Bulk fav: Tweaks (#3640) 2024-10-09 10:23:52 +05:30
Manav Rathi
77c1642b38 Don't show in archive 2024-10-09 10:22:34 +05:30
Manav Rathi
9b4658dc14 Update tooltip in the selection bar 2024-10-09 10:17:25 +05:30
Manav Rathi
aac7544818 Dup, keeping existing translations where possible 2024-10-09 10:16:52 +05:30
Manav Rathi
5e810e65a8 Rename 2024-10-09 10:08:15 +05:30
Manav Rathi
9637816262 [web] Bulk fav: Refresh on success 2024-10-09 10:02:00 +05:30
Manav Rathi
6183263e60 [web] New translations (#3639)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-09 09:59:07 +05:30
Crowdin Bot
336bf4e383 New Crowdin translations by GitHub Action 2024-10-09 04:27:02 +00:00
Manav Rathi
2a19e6ecf7 [web] Misc translation cleanup (#3638) 2024-10-09 09:56:21 +05:30
Manav Rathi
e035bf48e1 Unused 2024-10-09 09:52:59 +05:30
Manav Rathi
c1309cd97c Rename 2024-10-09 09:50:37 +05:30
Manav Rathi
062ef579c1 Move 2024-10-09 09:47:44 +05:30
Manav Rathi
efa5e6a448 Rename 2024-10-09 09:46:15 +05:30
Manav Rathi
97c28b4fb7 Rename 2024-10-09 09:40:40 +05:30
Manav Rathi
b00bc79c38 Remove accidentally commited overwrite 2024-10-09 09:37:44 +05:30
Manav Rathi
ef9d7f4214 [web] add favorite button to SelectedFileBar to bulk favorite selection (#3631)
## Description
This allows on the web app to bulk favorite multiple photos in one go,
by adding a favorite button to the SelectedFileOptions.tsx component.
Just like for the Android App.
This could be enhanced by having the button plain or empty depending the
selection and by setting/unsetting favarite depending previous status.
For now it just set as favorite whatever the status (like the Android
app).

## Tests
- Select at least 2 pictures in another album than hidden, favorited,
trash, ...
- Click at top right of the screen the favorite icon
- the favorite icon on the previously selected thumbnails should appear
2024-10-09 09:36:45 +05:30
Manav Rathi
c99a616978 [web] New translations (#3636)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-09 09:24:16 +05:30
Crowdin Bot
273947df19 New Crowdin translations by GitHub Action 2024-10-09 03:50:18 +00:00
Manav Rathi
0f68d02f83 [web] Tweaks to the gallery empty state (#3635) 2024-10-09 09:17:43 +05:30
Manav Rathi
7c21ed8869 Disable user select on the welcome text too since ente cannot be selected 2024-10-09 09:01:07 +05:30
Manav Rathi
3068b369e4 Declutter 2024-10-09 08:57:54 +05:30
Manav Rathi
d43d82c9c1 Tweak 2024-10-09 08:56:23 +05:30
Manav Rathi
a6cff1ffeb Align 2024-10-09 08:54:59 +05:30
Manav Rathi
55fde1d87c Same default height as img 2024-10-09 08:22:39 +05:30
Manav Rathi
09c92827bb Fix vertical align 2024-10-09 08:03:18 +05:30
Manav Rathi
2283d19d57 Allow specifying width and height 2024-10-09 07:54:26 +05:30
Apalepex
d976c066e1 lint fix 2024-10-08 18:22:21 +02:00
Apalepex
fa88313ddc remove unused 2024-10-08 18:11:42 +02:00
Apalepex
00346534b4 remove unused 2024-10-08 17:52:08 +02:00
Manav Rathi
ad4f4e293c [web] Various UI tweaks (#3630) 2024-10-08 21:16:11 +05:30
Apalepex
e0de52b915 add fav button 2024-10-08 17:38:39 +02:00
Manav Rathi
692bb0221c Remove unnecessary customization 2024-10-08 20:42:17 +05:30
Manav Rathi
823347fdd2 Doc 2024-10-08 20:35:24 +05:30
Manav Rathi
1caff81a88 Remove unused 2024-10-08 20:34:09 +05:30
Manav Rathi
1a6cfe2264 Remove unused 2024-10-08 20:27:46 +05:30
Manav Rathi
c122bbcde9 Rearrange 2024-10-08 20:22:13 +05:30
Manav Rathi
3e3effe8a0 Remove unnecessary Box, use brand green 2024-10-08 20:20:10 +05:30
Manav Rathi
10e5018f94 Colocate 2024-10-08 20:13:29 +05:30
Manav Rathi
1c535cd9f0 Move 2024-10-08 20:08:55 +05:30
Manav Rathi
3d863d49e1 Tweak 2024-10-08 20:06:50 +05:30
Manav Rathi
ca89e31602 Doc 2024-10-08 20:06:05 +05:30
Manav Rathi
982e5876d9 Inline 2024-10-08 19:19:17 +05:30
Manav Rathi
8bc8ed95a9 [web] Update doc to remove confusing pk annotation (#3629) 2024-10-08 18:12:12 +05:30
Manav Rathi
c4d89f07af [web] Update doc to remove confusing pk annotation 2024-10-08 18:09:45 +05:30
Manav Rathi
f4c7cff9e2 [infra] Document Sentry backup/restore (#3626) 2024-10-08 18:04:58 +05:30
Manav Rathi
89f1f001ad [infra] Document Sentry backup/restore 2024-10-08 18:04:14 +05:30
Manav Rathi
f3f69ade45 Inline 2024-10-08 15:58:14 +05:30
Manav Rathi
fe8884c37f Remove unnecessary button 2024-10-08 15:26:37 +05:30
Manav Rathi
c90c740d83 Inline 2024-10-08 14:57:57 +05:30
Ashil
bb0f7915f0 [mob][photos] Prep for new release (#3624) 2024-10-08 14:43:50 +05:30
Manav Rathi
8606f43173 Move to base 2024-10-08 14:41:02 +05:30
ashilkn
ca5ac8da6b [mob][photos] Run flutter pub upgrade 2024-10-08 14:12:54 +05:30
ashilkn
978f82c809 [mob][photos] Bump up version to v0.9.47 2024-10-08 14:12:34 +05:30
ashilkn
bc84ea7529 [mob][photos] bump up photo_manager version in pubspec.yaml. Note: the version is already 3.5.0 in pubspec.lock, just updating it in pubspec.yaml 2024-10-08 14:12:02 +05:30
Manav Rathi
019b9c3ebd [web] Deduplicate buttons (#3622)
And some fixes / tweaks to the recently added fav overlay.
2024-10-08 13:21:38 +05:30
Manav Rathi
f1d1bf9e02 Fin 2024-10-08 13:15:27 +05:30
Manav Rathi
8b64c6d2bc Switch 2024-10-08 13:14:41 +05:30
Manav Rathi
8ece709661 Up 2024-10-08 13:10:52 +05:30
Manav Rathi
ac9648e885 Conv 2024-10-08 13:07:03 +05:30
Manav Rathi
ac9e907961 Fix crash 2024-10-08 11:37:27 +05:30
Manav Rathi
3bfe471110 Use 2024-10-08 11:35:14 +05:30
Manav Rathi
bd9cb1ac86 Use 2024-10-08 11:28:00 +05:30
Manav Rathi
5746ad1942 Switch 2024-10-08 11:13:37 +05:30
Manav Rathi
50f924e3c5 Switch 2024-10-08 11:00:24 +05:30
Manav Rathi
851ca1afe2 Fin 2024-10-08 10:45:24 +05:30
Manav Rathi
d7fd432f6e Move to base (since it in used in accounts) 2024-10-08 10:38:08 +05:30
Manav Rathi
3be7abf381 Use new one 2024-10-08 10:25:45 +05:30
Manav Rathi
41fce9b57c Slightly less obtrusive
Need proper designs
2024-10-08 09:20:30 +05:30
Manav Rathi
d8f98b4daa Give more space for the crop button 2024-10-08 09:10:31 +05:30
Manav Rathi
51be8e0622 It is not using the loader 2024-10-08 09:02:51 +05:30
Manav Rathi
f0ea95e141 Extract 2024-10-08 09:01:55 +05:30
Manav Rathi
a0f0333f5f Switch 2024-10-08 08:59:31 +05:30
Manav Rathi
fb2fd7d986 Switch 2024-10-08 08:52:25 +05:30
Manav Rathi
d9dddec33c Fix lints 2024-10-08 08:42:30 +05:30
Manav Rathi
fe79e4a5eb [web] add fav icon to picture thumbnails (#3620)
## Description
web client : Add the favorite icon to a memory thumbnail in the gallery,
looking just like in the Android app
## Tests
- favorite a picture
- in the gallery, check that the favorite icon is showed n the picture
thumbnail, as an overlay
2024-10-08 08:38:34 +05:30
Apalepex
d781d2c2fc web client : add fav icon to picture thumbnails 2024-10-07 22:51:18 +02:00
Manav Rathi
9be5d1461d [web] Loading button component (#3612) 2024-10-07 21:16:34 +05:30
Manav Rathi
28529560f0 Move 2024-10-07 21:12:09 +05:30
Manav Rathi
ca08b3eb5f Move 2024-10-07 21:11:17 +05:30
Manav Rathi
dfab58ce33 Loading button 2024-10-07 21:05:28 +05:30
Manav Rathi
d69d223bce [web] Reset scroll state on mode/person change (#3611)
Fixes https://github.com/ente-io/ente/issues/3603
2024-10-07 20:49:02 +05:30
Manav Rathi
02f42a0bb7 [web] Reset scroll state on mode/person change
Fixes https://github.com/ente-io/ente/issues/3603
2024-10-07 20:43:20 +05:30
Manav Rathi
d502a10103 [web] New translations (#3610)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-07 20:00:10 +05:30
Crowdin Bot
127172938b New Crowdin translations by GitHub Action 2024-10-07 14:29:04 +00:00
Manav Rathi
dae65736a8 [web] People picker - WIP - Part x/x (#3608) 2024-10-07 19:58:19 +05:30
Manav Rathi
c0e9642d97 lf 2024-10-07 19:49:44 +05:30
Manav Rathi
aedbbeb321 Rename 2024-10-07 19:42:01 +05:30
Manav Rathi
c88fb258be Add variant 2024-10-07 19:41:17 +05:30
Manav Rathi
17948e8364 Rename 2024-10-07 19:39:12 +05:30
Manav Rathi
1c3f560cb0 Prep for main merge 2024-10-07 19:29:23 +05:30
Manav Rathi
3a95823256 Adding an artificial delay is perhaps not the best?
Need to think more
2024-10-07 19:18:58 +05:30
Manav Rathi
2e5c678690 Success 2024-10-07 18:56:05 +05:30
Vishnu Mohandas
1a3ca7c0fe Add installation instructions for Auth (#3605) 2024-10-07 18:49:32 +05:30
vishnukvmd
cb404637cf Add installation instructions for Auth 2024-10-07 18:48:57 +05:30
Vishnu Mohandas
617090a8c5 Add doc for installation (#3604) 2024-10-07 18:42:56 +05:30
vishnukvmd
bfdda59b39 Add doc for installation 2024-10-07 18:42:33 +05:30
Manav Rathi
c37e5afed1 Up 2024-10-07 18:26:03 +05:30
Manav Rathi
373d25e2d6 More 2024-10-07 17:58:03 +05:30
Vishnu Mohandas
157cefd657 Update intl_en.arb 2024-10-07 17:15:20 +05:30
Manav Rathi
63b3732f82 Fill in 2024-10-07 17:09:36 +05:30
Manav Rathi
1c306bf7b5 Scaffold 2024-10-07 16:22:30 +05:30
Manav Rathi
a13f3020ca Tie into the flow 2024-10-07 16:12:12 +05:30
Manav Rathi
3eb9b6bd77 [doc] Mention the location of the exported JSON (#3601) 2024-10-07 15:16:22 +05:30
Manav Rathi
3d994a5f07 yarn pretty 2024-10-07 15:14:42 +05:30
Manav Rathi
fbc68f1143 [doc] Mention the location of the exported JSON 2024-10-07 15:13:18 +05:30
Manav Rathi
7227a4b084 Remove workaround 2024-10-07 14:22:12 +05:30
Manav Rathi
62f1713a1a People 2024-10-07 14:02:43 +05:30
Ashil
c56a96454a [auth] Auth lockscreen fixes (#3545)
## Description

1. Removed the logout button from the lockscreen if app in without
backup state
2. Show a warning dialog when user try to set the app lock for the 1st
time

## Tests
<img
src="https://github.com/user-attachments/assets/1f12d651-12ee-4ad5-9a17-cc0c0b3c4d61"
width=200>
2024-10-07 14:02:00 +05:30
Manav Rathi
72842e8c36 Shortcircuit 2024-10-07 13:51:34 +05:30
Manav Rathi
bb13d1d98f Segue 2024-10-07 12:18:08 +05:30
Manav Rathi
ec115b3f8b Dup 2024-10-07 11:36:08 +05:30
Manav Rathi
8e79884e31 Better match the design 2024-10-07 11:15:48 +05:30
Manav Rathi
70051b66b7 Scaffold 2024-10-07 10:18:17 +05:30
Manav Rathi
46134b3b9a related 2024-10-07 10:01:11 +05:30
Manav Rathi
b1c30417ba [web] New translations (#3597)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-07 09:18:17 +05:30
Crowdin Bot
90b994c752 New Crowdin translations by GitHub Action 2024-10-07 01:17:23 +00:00
Crowdin Bot
0d4d39a959 New Crowdin translations by GitHub Action 2024-10-07 01:05:09 +00:00
Crowdin Bot
344c3d72ec New Crowdin translations by GitHub Action 2024-10-07 00:35:12 +00:00
Manav Rathi
b26e3b31d8 [web] New translations (#3586)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-05 18:33:53 +05:30
Crowdin Bot
2cc9801fbc New Crowdin translations by GitHub Action 2024-10-05 13:02:05 +00:00
Manav Rathi
2ee2377490 [web] Collection selector related cleanup - Part 2/2 (#3585)
Completes https://github.com/ente-io/ente/pull/3581
2024-10-05 18:31:21 +05:30
Manav Rathi
dd65f4f156 Remove unused translation 2024-10-05 18:17:26 +05:30
Manav Rathi
d5216886d8 Rename 2024-10-05 18:16:30 +05:30
Manav Rathi
02e059989e Improve accessibility by using a button 2024-10-05 18:14:13 +05:30
Manav Rathi
61763ed16f Rename 2024-10-05 18:00:03 +05:30
Manav Rathi
51e8c2797d Remove unnecessary wrapper 2024-10-05 17:55:01 +05:30
Manav Rathi
4a1db1edcc Use same as choice modal 2024-10-05 17:48:23 +05:30
Manav Rathi
9a7a338339 Don't nest div in h2 2024-10-05 17:36:02 +05:30
Manav Rathi
4fd3fb09c9 Fix 2024-10-05 17:08:20 +05:30
Vishnu Mohandas
11bbb70c3f [auth][mac] bump versions in Podfile.lock (#3583)
## Description

- Bump versions in Podfile

## Tests
2024-10-05 17:06:36 +05:30
Manav Rathi
5605c5b794 Remove override chains that nop each other 2024-10-05 17:01:27 +05:30
Manav Rathi
14c5ea5b86 Remove theme dep 2024-10-05 16:58:32 +05:30
Manav Rathi
6fc1f8c2d0 Tweaks 2024-10-05 16:52:22 +05:30
Prateek Sunal
0dfa8ceee1 chore(macos): bump version locks 2024-10-05 16:50:59 +05:30
Manav Rathi
29ae5bfb09 Lints + usecb to prevent unnecessary rerenders after adding onClose as dep 2024-10-05 16:30:38 +05:30
Prateek Sunal
b970f047e4 [auth][macos] show hidden window when user clicks on the dock (#3582)
## Description

In the current version of Ente Auth, nothing happens when the user
closes the Ente Auth window on macOS and then clicks on the Ente Auth
icon in the dock.

This PR changes this behaviour and brings it in-line with other macOS
applications by showing the main application window when the user clicks
on the dock icon.

## Tests
2024-10-05 16:23:03 +05:30
Vishnu Mohandas
752f50efd2 [auth] update dependencies for ios (#3577)
## Description

## Tests
2024-10-05 16:19:23 +05:30
Manav Rathi
7737d162ce Fin 2024-10-05 16:15:32 +05:30
Manav Rathi
c10317ae2a wip checkpoint 2024-10-05 16:06:20 +05:30
Manav Rathi
b3f210702d wip: checkpoint 2024-10-05 15:45:10 +05:30
Manav Rathi
8b6ae56202 Rename 2024-10-05 15:32:39 +05:30
Manav Rathi
b51bacb3f8 Early exit 2024-10-05 15:28:39 +05:30
Manav Rathi
5c6b0b8679 Fix some 2024-10-05 15:16:45 +05:30
Tomasz Mikus
2c417cd711 Autofocus the search box when the "Search" button is clicked.
This commit adds the much-needed ability to autofocus the search box on macOS.
2024-10-05 10:44:44 +01:00
Manav Rathi
64065b9a2f Cleanup 2024-10-05 15:03:59 +05:30
Manav Rathi
211d2ac4a9 Move 2024-10-05 15:00:58 +05:30
Tomasz Mikus
fca8e13c03 Add the ability to show the Ente Auth window on macOS after it was closed.
Currently, nothing happens when the user closes the Ente Auth window on macOS and then clicks on the Ente Auth icon in the dock. This commit changes this behaviour and brings it in-line with other macOS applications by showing the main application window when the user clicks on the dock icon.
2024-10-05 10:29:55 +01:00
Manav Rathi
535963b229 Remove double negation 2024-10-05 14:52:35 +05:30
Manav Rathi
b4470e1e62 [web] Collection selector related cleanup - Part x/x (#3581)
No functional changes. Intend to use this as a base for people selector,
so this is prep work.
2024-10-05 12:20:38 +05:30
Manav Rathi
b00009aaab Cleanup 2024-10-05 12:12:39 +05:30
Manav Rathi
b1f603d463 Move 2024-10-05 12:06:47 +05:30
Manav Rathi
79b311af8d Rename 2024-10-05 12:03:09 +05:30
Manav Rathi
68c28df945 Move up 2024-10-05 11:35:27 +05:30
Manav Rathi
924707fa56 Move out 2024-10-05 11:28:30 +05:30
Manav Rathi
a218d09960 Tweak 2024-10-05 10:49:28 +05:30
Manav Rathi
c012055835 Move 2024-10-05 10:27:49 +05:30
Manav Rathi
5e5d362341 Doc 2024-10-05 10:24:02 +05:30
Manav Rathi
fe473bcd0a Move 2024-10-05 10:13:25 +05:30
Manav Rathi
855d0d43b6 Doc 2024-10-05 10:06:33 +05:30
Manav Rathi
fdc641be88 Move 2024-10-05 10:02:59 +05:30
Manav Rathi
fb4712dced Leftover 2024-10-05 10:00:21 +05:30
Prateek Sunal
2dbbff0185 fix(auth): remove win http client 2024-10-04 23:30:20 +05:30
Prateek Sunal
83990e1160 chore: lint fixes 2024-10-04 22:18:53 +05:30
Prateek Sunal
44d8f8b96f chore: update windows files 2024-10-04 22:18:26 +05:30
Prateek Sunal
f76e64157b chore(auth): update packages 2024-10-04 22:18:03 +05:30
Aman Raj Singh Mourya
bd01340315 [auth] minor fixes 2024-10-04 21:41:05 +05:30
Aman Raj Singh Mourya
c50067bf7d [auth] Update string 2024-10-04 21:39:04 +05:30
Vishnu Mohandas
48840a3df4 [mob][photos] Fix build failing with xcode 16 update (#3576)
## Description

Checked for any regressions.
Read through and checked all breaking changes in change logs of updated
dependencies.
2024-10-04 19:25:48 +05:30
ashilkn
1942239989 [mob][photos] Replace deprecated memebers with replacements 2024-10-04 19:21:02 +05:30
ashilkn
7ff420a82e [mob][photos] Fix build failing with xcode 16 update 2024-10-04 19:15:38 +05:30
Manav Rathi
8be54b3f31 [web] Dialogs, oh my (#3575)
Not much changes functionally, some cleanup, documentation, and add a
few new patterns (This is all in prep for the new add people dialog)
2024-10-04 17:45:27 +05:30
Manav Rathi
db95c07e73 Use 2024-10-04 17:26:43 +05:30
Manav Rathi
507c79c2a1 Don't put divs inside h tags
Same as 248c24b522
2024-10-04 17:17:36 +05:30
Manav Rathi
8f39473720 Tweak 2024-10-04 17:01:47 +05:30
Manav Rathi
c4e9e6014b Add some visual distinction vis a vis the buttons 2024-10-04 16:59:07 +05:30
Manav Rathi
248c24b522 Don't put the div inside the h2
The MUI docs use an absolutely positioned close button, but that comes with other problems.

So instead nest the h2 inside a flex.
2024-10-04 16:50:19 +05:30
Manav Rathi
3c7db36f62 Unnest and fix 2024-10-04 16:34:17 +05:30
Manav Rathi
5a4c08fa5d Tweak GT header for new h6 2024-10-04 16:31:21 +05:30
Manav Rathi
1cf4e920f2 Fix some changes because of switch to h6 2024-10-04 16:27:37 +05:30
Manav Rathi
a26838db00 Tweak DevSettings for new h6 2024-10-04 16:19:32 +05:30
Manav Rathi
17608df71e Provide our own h6 instead of relying on the implicit one 2024-10-04 16:09:40 +05:30
Manav Rathi
e19100cbac Even the inline start needs to be provided 2024-10-04 15:31:29 +05:30
Manav Rathi
0322b125a1 Don't involve the margin 2024-10-04 14:56:38 +05:30
Manav Rathi
702561e215 Remove unnecessary containers 2024-10-04 14:47:31 +05:30
Manav Rathi
351026377f Let it be 2024-10-04 14:40:30 +05:30
Manav Rathi
0a8cfb108a '16px 24px' is when dividers is set 2024-10-04 14:16:32 +05:30
Manav Rathi
ffbe03c283 Doc 2024-10-04 14:00:24 +05:30
Manav Rathi
8fefddde7a Associate 2024-10-04 13:46:16 +05:30
Manav Rathi
aac4c261db Merge in root styleOverrides 2024-10-04 13:18:28 +05:30
Manav Rathi
baeb09a800 Start rooting 2024-10-04 13:14:00 +05:30
Manav Rathi
ed69d7874e Clarify that it'll also work for reimports (#3574) 2024-10-04 12:58:36 +05:30
Manav Rathi
ef66e94cb1 Clarify that it'll also work for reimports 2024-10-04 12:56:42 +05:30
Manav Rathi
7d1a674f22 Inline 2024-10-04 12:29:20 +05:30
Manav Rathi
536936f97b Rename 2024-10-04 12:18:19 +05:30
Manav Rathi
395d8a8ab8 Move to new 2024-10-04 12:10:35 +05:30
Manav Rathi
a0b80a40f4 Inline 2024-10-04 11:51:55 +05:30
Manav Rathi
5c93b5a1af Attempt at disentangling the global overrides 2024-10-04 10:34:37 +05:30
Manav Rathi
9d8cec7c4c [web] New translations (#3572)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-04 09:59:47 +05:30
Crowdin Bot
f61174a5c7 New Crowdin translations by GitHub Action 2024-10-04 04:24:50 +00:00
Manav Rathi
8ddd9f07cc [web] Translation cleanup (#3571) 2024-10-04 09:53:55 +05:30
Manav Rathi
0ae498d9c1 Rename 2024-10-04 09:49:10 +05:30
Manav Rathi
0957ab7f66 [web] Dialog related refactoring (#3565)
Non functional tweaks in how the dialog related code is structured. More
to come. Prep for adding people merging.
2024-10-03 18:50:57 +05:30
Manav Rathi
a7443710ac Tweak 2024-10-03 18:15:37 +05:30
Manav Rathi
1d8f4b2ebc Usability 2024-10-03 18:06:15 +05:30
Manav Rathi
cd2d7be69a The "&&&"s are to override the style overrides
...which is what I want to refactor away, this is an intermediate step.
2024-10-03 17:51:37 +05:30
Vishnu Mohandas
491b628577 [mob][photos] log number of row in filesDB for debugging perf issues (#3564) 2024-10-03 17:11:06 +05:30
ashilkn
bd5e53b83d [mob][photos] log number of row in filesDB for debugging perf issues 2024-10-03 17:06:31 +05:30
Manav Rathi
27bdc5d229 Reduce font weight 2024-10-03 17:05:04 +05:30
Manav Rathi
d40f4a78c6 Remove unnecessary wrap 2024-10-03 16:59:02 +05:30
Manav Rathi
6ccc85d318 Inline 2024-10-03 16:56:37 +05:30
Manav Rathi
51ba9270e7 Use 2024-10-03 16:00:55 +05:30
Manav Rathi
8db71fe45e Doesn't inherit from MUI button 2024-10-03 15:59:48 +05:30
Manav Rathi
0a095d71f8 Move 2024-10-03 15:59:48 +05:30
Manav Rathi
f3ea391aa9 Rename and move 2024-10-03 15:44:16 +05:30
Manav Rathi
a273bbb577 Tweak 2024-10-03 15:42:48 +05:30
Manav Rathi
6c4ef2e674 [web] Use (lat, long) from public magic metadata (#3561) 2024-10-03 12:30:08 +05:30
Manav Rathi
237b7c4116 Use (lat, long) 2024-10-03 12:11:30 +05:30
Manav Rathi
379d549300 Prep 2024-10-03 12:09:10 +05:30
Manav Rathi
aecd7dc9f9 Doc lat/lng 2024-10-03 12:07:53 +05:30
Manav Rathi
8ccfe3c609 Ref 2024-10-03 12:03:49 +05:30
Manav Rathi
91c8406e27 Doc 2024-10-03 11:51:58 +05:30
Manav Rathi
d0341ba50c Remove unused return 2024-10-03 11:42:09 +05:30
Manav Rathi
d93d4a3601 [web] Fix recover redirect (#3560)
Ref: 59bf51346c
2024-10-03 08:37:06 +05:30
Manav Rathi
10f4fd1118 [web] Fix recover redirect
Ref: 59bf51346c
2024-10-03 08:21:27 +05:30
wiki-Bird
7357d0599b Update custom-icons.json / custom icons with Simplicity, RealMe, and PBTech 2024-10-02 16:02:29 +13:00
Aman Raj Singh Mourya
ac86b3097c [auth] string fixes 2024-10-01 16:49:12 +05:30
Aman Raj Singh Mourya
063a8dd792 [auth] Extract strings 2024-10-01 16:40:13 +05:30
Aman Raj Singh Mourya
ea5fa5b252 [auth] warning dialog 2024-10-01 00:47:13 +05:30
Aman Raj Singh Mourya
94298cc1b5 [auth] hide logout button from lockscreen when app in useWithoutBackup state 2024-10-01 00:39:00 +05:30
Aman Raj Singh Mourya
f2e3b0e0bf [auth] key to store the status of applock warning 2024-10-01 00:38:23 +05:30
Manav Rathi
f9cf9733a0 [web] Update docs after verifying the behaviour (#3542)
Indeed, it seems like the default is not a hand pointer, and MUI has
customized its button, so we need to replicate that behaviour if we
directly use HTML buttons.

Ref:
-
https://ux.stackexchange.com/questions/3788/default-cursor-on-mouse-over-of-a-button-is-not-a-hand-pointer
2024-09-30 21:03:43 +05:30
Manav Rathi
8a5a923c93 [web] Update docs after verifying the behaviour
Indeed, it seems like the default is not a hand pointer, and MUI has customized
its button, so we need to replicate that behaviour if we directly use HTML
buttons.

Ref:
- https://ux.stackexchange.com/questions/3788/default-cursor-on-mouse-over-of-a-button-is-not-a-hand-pointer
2024-09-30 20:54:22 +05:30
Manav Rathi
3483ea0d1b [web] Parse description from Google Takeout metadata JSON (#3540)
Fixes https://github.com/ente-io/ente/issues/3537
2024-09-30 17:10:43 +05:30
Manav Rathi
b6baffa97e Add CHANGELOG entry too 2024-09-30 17:07:06 +05:30
Manav Rathi
1dfd295f40 Use 2024-09-30 16:55:56 +05:30
Manav Rathi
49b5c2ca14 Doc 2024-09-30 16:51:30 +05:30
Neeraj Gupta
dccd98dd0c Update Authy Migration formatting (#3538)
## Description

## Tests
2024-09-30 15:10:15 +05:30
setalp
0002e871c2 Update Authy Migration formatting 2024-09-30 13:50:04 +05:30
Manav Rathi
d8356ae0c0 Parse description 2024-09-30 13:08:35 +05:30
Neeraj Gupta
3178a7a61d [auth] New translations (#3534)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-09-30 12:09:16 +05:30
Neeraj Gupta
2f2fc43fa6 [mobile] New translations (#3533)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-09-30 12:08:22 +05:30
Ashil
093d7fd333 [mob][photos] Remove legacy code in detail page (#3496)
## Description

Removed use of `asyncLoader` in `DetailPage` and instead, all files in
gallery is now stored in an inherited widget (`GalleryFilesState`) and
`DetailPage` uses that list of files instead of fetching from DB using
`asyncLoader`. This 'all files' list reflects all changes in gallery (as
observed when testing) so there is no issue of the list being out of
sync with gallery.

Where ever possible, `GalleryFilesState` has been wrapped around the
`Scaffold` of galleries, so that all files are accessible to all
ancestors of a gallery's `Scaffold`, which could come useful in the
future.
2024-09-30 11:57:48 +05:30
Manav Rathi
0bc96f58fd [web] New translations (#3532)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-30 10:29:03 +05:30
Crowdin Bot
3f7a42ba49 New Crowdin translations by GitHub Action 2024-09-30 04:58:27 +00:00
connor
0a5d0f515f [auth] updated icons for dark/light modes 2024-09-29 20:33:04 -05:00
Crowdin Bot
9bc3926372 New Crowdin translations by GitHub Action 2024-09-30 01:04:58 +00:00
Crowdin Bot
2d17aa5550 New Crowdin translations by GitHub Action 2024-09-30 00:34:58 +00:00
Sven
7dcfc8ee47 [auth] Add Wargaming icon (#3529)
## Description
Adds the Wargaming.net icon to Ente Auth
2024-09-29 22:24:38 +05:30
Neeraj Gupta
f995589a02 Merge branch 'main' into f-droid 2024-09-29 12:04:26 +05:30
Neeraj Gupta
fa361904f6 [mob] Misc bug fixes (#3522)
## Description

## Tests
2024-09-29 11:17:51 +05:30
Neeraj Gupta
00e75c0fb2 [mob] Lint 2024-09-29 09:54:20 +05:30
Neeraj Gupta
026ab8dcc6 [mob] Bump version: v0.9.46 2024-09-29 09:53:15 +05:30
Neeraj Gupta
7d42ed37e1 Merge remote-tracking branch 'origin/main' into bug_fixes 2024-09-29 09:52:49 +05:30
Neeraj Gupta
a5d01a9ffe [mob] Fix avatar faceID 2024-09-29 09:52:41 +05:30
Neeraj Gupta
675b7f6cea [mob] Sync cgroup as part of ML 2024-09-29 09:45:48 +05:30
Neeraj Gupta
772373580a [mob] Stop consuming errors for trash 2024-09-29 09:42:25 +05:30
Neeraj Gupta
f0a19e38aa [mob] Fix hide cluster property 2024-09-29 09:41:35 +05:30
Manav Rathi
d1d6590547 [web] Sync locations only once on app start if there are pending uploads (#3521) 2024-09-29 05:52:32 +05:30
Manav Rathi
03da960c33 Start with a idle state
Not sure why it was true - there is a possibility that this was intentional, but
I can't think why. The reason for changing it is to fix our "isForced" logic
(otherwise the non-file-related sync doesn't run on app start), without
introducing _another_ flag to track if the sync was initiated from a gallery
useEffect or by the preUploadSync.
2024-09-29 05:40:37 +05:30
Manav Rathi
2bdc010849 [web] Do not perform multiple non-file-syncs in parallel
e.g. this might cause multiple requests to getOrCreate a location tag entity
key. Remote will reject the second one, so no harm will come of it, but still
its better to enforce serialization to make the mental model of the code easier
to reason about.
2024-09-29 05:20:12 +05:30
Prateek Sunal
c160afc6de [auth] fix x64 installer on arm64 Windows (#3502)
Portable x64 Ente Auth works on arm64 Windows, but the installer version
fails due to not supporting arm64. As per Inno Setup's documentation the
'x64' option will only allow installing on x64 Windows, changing to
'x64compatible' allows the x64 installer to work on arm64 as well.
2024-09-28 21:33:40 +05:30
Manav Rathi
f971b968af [desktop] Start next release cycle (#3515) 2024-09-28 19:35:58 +05:30
Manav Rathi
c8468efd20 [desktop] Start next release cycle 2024-09-28 19:21:49 +05:30
Manav Rathi
9515cf70f5 photosd-v1.7.5 (#3514) 2024-09-28 18:54:54 +05:30
Manav Rathi
963650db4b [desktop] Use most recent face as the auto-cover (#3513) 2024-09-28 18:40:54 +05:30
Manav Rathi
a2841a8af2 Use most recent face as the auto-cover 2024-09-28 18:32:30 +05:30
Manav Rathi
6a6db0813f [desktop] People: Remove from behind internal user flag (#3511) 2024-09-28 17:51:14 +05:30
Manav Rathi
66fad15743 Add CHANGELOG entry 2024-09-28 17:41:54 +05:30
Manav Rathi
eb4d77bd24 Un-ff 2024-09-28 17:37:46 +05:30
Manav Rathi
e2c0aed2e4 Remove early exit threshold
It did not appear to be obviously helping the speed (or hurting the quality), so
remove it to reduce the number of concepts at play.
2024-09-28 17:22:44 +05:30
Manav Rathi
5a5e046192 Fix hidden sync with existing mobile app 2024-09-28 17:22:03 +05:30
Manav Rathi
42a6e3ac25 [web] New translations (#3509)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-28 16:50:31 +05:30
Crowdin Bot
7fdb8a6dae New Crowdin translations by GitHub Action 2024-09-28 11:18:59 +00:00
Manav Rathi
ef63d4c7a0 [web] Translation cleanup (#3508) 2024-09-28 16:40:28 +05:30
Manav Rathi
60b9d1e43f Rename 2024-09-28 16:32:45 +05:30
Manav Rathi
c453c7dc81 Remove unused 2024-09-28 16:30:31 +05:30
Manav Rathi
5c41e8ad3c Rename 2024-09-28 16:28:49 +05:30
Manav Rathi
53c706fba7 Rename 2024-09-28 16:27:26 +05:30
Manav Rathi
27a34a08f4 Rename 2024-09-28 16:25:29 +05:30
Manav Rathi
6bea1fa0f5 Rename 2024-09-28 16:24:22 +05:30
Manav Rathi
a97ca411d7 Rename 2024-09-28 16:12:45 +05:30
Manav Rathi
636cd1395c Rename 2024-09-28 16:08:16 +05:30
Manav Rathi
6e23e5e453 Cons 2024-09-28 16:07:17 +05:30
Manav Rathi
77f5d21dad Rename 2024-09-28 16:04:38 +05:30
Manav Rathi
5d210ab740 Rename 2024-09-28 16:02:41 +05:30
Manav Rathi
8d14997f36 [web] New translations (#3507)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-28 16:00:58 +05:30
Crowdin Bot
b6059273fb New Crowdin translations by GitHub Action 2024-09-28 10:27:04 +00:00
Neeraj Gupta
1dde716d26 [mob] Fix: Enable video upload without thumbnail for shared files (#3506)
## Description

## Tests
2024-09-28 14:22:35 +05:30
Neeraj Gupta
8629212584 [mob] Allow video upload with empty thumbnail 2024-09-28 14:18:21 +05:30
Neeraj Gupta
08cf14a72b [mob] Minor improvement in magicSearch cache refresh 2024-09-28 14:14:08 +05:30
Vishnu Mohandas
fe5da2ee8b [docs] Update ML article (#3504) 2024-09-27 23:13:06 -07:00
vishnukvmd
f255ded0b6 [docs] Update ML article 2024-09-27 23:07:32 -07:00
Manav Rathi
59bf51346c [web] Fix redirect on parallel login (#3503) 2024-09-28 10:23:49 +05:30
Manav Rathi
3288f3250b Extract 2024-09-28 10:16:12 +05:30
Manav Rathi
1eb5eaece9 Freshness check 2024-09-28 10:08:11 +05:30
Manav Rathi
08f84c9cf8 Also handle for auth 2024-09-28 09:54:51 +05:30
omove
6d969ab72a [auth] fix x64 install on arm64 Windows
Inno Setup's 'x64' option only allows install on x64 Windows, changing to 'x64compatible' allows x64 installation on arm64 and x64 Windows.
2024-09-28 00:05:59 -04:00
Manav Rathi
da8326229c [web] Redirect to password input on no-email-MFA + new tab
Fixes the following bug report, for a user who has email verification disabled:

> and about verify in new tab...
> it happens when u r at password page after entering email and opening
  ente.auth.io in new tab opens the verify page instead of password
2024-09-28 09:32:25 +05:30
Manav Rathi
05763a5d83 [desktop] People - Empty state (#3498)
+ thumbnails
2024-09-27 20:33:57 +05:30
Manav Rathi
d7e2330f20 Fix render loop 2024-09-27 20:29:14 +05:30
Manav Rathi
99ba5a31d3 Fix warning 2024-09-27 19:27:48 +05:30
Manav Rathi
2aaa23312b Both buttons 2024-09-27 19:15:12 +05:30
Manav Rathi
cc262aad0c New semantics 2024-09-27 19:06:32 +05:30
Manav Rathi
72c93a1703 Tweak styling 2024-09-27 18:44:53 +05:30
ashilkn
2d7e58d743 [mob][photos] Stop passing to GalleryFileWidget as it's no longer needed 2024-09-27 18:41:12 +05:30
ashilkn
fa3a9f4f52 [mob][photos] Stop passing sort order to DetailPage since DetailPage uses files in GalleryFilesState which updates when sort order changes in gallery 2024-09-27 18:41:12 +05:30
ashilkn
0dcc840179 [mob][photos] Remove commented out code 2024-09-27 18:41:12 +05:30
ashilkn
58384004b4 [mob][photos] Minor perf improvement when deleting in DetailPage 2024-09-27 18:41:12 +05:30
ashilkn
3361c1f149 [mob][photos] Stop using async loader in details page. Instead use the list of files in gallery from the GalleryState inherited widget 2024-09-27 18:41:12 +05:30
ashilkn
c7a4cbc365 [mob][photos] Create new inheirted widget to store all files in gallery and throw exception/assert to make sure it's never used incorrectly 2024-09-27 18:41:12 +05:30
ashilkn
de9c294977 [mob][photos] Document use of isSelectionMode in Gallery widget 2024-09-27 18:40:21 +05:30
Manav Rathi
2f27ae7b19 Empty state 2024-09-27 18:37:16 +05:30
Manav Rathi
039256cb05 wip checkpoint people empty state 2024-09-27 18:28:44 +05:30
Manav Rathi
167c4efc40 wip empty state 2024-09-27 18:05:49 +05:30
Manav Rathi
5b73eee14c Don't show bar controls in people section 2024-09-27 18:01:16 +05:30
Manav Rathi
eafc8fc4cb Fix logout 2024-09-27 17:12:56 +05:30
Manav Rathi
370d4af008 Thumbnails shouldn't be revoked
So make the face crops behave the same too
2024-09-27 17:07:37 +05:30
Manav Rathi
4bb6aa2b39 Use 2024-09-27 16:48:18 +05:30
Manav Rathi
01f31c352b Support face crops 2024-09-27 16:47:35 +05:30
Manav Rathi
50c60dff1c [desktop] People - Enable for internal (#3492)
Nearing readiness for beta release
2024-09-27 14:08:39 +05:30
Manav Rathi
7bdbaec443 Unconditionally enable for internal 2024-09-27 14:01:44 +05:30
Manav Rathi
57d245d9e0 Select person 2024-09-27 13:57:04 +05:30
Manav Rathi
8a953cab88 Fix alignment etc 2024-09-27 13:33:03 +05:30
Manav Rathi
2827a166dc people list checkpoint 2024-09-27 13:24:31 +05:30
Manav Rathi
4e04739d54 wip checkpoint 2024-09-27 12:54:17 +05:30
Manav Rathi
7a60b1e15e wip checkpoint 2024-09-27 12:34:41 +05:30
Manav Rathi
e2e374fbf4 wip checkpoint 2024-09-27 12:25:53 +05:30
Manav Rathi
71adb1e366 Another 2024-09-27 11:46:01 +05:30
Manav Rathi
393878a52e More workarounds 2024-09-27 11:35:35 +05:30
Manav Rathi
7644900bd8 Use 2024-09-27 11:26:35 +05:30
Manav Rathi
e70f9b5ccd Ignore temp deleted etc 2024-09-27 11:03:30 +05:30
Manav Rathi
a37ff3cf57 Workarounds 2024-09-27 10:53:28 +05:30
Manav Rathi
9235e41855 Prepare to allow filtering people at the gallery layer 2024-09-27 10:46:34 +05:30
Manav Rathi
71369bf5c9 State 2024-09-27 10:29:33 +05:30
Manav Rathi
924f5ce19b Keep people first 2024-09-27 10:14:53 +05:30
Manav Rathi
4d4b3f8bef Notify about live uploads 2024-09-27 10:06:56 +05:30
Manav Rathi
27a0d7707e Return the count of items indexed 2024-09-27 08:39:29 +05:30
Manav Rathi
57ea097a5d Use new nomenclature 2024-09-27 08:21:58 +05:30
Manav Rathi
2c0f2d43e7 Allow flex 2024-09-27 08:15:56 +05:30
Manav Rathi
968067d6aa [desktop] People WIP - More CRUD ops (#3485) 2024-09-26 21:49:42 +05:30
Manav Rathi
de6a494da7 Reset selection 2024-09-26 21:42:59 +05:30
Prateek Sunal
e13f2a379a [auth] add show notes for mobile and desktop menu (#3451)
## Description

## Tests
2024-09-26 21:40:54 +05:30
Manav Rathi
4c0c05a54a qp 2024-09-26 21:20:35 +05:30
Manav Rathi
ac04ceadce Delete 2024-09-26 21:06:40 +05:30
Manav Rathi
91127b6ce5 Don't used cached data
e.g. after a rename, the active person still has the old name even though the
list of people has updated.
2024-09-26 20:48:51 +05:30
Manav Rathi
f95cc1f135 Fix 2024-09-26 20:37:03 +05:30
Manav Rathi
64d7959c95 Split 2024-09-26 20:33:51 +05:30
Manav Rathi
9a444b4881 Rename 2024-09-26 20:33:02 +05:30
Manav Rathi
795187177d Need to also update local clusters 2024-09-26 20:21:16 +05:30
Manav Rathi
54c5c2ce7e Reload 2024-09-26 20:03:12 +05:30
Manav Rathi
1a966fdedd Add workaround
306bc56c21/mobile/lib/ui/viewer/actions/file_selection_actions_widget.dart (L701)
2024-09-26 18:46:14 +05:30
Manav Rathi
6f9cd84b6d Shorten to reduce noise 2024-09-26 18:31:10 +05:30
Manav Rathi
4506e5b6d9 [desktop] People WIP - Allow adding (#3481) 2024-09-26 18:24:34 +05:30
Manav Rathi
1c74eae132 Add a workaround 2024-09-26 18:21:19 +05:30
Manav Rathi
262ff01999 Fix lints 2024-09-26 17:44:18 +05:30
Manav Rathi
1daa0f3e07 Proxy 2024-09-26 17:31:15 +05:30
Manav Rathi
c4931de42e Add 2024-09-26 17:28:19 +05:30
Manav Rathi
77cdf673a9 Add a quick action 2024-09-26 17:22:35 +05:30
Manav Rathi
7ff5f74fa6 Use a slide 2024-09-26 17:18:10 +05:30
Neeraj Gupta
57a425e14c [mob] Run discovery forcefully when ml is toggled 2024-09-26 17:13:29 +05:30
Manav Rathi
642c85fe59 Make tsc happy 2024-09-26 17:13:24 +05:30
Manav Rathi
0e046b9c8a wip checkpoint 2024-09-26 17:03:22 +05:30
Manav Rathi
be222f53bf rename 2024-09-26 16:24:50 +05:30
Manav Rathi
0498c70bad Uncustom 2024-09-26 16:19:44 +05:30
Manav Rathi
08fcc02282 Scaffold 2024-09-26 16:03:50 +05:30
Manav Rathi
aef32027a1 Name input 2024-09-26 15:49:25 +05:30
Manav Rathi
f9cbce66c0 Newer 2024-09-26 15:01:29 +05:30
Manav Rathi
39d39eb195 Opts 2024-09-26 14:51:59 +05:30
Manav Rathi
b052026526 Fix console warning 2024-09-26 14:45:57 +05:30
Manav Rathi
8a79ae9b96 Use 2024-09-26 14:37:04 +05:30
Manav Rathi
dbd160c135 Start at attempting to abstract wrap
This can be done much better in many small ways, for now just attempting a
start.
2024-09-26 14:30:56 +05:30
Manav Rathi
7634ba0dea Split options 2024-09-26 14:17:35 +05:30
Manav Rathi
840ba2803e Take 2 2024-09-26 14:11:16 +05:30
Manav Rathi
3093894b12 as const wasn't working
Current tsc - 5.6
2024-09-26 14:09:08 +05:30
Manav Rathi
41d5960d1f Retain type 2024-09-26 13:52:31 +05:30
Manav Rathi
fb63b1d832 Center align 1 2024-09-26 13:18:57 +05:30
Manav Rathi
68c93537d3 Fix thin outline on placeholder 2024-09-26 12:38:45 +05:30
Manav Rathi
0f73a68681 Tweak spacing to account for the "People" option 2024-09-26 12:33:26 +05:30
Manav Rathi
306bc56c21 [desktop] People WIP (Part x/x) - Start uploading updates to cgroups (#3477) 2024-09-26 12:17:24 +05:30
Manav Rathi
feec9a475b Remove unnecessary sort 2024-09-26 12:10:46 +05:30
Manav Rathi
8314cda12a Tweak logging 2024-09-26 12:09:11 +05:30
Manav Rathi
4cc8be748c Fix indexing into the wrong faces 2024-09-26 12:02:27 +05:30
Manav Rathi
5a33820877 Fix 2024-09-26 12:00:39 +05:30
Neeraj Gupta
830f1b9c18 [auth] Enable l10n for Vietnamese, Arabic, Greek, & Slovak (#3476)
## Description

## Tests
2024-09-26 11:31:11 +05:30
Neeraj Gupta
c81cf5a432 Add altName back to T-Mobile icon that was previously removed from json (#3465)
## Description

## Tests
2024-09-26 11:29:39 +05:30
Neeraj Gupta
f71c3f4171 [auth] Enable l10n for Vietnamese, Arabic, Greek, & Slovak 2024-09-26 11:28:05 +05:30
Manav Rathi
5b99902d68 Workaround a spurious tsc error 2024-09-26 11:17:40 +05:30
Neeraj Gupta
2569337be8 [auth] Auth minor improvements & bug fixes (#3475)
## Description

## Tests
2024-09-26 11:14:59 +05:30
Neeraj Gupta
87f7d3a484 [auth] Show theme option for windows & linux 2024-09-26 11:12:16 +05:30
Neeraj Gupta
8fa6adb16a [auth] Default to non-compact mode 2024-09-26 11:09:58 +05:30
Neeraj Gupta
00c9572b43 [auth] Remove double authentication for passkey 2024-09-26 11:09:28 +05:30
Manav Rathi
9424b7a65e Remove unused intermediate concept 2024-09-26 11:09:02 +05:30
Manav Rathi
af680b6da3 Update 2024-09-26 10:54:50 +05:30
Manav Rathi
3826c1f957 Reorder 2024-09-26 10:49:02 +05:30
Manav Rathi
3b6bee6042 Only one diff sync per set 2024-09-26 10:47:42 +05:30
Manav Rathi
2163a5fbea refactor 2024-09-26 10:39:42 +05:30
Manav Rathi
8e485bfe39 Layer 2024-09-26 10:36:04 +05:30
Manav Rathi
c361fcbff4 Entity CRUD 2024-09-26 10:01:27 +05:30
Manav Rathi
ba063bf4a7 Enable for internal 2024-09-26 09:45:48 +05:30
Manav Rathi
82c0bbb879 Tinker 2024-09-26 09:36:25 +05:30
Manav Rathi
711f31991d Doc 2024-09-26 09:35:58 +05:30
Manav Rathi
9c0d9ac538 Optimize no-op case 2024-09-26 09:34:05 +05:30
Manav Rathi
2521cd6d31 Tweak spacing 2024-09-26 09:09:25 +05:30
Manav Rathi
b5db5e2b83 kMinimumClusterSizeSearchResult
Although that is the file count
2024-09-26 08:57:20 +05:30
Manav Rathi
7d52b60cd9 Retain all clusters so that files get marked 2024-09-26 08:54:48 +05:30
Manav Rathi
08765ccd39 Clip with preprocessing inside ONNX on web (#3466)
## Description

Switched to new clip ONNX model on web, where preprocessing is done
inside ORT. This means it's more performant and more advanced image
processing.

## Tests

Not tested at all! I'm sure I've made a small mistake somewhere, please
review and test carefully.
The only thing properly tested is the model itself, this approach is
tested and passed on mobile.

Also, there's one "TODO: manav" pending, please check.
2024-09-26 08:25:52 +05:30
Manav Rathi
3dcf5fa860 Remove unused anti-aliasing code (since CLIP now uses ONNX) 2024-09-26 07:59:36 +05:30
Manav Rathi
cda925fc80 Tweaks (non-functional) 2024-09-26 07:25:25 +05:30
Laurens Priem
7b2206161e Clip with preprocessing inside ONNX on mobile (#3467)
## Description

Switched to new clip ONNX model on mobile, where preprocessing is done
inside ORT. This means it's more performant and more advanced image
processing.

## Tests

Tested in debug mode on my Pixel 8.
2024-09-26 05:44:19 +05:30
Prateek Sunal
bbd7be4423 fix: remove onNotes tap for mobile 2024-09-26 01:11:29 +05:30
laurenspriem
c8ab6be9f8 [web][photos] Remove old clip preprocessing code web 2024-09-25 23:54:37 +05:30
laurenspriem
5609309660 [web][photos] Move to new clip with preprocessing included 2024-09-25 23:53:28 +05:30
laurenspriem
fa19254bbc [mob][photos remove old clip preprocessing code 2024-09-25 23:04:29 +05:30
laurenspriem
70476b2011 [mob][photos] Remove todo 2024-09-25 23:00:52 +05:30
laurenspriem
7dd9d8aef3 [mob][photos] new clip works 2024-09-25 22:58:23 +05:30
casualsailo
13727b9a96 Add altName back to T-Mobile icon that was previously removed from json 2024-09-25 09:13:33 -07:00
Manav Rathi
6decb15be7 [desktop] People WIP- Part x/x (+ bugfix, clear ML DB on logout) (#3464) 2024-09-25 20:59:09 +05:30
Manav Rathi
a93c43d341 Add missing % symbol 2024-09-25 20:46:18 +05:30
Manav Rathi
40b1cdcabb Clear ML DB on logout 2024-09-25 20:42:16 +05:30
Manav Rathi
f5ee46189c Extract and tweak 2024-09-25 20:35:36 +05:30
Manav Rathi
48cab57d53 Wait for indexing to complete before clustering 2024-09-25 20:00:33 +05:30
Manav Rathi
7c867f94bf [desktop] People WIP - Part x/x (#3460) 2024-09-25 19:16:12 +05:30
Manav Rathi
3465253fcc Transform 2024-09-25 18:53:41 +05:30
Manav Rathi
61b324ca05 Rearrange 2024-09-25 18:53:41 +05:30
Manav Rathi
cb57351951 Split 2024-09-25 18:53:41 +05:30
Manav Rathi
3f4250dab3 Reconcile 1 2024-09-25 18:53:41 +05:30
Manav Rathi
1efbbf2b2f Rearrange 2024-09-25 18:53:41 +05:30
Manav Rathi
1ff21b3d8e Start with existing clusters 2024-09-25 18:53:41 +05:30
Manav Rathi
31ffc5bee5 Doc 2024-09-25 18:53:40 +05:30
Manav Rathi
6cd43707a8 Pull 2024-09-25 18:53:40 +05:30
Manav Rathi
3324019b38 Percentage during clustering 2024-09-25 18:53:40 +05:30
Manav Rathi
cc02236ca9 Rename 2024-09-25 18:53:40 +05:30
Manav Rathi
ece4980d94 Mention our experience so far 2024-09-25 18:53:40 +05:30
Neeraj Gupta
47b6e758d2 [mob] Fix Handling live photo dups with different zip side (#3452)
## Description

## Tests
2024-09-25 14:48:46 +05:30
laurenspriem
53c19bc64e [mob][photos] Temp disable custom plugin 2024-09-25 14:40:40 +05:30
laurenspriem
bd232c151a [mob][photos] Test for iOS 2024-09-25 14:34:25 +05:30
Manav Rathi
8970074f80 [web] Store user entities verbatim (#3458) 2024-09-25 13:58:46 +05:30
Manav Rathi
27d901bc60 Fix key names in migration 2024-09-25 13:49:39 +05:30
Manav Rathi
e87a6a5106 Fix 2024-09-25 13:47:24 +05:30
Manav Rathi
7f132b1827 cgroups 2024-09-25 13:41:54 +05:30
Manav Rathi
b763cab1ba Generic pull 2024-09-25 13:26:15 +05:30
Neeraj Gupta
e1a7d61d49 [auth] Misc bugs fix (#3455)
## Description

## Tests
2024-09-25 12:51:00 +05:30
Neeraj Gupta
0a4d415950 [auth] Improve code formatting 2024-09-25 12:48:38 +05:30
Neeraj Gupta
c9af246a3a [auth] Bump version 2024-09-25 12:45:01 +05:30
Neeraj Gupta
718c2544c8 [auth] Update simple-icons 2024-09-25 12:44:35 +05:30
Neeraj Gupta
2c4cbed467 [auth] Handle case when issuer contains : 2024-09-25 12:39:36 +05:30
Neeraj Gupta
cd917f58ca [auth] Increase refresh frequency 2024-09-25 12:34:05 +05:30
Manav Rathi
15a7e0b805 Mig 2024-09-25 12:27:51 +05:30
Manav Rathi
f702a93031 Save JSON directly 2024-09-25 12:23:56 +05:30
Manav Rathi
432ef74101 Support arbitrary JSON values in kv store 2024-09-25 12:18:06 +05:30
Manav Rathi
dd5dae2833 Notes 2024-09-25 12:06:16 +05:30
Manav Rathi
2c0739e1d1 Footprint 2024-09-25 10:40:17 +05:30
Manav Rathi
3449021272 Move to utils 2024-09-25 10:23:50 +05:30
Manav Rathi
c01a439b81 Split 2024-09-25 10:22:38 +05:30
Manav Rathi
1d5cca6ee1 namespace 2024-09-25 10:00:07 +05:30
Manav Rathi
55022ec1ee [web] Introduce selection context (#3453)
This is prep for photos in the people section to be selectable.
2024-09-25 09:45:05 +05:30
Neeraj Gupta
821787f81d Merge remote-tracking branch 'origin/main' into handle_live_photo_dups 2024-09-25 06:34:51 +05:30
Neeraj Gupta
bc7704916a [mob] Bump version 2024-09-25 06:34:44 +05:30
Neeraj Gupta
7ed620d817 [mob] Fix dedupe for live photos with different size 2024-09-25 06:34:19 +05:30
Prateek Sunal
1bfa7b1998 fix: add show notes for mobile and desktop menu 2024-09-25 05:39:22 +05:30
Manav Rathi
0cff1ef315 rename 2024-09-24 20:19:10 +05:30
Manav Rathi
fe2d69aad3 mark as needing doing 2024-09-24 19:41:04 +05:30
Manav Rathi
e55c6fef4d Explicit list 2024-09-24 19:30:40 +05:30
Manav Rathi
e53312304a Mirror search mode 2024-09-24 19:27:45 +05:30
Manav Rathi
f6f81c4eeb Add to collection creates 2 entries for a file 2024-09-24 19:25:27 +05:30
Manav Rathi
9574704154 Tweak people selection options 2024-09-24 19:03:46 +05:30
Manav Rathi
bad6fd9fae [web] Introduce selection context
- For handling collection / people split
- This can be done better (much!), need to revisit
2024-09-24 18:45:21 +05:30
Manav Rathi
06bd58edce [web] People bar - Part x/x (#3445) 2024-09-24 18:30:41 +05:30
Manav Rathi
459b49a121 lf 2024-09-24 18:22:43 +05:30
Neeraj Gupta
6d0f44b1da [auth] Minor improvements (#3443)
## Description

## Tests
2024-09-24 16:51:41 +05:30
Manav Rathi
5076cf7647 tweak 2024-09-24 16:50:04 +05:30
Neeraj Gupta
c656a1c6a4 Merge remote-tracking branch 'origin/main' into auth_window_size 2024-09-24 16:49:10 +05:30
Neeraj Gupta
14a3f426ce [AUTH] Replace Icon for bybit.com (#3279)
### Replaced old very transparented ByBit Icon with a Visible and Clear
Icon for in-App

### A new Original Background and Proper Text Color has been Added to
the Icon to Replace the Old One
2024-09-24 16:48:48 +05:30
Neeraj Gupta
cfe83a40e5 [auth] Added and updated icons (#3419)
## Description

Added logos:
- 23andMe
- ForUsAll
- Guideline
- Gusto
- ID.me
- Login.gov
- Titan

Updated:
- Canva
- Coinbase
- eBay

Fixed T-Mobile that had an icon but was removed from the json.
2024-09-24 16:47:31 +05:30
Neeraj Gupta
c90feccfa4 [auth] Bump version v4.0.1 2024-09-24 16:46:43 +05:30
Neeraj Gupta
06a55bc11a [auth] Use SelectableText for notes 2024-09-24 16:46:25 +05:30
Manav Rathi
a0df76c2c3 Color 2024-09-24 16:46:16 +05:30
Neeraj Gupta
aa8d910a0b [auth] Fix bottom bar for iPad 2024-09-24 16:40:09 +05:30
Manav Rathi
e10613fa0f person header 2024-09-24 16:38:10 +05:30
Manav Rathi
f45b48a347 unfile 2024-09-24 16:36:06 +05:30
Neeraj Gupta
75362199e5 [server] Remove invites & remove members during closeFamily (#3442)
## Description

Currently, we force the admin to remove the members themself and revoke
the invite before a family account can be closed.
Going forward, this action will be automatically done. This will help in
reducing support overhead.

## Tests
2024-09-24 16:17:49 +05:30
Manav Rathi
4d56b4b406 rename 2024-09-24 16:16:54 +05:30
Manav Rathi
f07f3b320e move returns together 2024-09-24 16:03:42 +05:30
Neeraj Gupta
006eed1cd8 [auth] Request authentication to view passkeys (#3424)
## Description

## Tests
2024-09-24 16:01:31 +05:30
Manav Rathi
3e5a9271d7 prune 2024-09-24 16:00:56 +05:30
Neeraj Gupta
9dd18f0137 [auth] Show notes on bottom action bar 2024-09-24 15:59:51 +05:30
Manav Rathi
002a652cfd fin 2024-09-24 15:54:48 +05:30
Neeraj Gupta
40f34417d9 [auth] Fix state refresh bug 2024-09-24 15:50:42 +05:30
Manav Rathi
ffa80c9db2 newer 2024-09-24 15:42:17 +05:30
Manav Rathi
62dadd7e75 shorter 2024-09-24 15:41:07 +05:30
Manav Rathi
d2fe71f478 unnest 2024-09-24 15:37:36 +05:30
Manav Rathi
f856db2cb7 use newer 2024-09-24 15:35:24 +05:30
Manav Rathi
25386d194b use newer 2024-09-24 15:33:38 +05:30
Manav Rathi
35f7ce07f1 use newer 2024-09-24 15:30:20 +05:30
Neeraj Gupta
8c722c39ec [server] Remove invites & remove members during closeFamily 2024-09-24 15:28:47 +05:30
Manav Rathi
c71c3e7ef8 use newer 2024-09-24 15:25:11 +05:30
Manav Rathi
d3ab7f530c overlay 2024-09-24 15:22:02 +05:30
Manav Rathi
be2b01f722 unused 2024-09-24 15:13:24 +05:30
Manav Rathi
9ac05bc873 header 1 2024-09-24 15:03:19 +05:30
Manav Rathi
be7bb8e4b6 temp move 2024-09-24 14:42:10 +05:30
Manav Rathi
be4536ac30 extract 2024-09-24 14:26:49 +05:30
Manav Rathi
47e2d2f915 tweak 2024-09-24 14:15:56 +05:30
Manav Rathi
b47c027cbd rename 2024-09-24 14:08:50 +05:30
Manav Rathi
4e6dd14c71 [web] People bar - Part x/x (#3440) 2024-09-24 13:55:19 +05:30
Manav Rathi
34edc9b2e8 new 2024-09-24 12:46:11 +05:30
Manav Rathi
51f64799aa rename 2024-09-24 12:25:57 +05:30
Manav Rathi
4791b10d91 rename 2024-09-24 12:21:16 +05:30
Manav Rathi
c595c88e82 person sugg 2024-09-24 12:12:34 +05:30
Manav Rathi
6657695858 Fix 2024-09-24 12:06:37 +05:30
Manav Rathi
bc5be62de4 Header 2024-09-24 11:48:44 +05:30
Manav Rathi
78fd9cc6e6 Select 2024-09-24 11:35:30 +05:30
Manav Rathi
29aa608399 Ah 2024-09-24 10:19:40 +05:30
Manav Rathi
310e319057 2nd dup 2024-09-24 10:15:22 +05:30
Manav Rathi
bef3d0949c Mode switcher 2024-09-24 10:04:19 +05:30
Manav Rathi
e45baf6238 Button 2024-09-24 09:48:47 +05:30
Manav Rathi
454f93fadb rename 2024-09-24 09:35:19 +05:30
Manav Rathi
76a6b7402c [web] New translations (#3433)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-24 08:56:16 +05:30
Manav Rathi
9d4c5b29b3 [web] Gallery bar refactoring (#3437)
Prepping for showing people here
2024-09-24 08:55:53 +05:30
Manav Rathi
ae50c83960 Fix 2024-09-24 08:35:50 +05:30
Manav Rathi
c6fdd6352e Add an exception 2024-09-24 08:33:27 +05:30
Manav Rathi
bed57c083c Fix lints 2024-09-24 08:29:59 +05:30
Manav Rathi
cda5caec3f Move 2024-09-24 08:13:15 +05:30
Manav Rathi
01d48b0fcc Rearrange 2024-09-24 08:09:25 +05:30
Manav Rathi
4780f545fe Rearrange 2024-09-24 08:02:56 +05:30
Manav Rathi
80ed1e47b0 Move 2024-09-24 07:58:48 +05:30
Manav Rathi
5c7f775f14 Move 2024-09-24 07:53:21 +05:30
Manav Rathi
7ff5d40152 wip: checkpoint 2024-09-24 07:14:21 +05:30
Manav Rathi
b4dbd942ab wip: checkpoint 2024-09-24 07:03:05 +05:30
Manav Rathi
627a53428a wip: checkpoint 2024-09-24 06:48:46 +05:30
Manav Rathi
35581099fc New order 2024-09-24 05:35:09 +05:30
Manav Rathi
e62dfe0a07 Unenum 2024-09-24 04:59:29 +05:30
Manav Rathi
21ae075674 Move 2024-09-24 04:51:06 +05:30
Manav Rathi
2660cee263 Rename 2024-09-24 04:49:08 +05:30
Manav Rathi
2ae8a11138 Rename 2024-09-24 04:48:09 +05:30
Crowdin Bot
70c62a62a6 New Crowdin translations by GitHub Action 2024-09-23 23:10:26 +00:00
Manav Rathi
a43599aad2 [web] Empty state tweaks (#3432)
- Stay on empty albums after ops
- Modify empty state message
2024-09-24 04:39:35 +05:30
Manav Rathi
5bcce4d610 Modify empty state message 2024-09-24 04:34:03 +05:30
Manav Rathi
d61d9b95ad Stay on empty albums
Change the behaviour to stay on the empty album (instead of automatically
jumping to all) even after all files have been deleted/moved from it. Use case
is that I might want to upload new ones.
2024-09-24 04:33:14 +05:30
Connor McCurdy
682d97f15a Delete auth/assets/custom-icons/icons/drop.svg
Removed drop logo that was added in initial commit
2024-09-23 11:04:14 -05:00
Connor McCurdy
46b210c600 Removed drop
Realized it's a dead platform
2024-09-23 10:59:47 -05:00
Manav Rathi
4f5f90259d [web] More refactoring, prepping for the people bar (#3430) 2024-09-23 20:53:18 +05:30
Manav Rathi
d8d5e62888 deprecate half 2024-09-23 20:40:06 +05:30
Manav Rathi
2cef85dfd9 new 2024-09-23 20:36:07 +05:30
Manav Rathi
31ef1e4e29 Genericize 2024-09-23 20:24:02 +05:30
Manav Rathi
952e9254b4 rearrange 2024-09-23 20:06:37 +05:30
Manav Rathi
8e7ec58f45 rearrange 2024-09-23 19:58:45 +05:30
Manav Rathi
7422568093 rearrange 2024-09-23 19:48:29 +05:30
Manav Rathi
39b09abc50 person 2024-09-23 19:35:20 +05:30
Manav Rathi
8b3315e85f Cleanup 2024-09-23 19:26:08 +05:30
Manav Rathi
19273927d1 wip: checkpoint 2024-09-23 19:17:07 +05:30
Manav Rathi
374625f5b3 Use a callback ref so that it's always updated
https://legacy.reactjs.org/docs/hooks-faq.html#how-can-i-measure-a-dom-node
2024-09-23 19:03:13 +05:30
Manav Rathi
2fae026a77 Make sure types are at the latest 2024-09-23 19:02:23 +05:30
Manav Rathi
01488be836 wip: checkpoint 2024-09-23 17:28:11 +05:30
Manav Rathi
953c915508 Tweak 2024-09-23 17:20:53 +05:30
Manav Rathi
9a0ea3ac43 Match the event name 2024-09-23 16:59:39 +05:30
Manav Rathi
42d36b35d2 [web] Exif fixes and improvements (#3426) 2024-09-23 16:18:18 +05:30
Manav Rathi
630b6d4101 Fail the upload of file instead of adding malformed metadata
Mobile app crash

 [DiffFetcher] [SEVERE] [2024-09-14 01:03:33.632159] type 'List<dynamic>' is not a subtype of type 'int?'
⤷ type: _StackTrace
⤷ error: #0      PubMagicMetadata.fromMap (package:photos/models/metadata/file_magic.dart:91)

ce5354e19d/mobile/lib/models/metadata/file_magic.dart (L91)
2024-09-23 15:44:23 +05:30
Manav Rathi
72ba8bcd64 Fix crash on viewing exif with the following data:
{
    "tags": {
        "icc": {
            "value": {
                "en-US": "Camera RGB Profile",
                ...
                "zh-CN": "?? RGB ????"
            },
            "description": {
                "en-US": "Camera RGB Profile",
                "es-ES": "Perfil RGB para CÔøΩmara",
                ...
                "zh-CN": "?? RGB ????"
            }
        }
    }
}
2024-09-23 15:30:58 +05:30
Manav Rathi
93f753fdff [web] Live photo clubbing improvements (#3422) 2024-09-23 15:12:24 +05:30
Aman Raj Singh Mourya
27defa92c2 [auth] extract strings 2024-09-23 15:12:15 +05:30
Aman Raj Singh Mourya
6ba9ed9f8d [auth] authentication to view passkey 2024-09-23 15:11:20 +05:30
Manav Rathi
6c5c3131f5 Handle tz 2024-09-23 14:39:34 +05:30
Neeraj Gupta
bb23c750a5 [mob] Discover improvements (#3421)
## Description

## Tests
2024-09-23 14:38:16 +05:30
Neeraj Gupta
c036c8c7ba [mob] Bump version 2024-09-23 14:34:35 +05:30
Neeraj Gupta
6464bf172f refactor 2024-09-23 14:30:40 +05:30
Neeraj Gupta
46e6af660e [mob] Log to match count for magicSearch 2024-09-23 14:29:02 +05:30
Neeraj Gupta
b18d987ba2 [mob] Upgrade discover results more frequently 2024-09-23 14:26:31 +05:30
Manav Rathi
6b12f0a595 Fix 2024-09-23 13:59:48 +05:30
connor
40b2b725b4 [auth] Added and updated icons 2024-09-23 03:20:45 -05:00
Manav Rathi
00346db9f9 Add GT special case 2024-09-23 13:45:33 +05:30
Manav Rathi
78826d7782 Keep the JSON avail in the top leevl fn 2024-09-23 13:40:04 +05:30
Manav Rathi
31f591c28f Move 2024-09-23 13:35:18 +05:30
Manav Rathi
0b0d8bd026 Rename 2024-09-23 13:30:39 +05:30
Manav Rathi
76e4d535b4 [desktop] People bar - WIP - Part x/x (#3418) 2024-09-23 13:11:15 +05:30
Neeraj Gupta
7f00b2619e [auth] New translations (#3414)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-09-23 11:54:58 +05:30
Manav Rathi
6a592af94a tweak 2024-09-23 11:50:54 +05:30
Neeraj Gupta
bea6e8b473 [auth] Make compact mode default & minor fixes (#3416)
## Description

## Tests
2024-09-23 11:48:56 +05:30
Neeraj Gupta
7cfdd6ec55 [mob] Safe parse h/w from public magicMetadata (#3417)
## Description

## Tests
2024-09-23 11:48:31 +05:30
Manav Rathi
b97cf93c12 wip: checkpoint 2024-09-23 11:48:25 +05:30
Manav Rathi
2865113c4d wip: checkpoint 2024-09-23 11:42:49 +05:30
Neeraj Gupta
ee1dbd7e84 Safe parse h/w from public magicMetadata 2024-09-23 11:42:15 +05:30
Neeraj Gupta
5a21c932df Lint fix 2024-09-23 11:29:45 +05:30
Manav Rathi
c4021a82f5 Help out tsc
Ref: https://stackoverflow.com/questions/45555748/assign-to-union-type-in-typescript
2024-09-23 11:29:04 +05:30
Neeraj Gupta
6e209a68e2 [mobile] New translations (#3413)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-09-23 11:27:18 +05:30
Neeraj Gupta
090e2f235b Update auth faq.md (#3415)
## Description

## Tests
2024-09-23 11:26:04 +05:30
Neeraj Gupta
a536d6af63 auth: show action button to update windows cert 2024-09-23 11:25:36 +05:30
Manav Rathi
53cf029f00 wip: checkpoint 2024-09-23 11:20:31 +05:30
Neeraj Gupta
48d6c2d008 [auth] Use web for FAQ 2024-09-23 11:12:52 +05:30
Manav Rathi
28095ca935 Extract 2024-09-23 11:04:00 +05:30
Manav Rathi
d31d7592cb Use standard memo
Too many renders for this component (both before and after):
- page load - 23
- click - 6
2024-09-23 10:57:12 +05:30
Neeraj Gupta
7645ec0e24 Update auth faq.md 2024-09-23 10:38:38 +05:30
Neeraj Gupta
5c0fe9c411 [auth] Use help website for FAQ 2024-09-23 10:31:31 +05:30
Manav Rathi
80416d5b90 tweak 2024-09-23 10:11:20 +05:30
Manav Rathi
9ce432681e Reorder 2024-09-23 10:08:29 +05:30
Manav Rathi
e91cddbc25 Restore clickable header 2024-09-23 09:58:38 +05:30
Neeraj Gupta
a37dcceb41 [auth] Enable compact mode by default 2024-09-23 09:44:11 +05:30
Manav Rathi
aa31e4354c [web] New translations (#3411)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-23 09:11:53 +05:30
Crowdin Bot
a92115ffb1 New Crowdin translations by GitHub Action 2024-09-23 01:17:18 +00:00
Crowdin Bot
7f0d028b55 New Crowdin translations by GitHub Action 2024-09-23 01:04:53 +00:00
Crowdin Bot
628edf713b New Crowdin translations by GitHub Action 2024-09-23 00:33:54 +00:00
Neeraj Gupta
4f74470abe [auth] Minor fixes (#3403)
## Description

## Tests
2024-09-22 22:32:22 +05:30
Neeraj Gupta
b5ad13ee69 [auth] Add device auth check for passkey 2024-09-22 22:29:07 +05:30
Neeraj Gupta
4383512540 [auth] Minor fix 2024-09-22 22:26:35 +05:30
Neeraj Gupta
59a68b56bc [auth] Improve account name parsing 2024-09-22 22:23:58 +05:30
Neeraj Gupta
09c4b19449 [auth][l10n]: Add Bulgarian translation (#3402)
## Description

## Tests
2024-09-22 22:17:49 +05:30
Crea7orX
d4cd71b56c [auth][l10n]: Add Bulgarian translation 2024-09-22 18:52:19 +03:00
Vishnu Mohandas
a01ea511e9 [docs] Update links to Auth (#3393) 2024-09-22 10:11:45 +05:30
vishnukvmd
ab6f514d23 Update links to Auth 2024-09-21 21:41:25 -07:00
Manav Rathi
b4d8dea2ef [desktop] Add CHANGELOG entry for shared export (#3385)
https://github.com/ente-io/ente/pull/3319
2024-09-21 18:22:19 +05:30
Manav Rathi
2abd0b0588 [desktop] Add CHANGELOG entry for shared export
https://github.com/ente-io/ente/pull/3319
2024-09-21 18:21:23 +05:30
Manav Rathi
dae0492800 [web] Album cast dialog - Non functional tweaks (#3384) 2024-09-21 18:16:44 +05:30
Trekky12
94a8ff2c6f Include exporting of shared files on desktop (#3319)
## Description
This PR adds a new switch on the ExportModal to include export of shared
files.
This should fix https://github.com/ente-io/ente/discussions/2322
2024-09-21 18:14:09 +05:30
Manav Rathi
aae00dcc15 Doc 2024-09-21 17:59:41 +05:30
Manav Rathi
18c7d59f90 Spacing 2024-09-21 17:57:29 +05:30
Manav Rathi
fcf87d237b Spacing 2024-09-21 17:39:28 +05:30
Manav Rathi
f88022730a Regular button works for us 2024-09-21 17:35:37 +05:30
Manav Rathi
753ed30d5c Tinker 2024-09-21 17:25:13 +05:30
Manav Rathi
216be38915 Use same convention for modals 2024-09-21 17:23:17 +05:30
Manav Rathi
164ace9f8c Tinker 2024-09-21 17:17:37 +05:30
Manav Rathi
a97bb195b6 Update docs
We're moving to nanoids
2024-09-21 17:09:39 +05:30
Manav Rathi
9ecb7c4044 Remove unused 2024-09-21 17:04:37 +05:30
Manav Rathi
1895e90b3e Workaround 2024-09-21 17:02:49 +05:30
Manav Rathi
f118a9d2f2 Rename to mirror sender 2024-09-21 16:49:15 +05:30
Manav Rathi
bb5261f73b Tweaks 2024-09-21 16:42:46 +05:30
Manav Rathi
225dade722 Use types 2024-09-21 16:36:08 +05:30
Manav Rathi
c39a3c789d Add types 2024-09-21 16:30:03 +05:30
Manav Rathi
28580cf107 Prune 2024-09-21 16:19:31 +05:30
Manav Rathi
6799ee3832 Prune unused 2024-09-21 16:15:09 +05:30
Manav Rathi
d86df11f15 [web] New translations (#3383)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-21 15:50:35 +05:30
Crowdin Bot
7b04bd548a New Crowdin translations by GitHub Action 2024-09-21 10:19:47 +00:00
Manav Rathi
ffaf4659ce [web] Remove unnecessary translation (#3382)
This title is not adding anything to the dialog
2024-09-21 15:49:02 +05:30
Manav Rathi
8fc38244f3 [web] Remove unnecessary translation
This title is not adding anything to the dialog
2024-09-21 15:48:15 +05:30
Manav Rathi
415cf451a8 [web] New translations (#3380)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-21 15:06:19 +05:30
Crowdin Bot
f4709d3442 New Crowdin translations by GitHub Action 2024-09-21 09:34:20 +00:00
Manav Rathi
0f6c8a6441 [web] Translation cleanup (#3379) 2024-09-21 14:52:01 +05:30
Manav Rathi
f337b1ff36 Move 2024-09-21 14:45:56 +05:30
Manav Rathi
2799652d3a Rename 2024-09-21 14:42:41 +05:30
Manav Rathi
6b92acbb11 Rename 2024-09-21 14:38:37 +05:30
Manav Rathi
a343fe5427 Rename 2024-09-21 14:35:42 +05:30
Manav Rathi
d10e37454d Rename 2024-09-21 14:31:54 +05:30
Manav Rathi
1cb80e619b Rename 2024-09-21 14:31:09 +05:30
Manav Rathi
d307b4bf07 Rename 2024-09-21 14:28:14 +05:30
Manav Rathi
5967f2a66a Rename 2024-09-21 14:25:46 +05:30
Manav Rathi
6e6248a3c2 Rename 2024-09-21 14:23:42 +05:30
Manav Rathi
aff37dc5df Rename 2024-09-21 14:21:21 +05:30
Manav Rathi
b2b4a703ac Rename 2024-09-21 14:17:53 +05:30
Manav Rathi
46f9a16db9 Rename 2024-09-21 14:14:09 +05:30
Manav Rathi
d232c94547 Move 2024-09-21 14:12:36 +05:30
Manav Rathi
dc6217eb7a Rename 2024-09-21 14:11:15 +05:30
Manav Rathi
98123438fa Move 2024-09-21 14:10:29 +05:30
Manav Rathi
4c51c960f2 Rename 2024-09-21 14:07:44 +05:30
Manav Rathi
a89d7e472f Rename 2024-09-21 14:02:53 +05:30
Manav Rathi
ef1b192ced Rename 2024-09-21 14:01:05 +05:30
Manav Rathi
19d82d332c Move 2024-09-21 14:00:14 +05:30
Manav Rathi
0d97355838 Rename 2024-09-21 13:58:57 +05:30
Manav Rathi
04b296587a Move 2024-09-21 13:52:57 +05:30
Manav Rathi
3193778c98 Rename 2024-09-21 13:52:21 +05:30
Manav Rathi
4a7ec88424 Rename 2024-09-21 13:49:56 +05:30
Manav Rathi
201bda3999 Rename 2024-09-21 13:48:24 +05:30
Manav Rathi
50ab94a355 Rename 2024-09-21 13:46:05 +05:30
Manav Rathi
790f34662a Move 2024-09-21 13:44:19 +05:30
Manav Rathi
d0138310dc Rename Rename 2024-09-21 13:43:07 +05:30
Manav Rathi
cb66494924 Rename 2024-09-21 13:33:33 +05:30
Manav Rathi
a322a28e44 Rename 2024-09-21 13:33:01 +05:30
Manav Rathi
a95a21790b Rename 2024-09-21 13:27:37 +05:30
Manav Rathi
e8d0673a9a [web] Collection bar refactoring (#3377)
Prep for showing people here.
2024-09-21 13:23:56 +05:30
Manav Rathi
f8f4db409b Fix lints 2024-09-21 13:18:30 +05:30
Manav Rathi
f4e260cfb3 Inline 2024-09-21 12:46:36 +05:30
Manav Rathi
e605169ac1 Height 2024-09-21 12:42:06 +05:30
Manav Rathi
811fe93dcc Wrap all network ops 2024-09-21 12:31:10 +05:30
Manav Rathi
6d7a6b86f7 Mark unawaited 2024-09-21 12:18:54 +05:30
Manav Rathi
5760b6a56b Reduce boilerplate 2024-09-21 12:16:27 +05:30
Manav Rathi
6b04ef69ed memo
preemptive optimization, might not be necessary
2024-09-21 11:54:05 +05:30
Manav Rathi
2f0d06cad7 Cleanup 2024-09-21 11:52:20 +05:30
Manav Rathi
08ee4e2861 Dedup 2024-09-21 11:49:18 +05:30
Manav Rathi
282b440d0f Cleanup 2024-09-21 11:46:39 +05:30
Manav Rathi
c9e29dbcbe Direct 2024-09-21 11:39:31 +05:30
Manav Rathi
ca62fb5105 Direct 2024-09-21 11:35:17 +05:30
Manav Rathi
58ca0a5cd4 Direct 2024-09-21 11:32:14 +05:30
Neeraj Gupta
3ef7185166 [doc] Update Referral.md (#3375)
## Description

## Tests
2024-09-21 11:26:08 +05:30
Manav Rathi
b92e9f4c6e Direct 2024-09-21 11:26:07 +05:30
Manav Rathi
2f2eb4e265 Reify 2024-09-21 11:23:49 +05:30
Manav Rathi
17aa385782 Reify 2024-09-21 11:22:59 +05:30
Neeraj Gupta
0ac6ea9af8 [doc] Update Referral.md 2024-09-21 11:14:49 +05:30
Manav Rathi
fce4c9869e Reify 2024-09-21 11:05:04 +05:30
Manav Rathi
1eca25b050 Reify 2024-09-21 11:01:13 +05:30
Manav Rathi
47a0ee749e wrap 2024-09-21 10:56:50 +05:30
Manav Rathi
1c86a69cd6 Use 2024-09-21 10:53:49 +05:30
Manav Rathi
ce8310c874 Reify 2024-09-21 10:50:08 +05:30
Manav Rathi
e607b4e3ed Reify 2024-09-21 10:30:37 +05:30
Manav Rathi
498a4dcd4e Reify 2024-09-21 10:28:53 +05:30
Manav Rathi
624726734f Reify 2024-09-21 10:25:46 +05:30
Neeraj Gupta
4b4350c107 [mob] Fix various issues from bug tracking tool (#3362)
## Description

## Tests
2024-09-21 10:22:47 +05:30
Manav Rathi
ecb785d75c Rename 2024-09-21 10:17:41 +05:30
Manav Rathi
2c1637c55c Reify 2024-09-21 10:16:17 +05:30
Neeraj Gupta
31f210da31 [mob] Fix 2024-09-21 10:10:59 +05:30
Manav Rathi
777f298ca3 Less noise 2024-09-21 09:43:06 +05:30
Neeraj Gupta
c5c86c484e Merge remote-tracking branch 'origin/main' into cleanup_config 2024-09-21 09:41:34 +05:30
Neeraj Gupta
e9b3e76b50 [mob] Bump version v0.9.43 2024-09-21 09:40:57 +05:30
Manav Rathi
15e31f1763 Unwrap a component that has no logic 2024-09-21 09:40:48 +05:30
Neeraj Gupta
fffebec025 [mob] Fix sub price order 2024-09-21 09:40:29 +05:30
Manav Rathi
35957b1f40 Position the spinner better 2024-09-21 09:39:17 +05:30
Manav Rathi
6ee7500011 Inline and reify 2024-09-21 09:32:08 +05:30
Neeraj Gupta
803195afdd [mob] Fix lint 2024-09-21 09:17:24 +05:30
Manav Rathi
2c23c3463e Reify 2024-09-21 09:15:35 +05:30
Manav Rathi
39c5a3f1bd Reify 2024-09-21 09:09:27 +05:30
Manav Rathi
c625593162 Fwd 2024-09-21 09:03:20 +05:30
Manav Rathi
5864648c24 Abstract 2024-09-21 08:59:26 +05:30
Manav Rathi
b605e41f9e Wrap 2024-09-21 08:50:49 +05:30
Manav Rathi
ffc082eec4 3 2024-09-21 08:44:02 +05:30
Manav Rathi
692e12979b Remove args from handler 2024-09-21 08:32:22 +05:30
Manav Rathi
9ff6a79ada Unex 2024-09-21 08:14:56 +05:30
Manav Rathi
530ae6c0be Up 2024-09-21 08:14:00 +05:30
Manav Rathi
1aab753046 Inline 2024-09-21 08:13:10 +05:30
Manav Rathi
3e131464e6 Pl 2024-09-21 08:11:52 +05:30
Manav Rathi
1aa940d410 Inline 2024-09-21 08:11:10 +05:30
Manav Rathi
33bc19978c Inline 2024-09-21 08:09:41 +05:30
Manav Rathi
4670c1d712 Inline 2024-09-21 08:08:24 +05:30
Manav Rathi
ff32e6852e Inline 2024-09-21 08:06:19 +05:30
Manav Rathi
b39e727e0a Move 2024-09-21 08:03:54 +05:30
Manav Rathi
2a1931157c Doc 2024-09-21 07:57:35 +05:30
Manav Rathi
15370fa731 Rename Fin 2024-09-21 07:54:17 +05:30
Manav Rathi
b65a7055c1 Rename 2 2024-09-21 07:28:33 +05:30
Manav Rathi
1a336769b9 Rename 1 2024-09-21 07:15:39 +05:30
Manav Rathi
aa6eebca27 Inline 2024-09-21 07:13:15 +05:30
Manav Rathi
c41ad8b1a9 Inline 2024-09-21 07:13:07 +05:30
Manav Rathi
9ca651f4b7 Inline 2024-09-21 07:11:44 +05:30
Manav Rathi
255302e3cd Inline 2024-09-21 07:10:38 +05:30
Manav Rathi
a4fa8e0deb Inline 2024-09-21 07:09:30 +05:30
Manav Rathi
ffa1d90ed8 Inline 2024-09-21 07:08:31 +05:30
Manav Rathi
ef6734195f Inline 2024-09-21 07:05:31 +05:30
Manav Rathi
50a0dc754b Inline 2024-09-21 07:02:51 +05:30
Neeraj Gupta
19eb1bdb22 [cli] Handle decryption for new libsodium wrapper (#3374)
## Description

## Tests
2024-09-21 06:51:49 +05:30
Neeraj Gupta
f11493842e [cli] Handle decryption for new libsodium wrapper 2024-09-21 06:50:33 +05:30
Manav Rathi
b7a8e33665 Tweak 2024-09-21 06:41:30 +05:30
Manav Rathi
abce21d819 Move 2024-09-21 06:17:12 +05:30
Manav Rathi
2db43536f7 Doc 2024-09-21 05:59:44 +05:30
Manav Rathi
ee685bcc5d Rearrange 2024-09-21 05:47:49 +05:30
Manav Rathi
6a489ad520 wip: checkpoint 2024-09-20 20:24:11 +05:30
Manav Rathi
3c61b49548 checkpoint 2024-09-20 18:49:29 +05:30
Manav Rathi
6a24528ed0 wip: checkpoint 2024-09-20 18:36:09 +05:30
Manav Rathi
ebc40d1b65 checkpoint 2024-09-20 18:11:08 +05:30
Manav Rathi
405c0c343f [desktop] Clustering WIP - Part x/x (#3364)
The sync scaffolding is mostly in place now.
2024-09-20 17:52:57 +05:30
Neeraj Gupta
f8b77f71b5 [mob] Add is mounted check 2024-09-20 17:47:45 +05:30
Manav Rathi
ed907c71f8 Let tsc know 2024-09-20 17:45:49 +05:30
Neeraj Gupta
94513e8c8e [mob] Compute relevant position for magic search 2024-09-20 17:38:01 +05:30
Neeraj Gupta
f3e98cff34 [mob] Fix handling of empty fileIDToPosMap 2024-09-20 17:31:39 +05:30
Neeraj Gupta
49e7c4baaf Add mount check 2024-09-20 17:24:37 +05:30
Ashil
29a72ac4a1 [auth] Add onPressed color for Custom Keyboard in App Lock (#3361)
## Description

## Tests
2024-09-20 17:23:58 +05:30
Manav Rathi
2722b50cc0 Sequence 2024-09-20 17:22:29 +05:30
Aman Raj Singh Mourya
36079aa2dc [auth] Add onPressed color for Custom Keyboard in App Lock 2024-09-20 17:20:46 +05:30
Aman Raj Singh Mourya
891af00454 [mob][photos] Add onPressed State Color for Custom Keyboard in App Lock (#3360)
## Description

## Tests
2024-09-20 17:03:16 +05:30
Aman Raj Singh Mourya
783c0c48ef [mob][photos] On press color for custom keyboard 2024-09-20 16:50:32 +05:30
Manav Rathi
ed1c9df007 Funnel the same way 2024-09-20 16:50:02 +05:30
Manav Rathi
f64c0dcc86 Move into worker for now 2024-09-20 16:13:49 +05:30
Manav Rathi
9d1332bff1 Prune 2024-09-20 16:04:22 +05:30
Manav Rathi
000fe87ebb Prune unused 2024-09-20 16:00:59 +05:30
Neeraj Gupta
6e0990d658 Merge branch 'main' into f-droid 2024-09-20 15:56:08 +05:30
Manav Rathi
6344a3c640 bona fide 2024-09-20 15:55:46 +05:30
Manav Rathi
18a0b18a13 Auto debug 2024-09-20 15:47:40 +05:30
Neeraj Gupta
d4cdfc8834 [mob] HotFix: Show discover section for all users (#3358)
## Description

## Tests
2024-09-20 15:37:34 +05:30
Neeraj Gupta
aa2b81ad7e [mob] HotFix: Show discover section for all users 2024-09-20 15:36:45 +05:30
Manav Rathi
df17b11573 Make the animation fit the page better 2024-09-20 15:33:01 +05:30
Neeraj Gupta
4da4261f4c Update flutter to 3.24.3 2024-09-20 15:00:23 +05:30
Neeraj Gupta
0abe66ea8c Merge branch 'main' into f-droid 2024-09-20 14:49:17 +05:30
Manav Rathi
8ca3b80e94 Match the (temp) search placeholder message 2024-09-20 14:00:53 +05:30
Manav Rathi
345cc2f34f Fix the UI updates 2024-09-20 14:00:53 +05:30
Manav Rathi
c4f70c370e Integrate clustering progress into ML status 2024-09-20 14:00:53 +05:30
Manav Rathi
e8b692b5ad Prep for clustering updates 2024-09-20 14:00:53 +05:30
Manav Rathi
7b552a1ee3 count 2024-09-20 14:00:53 +05:30
Manav Rathi
5d6ac29d71 Remove no-longer used hdbscan code
We'll follow mobile's linear clustering.
2024-09-20 14:00:52 +05:30
Manav Rathi
8a031360c5 Remove the debug scaffolding 2024-09-20 14:00:52 +05:30
Vishnu Mohandas
c9fd0183e7 [doc] Document limitations (#3356) 2024-09-20 11:52:53 +05:30
vishnukvmd
6753f1e9f7 [doc] Document limitations 2024-09-19 23:11:29 -07:00
Manav Rathi
806098961b [web] Transcode videos if they are smaller than 100 MB (#3355)
Fixes: https://github.com/ente-io/ente/issues/2581
2024-09-20 11:29:56 +05:30
Manav Rathi
21e45e8138 [web] Transcode videos if they are smaller than 100 MB
Fixes: https://github.com/ente-io/ente/issues/2581
2024-09-20 11:04:21 +05:30
Vishnu Mohandas
1de1273391 Update export.md 2024-09-20 00:14:52 +05:30
Manav Rathi
8ea7481a98 [desktop] Cgroups WIP - Part x/x (#3353) 2024-09-19 20:55:29 +05:30
Manav Rathi
12da709445 lf 2024-09-19 20:50:16 +05:30
Manav Rathi
5c601ab2cc We no longer have a maxHeight 2024-09-19 20:45:24 +05:30
Manav Rathi
87bdab027e Snapshot 2024-09-19 20:45:24 +05:30
Manav Rathi
50f4878d0f Doc 2024-09-19 20:45:24 +05:30
Manav Rathi
523336d644 Unalias 2024-09-19 20:45:24 +05:30
Manav Rathi
4b7104bf4e Inline 2024-09-19 20:45:24 +05:30
Manav Rathi
6a8ca4c2cf Inline 2024-09-19 20:45:24 +05:30
Manav Rathi
2e6c7d29e4 Inline 2024-09-19 20:45:24 +05:30
Manav Rathi
b7f86b3e89 T 2024-09-19 20:45:24 +05:30
Manav Rathi
384b4d2c35 [infra] Copycat db - Include pg_restore (#3352) 2024-09-19 20:39:04 +05:30
Manav Rathi
e6d7d2298c Update 2024-09-19 20:38:27 +05:30
Manav Rathi
6139ed45cd Revert "Remove postgres dep not needed in production"
This reverts commit e695f2eccb.
2024-09-19 20:33:42 +05:30
Manav Rathi
6662f51a5f [deskop] People WIP - Part x/x (#3351) 2024-09-19 18:30:08 +05:30
Manav Rathi
1108fa9f79 fix npe 2024-09-19 18:26:38 +05:30
Manav Rathi
2b02ea7409 filter 2024-09-19 18:26:19 +05:30
Manav Rathi
cdca58eb3c Tweak 2024-09-19 18:07:02 +05:30
Manav Rathi
0381dee786 buttons 2024-09-19 17:56:26 +05:30
Manav Rathi
1c727131ad Use a button 2024-09-19 17:22:00 +05:30
Manav Rathi
944070eb23 The blur is needed 2024-09-19 17:19:29 +05:30
Manav Rathi
f2b86ff1e1 Propagate 2024-09-19 17:19:29 +05:30
Manav Rathi
a14160f799 Person mode - 1 2024-09-19 17:19:29 +05:30
Manav Rathi
dcca546e5a [meta] [infra] Rename workflow file to use same extension as the rest (#3350) 2024-09-19 17:15:26 +05:30
Manav Rathi
bb0bdf113e [meta] [infra] Rename workflow file to use same extension as the rest 2024-09-19 17:13:11 +05:30
Manav Rathi
a323c7b31b [infra] copycat-db: update deps (#3349) 2024-09-19 17:11:36 +05:30
Manav Rathi
2d46b70d8f Update to latest scw 2024-09-19 17:10:39 +05:30
Manav Rathi
e695f2eccb Remove postgres dep not needed in production 2024-09-19 17:07:40 +05:30
Manav Rathi
1942935c3c [web] Show the focus-visible state on delete autofocus (#3348) 2024-09-19 17:01:02 +05:30
Manav Rathi
cef85ddd9f Add outline offset to the focus-visible indicator 2024-09-19 16:56:09 +05:30
Manav Rathi
341ef58970 Fix focus visible on opening dialog 2024-09-19 16:53:00 +05:30
Neeraj Gupta
983cfe4482 [mob][photos] Remove trigger to send logs from grant permissions screen (#3345)
## Description

This was added to debug an issue. The issue is resolved, so removing it.
2024-09-19 15:36:55 +05:30
Neeraj Gupta
2ae23dfa3d [docs] Update auth export.md (#3347)
## Description

## Tests
2024-09-19 15:25:28 +05:30
Neeraj Gupta
b269fddac2 Update export.md 2024-09-19 15:24:21 +05:30
Manav Rathi
ca5be3518b [server] Postgres 12 => 15 in sample docker compose file (+ add migration guide) (#3342) 2024-09-19 15:13:13 +05:30
ashilkn
b85a90e5dd [mob][photos] Remove unused debouncer 2024-09-19 14:36:41 +05:30
ashilkn
a4c47ffbd4 [mob][photos] Remove trigger to send logs from grand permissions screen 2024-09-19 14:33:58 +05:30
Neeraj Gupta
4ee9815971 [server] Increase waittime on delete error (#3344)
## Description

## Tests
2024-09-19 11:56:28 +05:30
Neeraj Gupta
5f873a0f7b Increase waittime on error 2024-09-19 11:55:54 +05:30
Neeraj Gupta
d02da225f8 [server] Slow down crons (#3343)
## Description

## Tests
2024-09-19 11:50:22 +05:30
Neeraj Gupta
a8c7dd52ba [server] Slow down crons 2024-09-19 11:49:48 +05:30
Manav Rathi
84900159ae Fix typos 2024-09-19 10:34:07 +05:30
Manav Rathi
6ed0ad806e pg 15 2024-09-19 10:30:58 +05:30
Manav Rathi
c1b6458e2e [web/desktop] Make images on deduplicate selectable (#3333)
The duplicate images page has a image preselected but there is no
checkbox available.
When unselecting this image there is no possibility to do a new
selection.

This PR adds the same checkbox like on the gallery to select images on
the deduplication page.
2024-09-19 09:52:58 +05:30
Neeraj Gupta
a7cc96d994 Bump auth version (#3341)
## Description

## Tests
2024-09-19 07:00:23 +05:30
Neeraj Gupta
2a483edbe4 Bump auth version 2024-09-19 06:59:56 +05:30
Neeraj Gupta
428d786f10 [infra] Use JAVA 17 for auth release workflow (#3340)
## Description

## Tests
2024-09-19 06:59:05 +05:30
Neeraj Gupta
7d66b4c29f Use JAVA 17 for auth release workflow 2024-09-19 06:58:27 +05:30
Neeraj Gupta
fa7c417e69 [cli] Bump version (#3339)
## Description

## Tests
2024-09-19 01:21:29 +05:30
Neeraj Gupta
affb9bb783 [cli] Bump version 2024-09-19 01:20:56 +05:30
Neeraj Gupta
8d737f79b5 [auth] Bump version v3.1.8 (#3337)
## Description

## Tests
2024-09-19 01:15:04 +05:30
Neeraj Gupta
41b20a6b48 [auth] Bump version v3.1.8 2024-09-19 01:14:30 +05:30
Neeraj Gupta
fcd1554f7c [mobile] New translations (#3336)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-09-19 01:12:35 +05:30
Neeraj Gupta
fe37bb5544 [auth] New translations (#3335)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-09-19 01:12:09 +05:30
Crowdin Bot
6493e54db9 New Crowdin translations by GitHub Action 2024-09-18 19:41:45 +00:00
Crowdin Bot
d23cab124e New Crowdin translations by GitHub Action 2024-09-18 19:41:36 +00:00
Neeraj Gupta
ee0ebe8602 [cli] Add support for exporting Ente authenticator codes (#3328)
## Description

## Tests
2024-09-19 01:09:18 +05:30
Trekky12
53b7ea6203 Make images on deduplicate selectable
The duplicate images page has a image preselected but there is no
checkbox available.
When unselecting this image there is no possibility to do a new
selection.

This commit adds the same checkbox like on the gallery to select images
on the deduplication page.
2024-09-18 19:50:08 +02:00
Manav Rathi
a9da87881d [web] Show checkbox on hover (#3330)
Fixes: https://github.com/ente-io/ente/issues/3293
2024-09-18 19:07:24 +05:30
Manav Rathi
89815d47ff [web] Show checkbox on hover
Fixes: https://github.com/ente-io/ente/issues/3293
2024-09-18 19:02:09 +05:30
Manav Rathi
2cc1573b1b [desktop] Cluster groups WIP - Part x/x (#3329) 2024-09-18 18:53:56 +05:30
Manav Rathi
160565f216 Fix 2024-09-18 18:27:47 +05:30
Manav Rathi
6f84371cfa Tweak 2024-09-18 18:23:36 +05:30
Manav Rathi
7c07c8dadb Tweak 2024-09-18 18:02:04 +05:30
Manav Rathi
27c191eaf1 [web] Cluster groups WIP, and search improvements (#3327) 2024-09-18 17:52:42 +05:30
Neeraj Gupta
6872587083 [cli] Add support for exporting codes 2024-09-18 17:36:24 +05:30
Manav Rathi
bc7f4fd9fc Fix 2024-09-18 17:12:10 +05:30
Manav Rathi
7bf37c2800 Unsearchable 2024-09-18 17:09:38 +05:30
Manav Rathi
215126f695 Include underscores 2024-09-18 17:02:54 +05:30
Manav Rathi
0aad23d860 RE everywhere 2024-09-18 16:57:43 +05:30
Manav Rathi
34762cc303 re 2024-09-18 16:45:51 +05:30
Manav Rathi
b254bb5b0c Word match 2024-09-18 16:32:30 +05:30
Manav Rathi
c80a066518 Use 2024-09-18 16:20:43 +05:30
Manav Rathi
00ffe8f129 People b4 clip 2024-09-18 16:15:07 +05:30
Manav Rathi
70ee3e3fbe lf 2024-09-18 16:15:07 +05:30
Manav Rathi
f37f807045 checkpoint 2024-09-18 16:15:07 +05:30
Manav Rathi
6254fe032b wip checkpoint 2024-09-18 16:15:07 +05:30
Manav Rathi
63138a539a wip checkpoint 2024-09-18 16:15:07 +05:30
Manav Rathi
37765169a4 Integrate 2024-09-18 16:15:07 +05:30
Manav Rathi
b7a45b4327 Match server schema 2024-09-18 16:15:07 +05:30
Manav Rathi
1521971a5d Place 2024-09-18 16:15:07 +05:30
Manav Rathi
d62ca44675 Impl details 2024-09-18 16:15:07 +05:30
Manav Rathi
02c428971c Untrig 2024-09-18 16:15:07 +05:30
Manav Rathi
beabb4815b Tweak search cards 2024-09-18 16:15:07 +05:30
Manav Rathi
87f9537bb2 Untrig 2024-09-18 16:15:06 +05:30
Manav Rathi
69a5795c86 Await not trigger 2024-09-18 16:15:06 +05:30
Manav Rathi
212ab374ac Set cgroups 2024-09-18 16:15:06 +05:30
Manav Rathi
dc23c7eebd searchable cgroups 2024-09-18 16:15:06 +05:30
Manav Rathi
31459d9339 Namespace 2024-09-18 16:15:06 +05:30
Neeraj Gupta
5cc4a5ed07 Print custom host with version 2024-09-18 16:07:05 +05:30
Neeraj Gupta
cda7dda3cb [cli] Add API to get authenticator data 2024-09-18 16:06:45 +05:30
Neeraj Gupta
6b831378ba [mobile] New translations (#3325)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-09-18 15:10:09 +05:30
Crowdin Bot
49b34bdb19 New Crowdin translations by GitHub Action 2024-09-18 09:37:29 +00:00
Neeraj Gupta
bf17902e73 [mob] Change log (#3324)
## Description

## Tests
2024-09-18 14:55:38 +05:30
Neeraj Gupta
3fa85b4ce9 [mob] Bump version v0.9.41 2024-09-18 14:50:42 +05:30
Neeraj Gupta
8b4d38a50a [mob] Add change log 2024-09-18 14:50:17 +05:30
Neeraj Gupta
57e2ff4908 Fix typo 2024-09-18 14:45:19 +05:30
Neeraj Gupta
f890f612f4 [mob] Extract strings (#3323)
## Description

## Tests
2024-09-18 12:49:46 +05:30
Neeraj Gupta
038a40b320 Lint fix 2024-09-18 12:46:44 +05:30
Neeraj Gupta
5fa05e3406 Extract strings 2024-09-18 12:39:38 +05:30
Neeraj Gupta
3577b1f213 Lint 2024-09-18 12:16:15 +05:30
Neeraj Gupta
9df36a50bf [mob] Minor fixes for discover (#3320)
## Description

## Tests
2024-09-18 12:06:03 +05:30
Neeraj Gupta
7e16f4f5be [mob] bump version v0.9.40 2024-09-18 12:05:44 +05:30
Neeraj Gupta
30b508fa56 [mob] Enable discover for all 2024-09-18 12:05:13 +05:30
Neeraj Gupta
d308eb9274 [mob] Fix ordering for discover results 2024-09-18 12:04:27 +05:30
Neeraj Gupta
b4c6805d42 [mob] Support for force refresh 2024-09-18 11:52:03 +05:30
Neeraj Gupta
9c1f744f73 [mob] Switch to list for maintaining order 2024-09-18 11:42:54 +05:30
Neeraj Gupta
5ce1a91146 [server] Remove timelimit for applying referral code (#3322)
## Description

## Tests
2024-09-18 11:22:48 +05:30
Neeraj Gupta
41512540e4 [server] Remove timelimit for applying referral code 2024-09-18 11:20:15 +05:30
ashilkn
2c4dd13ab0 [mob][photos] Update magic section UI when magic cache gets updated 2024-09-18 09:17:17 +05:30
Neeraj Gupta
637974f63b [mob] Fix showRecent handling in all page 2024-09-18 00:27:56 +05:30
Neeraj Gupta
70fdfb6901 [mob] Discover changes (#3315)
## Description

## Tests
2024-09-17 23:53:22 +05:30
Neeraj Gupta
4e7d9ed7d9 [mob][photos] Fix grey screen flash from late initialisation error right after granting photo and video permission on logging in (#3316) 2024-09-17 20:59:54 +05:30
Neeraj Gupta
5da924f7e4 [mob][photos] Added dark theme assets for empty album state (#3318) 2024-09-17 20:50:21 +05:30
Aman Raj Singh Mourya
2988767f97 [mob][photos] minor changes 2024-09-17 20:46:29 +05:30
Aman Raj Singh Mourya
232d02a990 [mob][photos] assets for empty album state in dark theme 2024-09-17 20:46:00 +05:30
Manav Rathi
df13dd2bfc [desktop] People - Part x/x (#3317) 2024-09-17 20:33:49 +05:30
Manav Rathi
18a7fce523 Cleanup 2024-09-17 20:23:52 +05:30
Manav Rathi
c03b3fd203 Clickable 2024-09-17 20:13:59 +05:30
ashilkn
42ce7a0d39 [mob][photos] Fix grey screen flash from late initialisation error right after granting photo and video permission on logging in 2024-09-17 18:12:43 +05:30
Manav Rathi
bcd1fd0cc8 People list - 1 2024-09-17 17:49:51 +05:30
Neeraj Gupta
e799843c59 bump version 2024-09-17 17:46:10 +05:30
Neeraj Gupta
fff633aebe [mob] Keep json sorting for discover 2024-09-17 17:40:26 +05:30
Neeraj Gupta
63144d50fc [mob] Hook refresh for discover section 2024-09-17 17:32:40 +05:30
Manav Rathi
0431493736 Fix sizing on mobile screens and long search texts 2024-09-17 17:24:40 +05:30
Neeraj Gupta
7d647cf4f1 [mob] Only run clustering if needed 2024-09-17 17:13:43 +05:30
Neeraj Gupta
e66c4390bb [mob] Fix delay 2024-09-17 17:09:00 +05:30
Neeraj Gupta
df44e6d1a9 [mob] Fix delay 2024-09-17 16:53:44 +05:30
Neeraj Gupta
fd29a982cc [mob] Support for showing recent first in discover 2024-09-17 16:47:17 +05:30
Neeraj Gupta
6720f16ceb [mob] Support for excluding video in discover 2024-09-17 16:38:54 +05:30
Manav Rathi
8685bae282 Introduce 2024-09-17 16:34:17 +05:30
Neeraj Gupta
72c1d83714 [mob] Inline 2024-09-17 16:25:17 +05:30
Neeraj Gupta
bf65faef33 [mob] Log query in debug mode only 2024-09-17 16:22:27 +05:30
Neeraj Gupta
29503a077d [mob] Optimize cache update 2024-09-17 16:18:42 +05:30
Neeraj Gupta
f2f332062f [mob] Rename 2024-09-17 16:12:08 +05:30
Neeraj Gupta
e79e932014 [mob] Speed up computation of discover section 2024-09-17 16:06:08 +05:30
Manav Rathi
f5dba2f36e [web] Show empty albums also (#3313)
Matches the behaviour on mobile.
2024-09-17 16:04:28 +05:30
Manav Rathi
9f92787ac6 [web] Show empty albums also
Matches the behaviour on mobile.
2024-09-17 15:57:21 +05:30
Neeraj Gupta
66c3870518 [mob] Cache magic result in memory 2024-09-17 15:47:26 +05:30
Neeraj Gupta
98e0aeee8a [mob] Log time taken to get all results 2024-09-17 15:22:03 +05:30
Neeraj Gupta
785cac2c70 [mob] Define modal for remote prompt 2024-09-17 15:03:30 +05:30
Neeraj Gupta
258c47eba4 [mob] Clean up 2024-09-17 14:41:08 +05:30
Neeraj Gupta
466ec23248 [mob] Add debug option to update cache 2024-09-17 14:31:21 +05:30
Neeraj Gupta
3c7b8fd0e8 [mob] Used computer to read prompt 2024-09-17 14:31:10 +05:30
Vishnu Mohandas
6a1021c353 [auth] Change ordering for menu items (#3309) 2024-09-17 13:11:16 +05:30
vishnukvmd
6e07aacc3f [auth] Change ordering for menu items 2024-09-17 13:10:49 +05:30
Neeraj Gupta
454f498a7c [auth] Reduce code sharing duration + minor fixes (#3308)
## Description

## Tests
2024-09-17 11:55:08 +05:30
Neeraj Gupta
9169b344fb Lint fix 2024-09-17 11:45:31 +05:30
Neeraj Gupta
13e6c982a6 [auth] Bump version 2024-09-17 11:41:59 +05:30
Neeraj Gupta
3d096311f4 [auth] Reduce code sharing duration 2024-09-17 11:41:05 +05:30
Neeraj Gupta
a97dddf8e5 [auth] Clean up trash actions 2024-09-17 11:39:25 +05:30
Neeraj Gupta
23574a2e3a [auth] Remove view qr code option 2024-09-17 11:35:08 +05:30
Neeraj Gupta
ce5354e19d [mob][auth] Upgrade flutter v3.24.3 (#3307)
## Description

## Tests
2024-09-17 11:16:46 +05:30
Neeraj Gupta
d11aeee29c [mob] Fix sort order for backup status (#3306)
## Description

## Tests
2024-09-17 11:12:41 +05:30
Neeraj Gupta
776881d75f [auth[submodule] Upgrade flutter v3.24.3 2024-09-17 11:12:08 +05:30
Neeraj Gupta
b9eef77d3a [mob][auth] Upgrade flutter v3.24.3 2024-09-17 11:11:33 +05:30
Neeraj Gupta
93ab5f4a84 [mob] Fix sort order for backup status 2024-09-17 11:09:06 +05:30
Neeraj Gupta
50e8757c8f [mob] Remove tf so files (#3304)
## Description

## Tests
2024-09-17 11:08:25 +05:30
Neeraj Gupta
a5f543151b [mob] Remove tf so files 2024-09-17 10:38:55 +05:30
Neeraj Gupta
2d0ceebb43 [mobile] New translations (#3305)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-09-17 10:38:27 +05:30
Crowdin Bot
17991bb6fc New Crowdin translations by GitHub Action 2024-09-17 05:05:46 +00:00
Manav Rathi
64090ad9ee [server] Document the optionality of SMTP auth (#3303)
https://github.com/ente-io/ente/pull/3251
2024-09-17 10:30:24 +05:30
Manav Rathi
9e26397c1b [server] Document the optionality of SMTP auth
https://github.com/ente-io/ente/pull/3251
2024-09-17 10:29:46 +05:30
zDqrK404
1e8b184ed0 Merge branch 'ente-io:main' into main 2024-09-17 10:55:12 +06:00
Manav Rathi
aed48026c3 [web] New translations (#3283)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-17 09:51:55 +05:30
Neeraj Gupta
7911c14e40 [server] Return 4xx for bad request (#3302)
## Description

## Tests
2024-09-17 09:50:38 +05:30
Neeraj Gupta
c315bc9da1 [auth] Update coach screen (#3300)
## Description

![image](https://github.com/user-attachments/assets/2b22c56b-7e65-49ca-afd8-74af961a9dc1)


## Tests
2024-09-17 09:48:40 +05:30
Neeraj Gupta
6fe4c0147a [auth] v3.1.6 2024-09-17 09:48:21 +05:30
Neeraj Gupta
5e7c5e0d6f log 2024-09-17 09:47:59 +05:30
Neeraj Gupta
802ba2bc5b [server] Gracefully handle duplicate update req (#3301)
## Description

## Tests
2024-09-17 09:14:19 +05:30
Neeraj Gupta
fb4f5c2095 [auth] Update coach screen 2024-09-17 09:05:15 +05:30
github-actions[bot]
9ce8470af5 [auth] New translations (#3285)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-09-17 08:56:05 +05:30
github-actions[bot]
e0fe62e717 [mobile] New translations (#3284)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-09-17 08:55:45 +05:30
Trekky12
8056720e23 Add possibility to define cli download tmp path with env variable (#3298)
## Description
When the /tmp folder is tmpfs the size is restricted and the download
failes when this tmp folder is full.
This PR introduces a enviroment variable to set the tmp download folder.
2024-09-17 08:55:11 +05:30
Trekky12
e6d4e835db Fix exporting of live photos with cli (#3297)
Fix issue #1998
2024-09-17 08:54:39 +05:30
Prateek Sunal
f4995cba56 [auth] replace slidable with bottom sheet (#3275)
## Description

Show options in bottom sheet in a horizontal manner to better utilize
space and remove slidable.

## Tests
2024-09-16 14:57:24 +05:30
Prateek Sunal
73a323d927 Merge branch 'main' into auth-ux-improvements 2024-09-16 14:57:03 +05:30
Manav Rathi
8ed58127e1 [server] Optional SMTP authentication (#3251)
## Description
When using a local relay server, not authentication is needed. To
support this use-case authentication is only send to the server when an
user and password are set in the configuration file.

See error message from https://github.com/ente-io/ente/discussions/3179
2024-09-16 11:53:58 +05:30
Neeraj Gupta
9c975eae69 [auth]: use correct value for compact mode in code widget (#3276) 2024-09-16 06:43:11 +05:30
Crowdin Bot
139e47867d New Crowdin translations by GitHub Action 2024-09-16 00:33:56 +00:00
Prateek Sunal
6008243c86 fix: remove extra enum 2024-09-16 05:00:05 +05:30
Prateek Sunal
04afcbe678 chore: remove extras 2024-09-16 04:59:22 +05:30
Prateek Sunal
6c603cb012 feat(bottom-sheet): use ente photos like bottom bar 2024-09-16 04:55:36 +05:30
zDqrK404
daa9e01729 [AUTH] Add Icon for ByBit.com 2024-09-16 01:54:20 +06:00
zDqrK404
a6ab51727c Delete auth/assets/custom-icons/icons/bybit.svg 2024-09-16 01:53:43 +06:00
Prateek Sunal
6d1ab3f1ca fix: don't show bg painter if not pinned 2024-09-15 21:37:23 +05:30
Prateek Sunal
660b5160f2 fix: don't use incorrect value for isCompactMode 2024-09-15 21:35:53 +05:30
Prateek Sunal
964075a32c fix: show bottom sheet on long press and remove slidable 2024-09-15 21:12:03 +05:30
Tobias Genannt
d25420c867 [server] Optional SMTP authentication
When using a local relay server, not authentication is needed. To
support this use-case authentication is only send to the server when an
user and password are set in the configuration file.
2024-09-15 15:15:10 +02:00
Vishnu Mohandas
a9c646ca77 [auth] Remove nesting for notes (#3271) 2024-09-14 20:14:31 +05:30
vishnukvmd
10d6e18332 [auth] Remove nesting for notes 2024-09-14 20:12:14 +05:30
Vishnu Mohandas
0feb5519ba [auth] Minor improvements to the sharing page (#3270)
## Description
- [x] Update logo
- [x] Added some margin at the bottom so the CTA is visible on mobile

## Tests
- [x] Tested locally
2024-09-14 20:04:08 +05:30
vishnukvmd
30a2752f9d Add bottom margin so the CTA is visible on mobile browsers 2024-09-14 19:53:53 +05:30
Vishnu Mohandas
608234d4ed [auth] Minor improvements (#3269) 2024-09-14 19:48:52 +05:30
vishnukvmd
2a8eb2aaf7 [auth] Update logo on share page 2024-09-14 19:48:44 +05:30
Manav Rathi
304a7df033 [web] Autofocus on the delete button on the confirmation dialog (#3268)
Fixes https://github.com/ente-io/ente/issues/3227
2024-09-14 19:28:29 +05:30
vishnukvmd
52fe082bae Localize 2024-09-14 19:27:28 +05:30
vishnukvmd
3a45640a17 Remove button labels 2024-09-14 19:24:05 +05:30
vishnukvmd
5c1b3886ed Update icon for Trash 2024-09-14 19:22:01 +05:30
Manav Rathi
3a10c853d0 Attempt to fix the focus getting lost 2024-09-14 19:21:26 +05:30
Manav Rathi
4f00a87e29 Theme 2024-09-14 18:15:53 +05:30
Manav Rathi
2db5ca81f5 Move the disableRipple behaviour up 2024-09-14 18:05:25 +05:30
Manav Rathi
3352e2a075 [web] Autofocus on the delete button on the confirmation dialog 2024-09-14 17:18:45 +05:30
Manav Rathi
266d75a574 [web] Thumbnails: Handle the first click on mobile devices (#3266)
Using opacity: 0 to was causing the first click to be intercepted by the
input element itself on mobile devices.
2024-09-14 15:35:08 +05:30
Manav Rathi
217d4d950e [web] Handle the first click on mobile devices
Using opacity: 0 to was causing the first click to be intercepted by the input
element itself on mobile devices.
2024-09-14 15:30:58 +05:30
Neeraj Gupta
c42ebf3377 [auth] Bump version (#3260)
## Description

## Tests
2024-09-13 18:08:33 +05:30
Neeraj Gupta
d3b30052e2 [auth] Bump version 2024-09-13 18:08:05 +05:30
Neeraj Gupta
490996193a [auth] Add workflow for internal release (#3259)
## Description

## Tests
2024-09-13 17:43:48 +05:30
Neeraj Gupta
02d69b3b1c [auth] Add workflow for internal release 2024-09-13 17:43:07 +05:30
Neeraj Gupta
0ea77ee1f4 [auth] Trash, Notes, Compact Mode, & Sharing (#3258)
## Description

## Tests
2024-09-13 17:29:55 +05:30
Neeraj Gupta
0379d14640 Lint fix 2024-09-13 17:26:33 +05:30
Neeraj Gupta
6d316d25d3 [auth][web] Display shared codes (#3257)
## Description

## Tests
2024-09-13 17:17:33 +05:30
Neeraj Gupta
6ba88d5d19 [mob] Enable back up status & improve error handling (#3253)
## Description

## Tests
2024-09-13 14:56:48 +05:30
Neeraj Gupta
34a8dc21c6 [mob] Clean up quick collection on error 2024-09-13 14:53:14 +05:30
Neeraj Gupta
864d150552 [server] Fix sharing validation (#3254)
## Description

## Tests
2024-09-13 14:31:39 +05:30
Neeraj Gupta
fbef356ab5 [mob] Update UI 2024-09-13 14:28:48 +05:30
Neeraj Gupta
0947b2bbaa [server] Fix sharing validation 2024-09-13 14:14:31 +05:30
Neeraj Gupta
b74de7f424 [mob] Bump version v0.9.38 2024-09-13 14:10:45 +05:30
Neeraj Gupta
651899cd23 [mob] Update copy 2024-09-13 14:08:37 +05:30
Neeraj Gupta
534250320c [mob] Fix routing 2024-09-13 14:08:31 +05:30
Neeraj Gupta
deef4886eb [mob] Enable backup status 2024-09-13 13:54:28 +05:30
Neeraj Gupta
58b82b46f3 [mob] Skip placeHolder creation on link gen failure 2024-09-13 13:53:01 +05:30
Neeraj Gupta
82712e9313 [mob] Handle subscription err during sendLink 2024-09-13 13:52:29 +05:30
Neeraj Gupta
accf563519 [auth][web] Update UI for shared codes 2024-09-13 11:36:04 +05:30
Neeraj Gupta
e8acaf7457 [auth] Fix: uriEncdoe issuer name (#3252)
## Description

## Tests
2024-09-13 10:43:42 +05:30
Neeraj Gupta
b5f8964dc4 [auth] Fix case when all codes are trashed 2024-09-13 10:35:11 +05:30
Neeraj Gupta
0275d08e27 Merge branch 'fix_issuer_name_encoding' into auth_trash 2024-09-13 10:27:24 +05:30
Neeraj Gupta
75c3bc1c84 [auth] Fix: uriEncdoe issuer name 2024-09-13 09:59:15 +05:30
Neeraj Gupta
08a77a2def [auth] Fix codeCount for sharing 2024-09-13 09:35:12 +05:30
Neeraj Gupta
74dc15c38c [auth] minor fixes 2024-09-13 09:23:22 +05:30
Neeraj Gupta
baeb47f94b [auth] Ignore exception during os share 2024-09-13 09:21:19 +05:30
Neeraj Gupta
ef5f58e5a2 [auth][web] Render shared codes 2024-09-13 09:19:26 +05:30
Neeraj Gupta
d77f4af04b [auth][mob] Allow sharing of codes 2024-09-13 09:17:49 +05:30
Ashil
0c8f05076a [mob][auth] Bump up auth to v3.1.4 (#3248) 2024-09-12 22:22:57 +05:30
Manav Rathi
023a13927c [web] Cluster groups - Prep (#3249)
Resuming on the cgroup changes.
2024-09-12 18:59:10 +05:30
Manav Rathi
c8c3d8f814 Prep 2024-09-12 18:49:25 +05:30
Manav Rathi
9400f2e134 Integrate 2024-09-12 18:37:47 +05:30
Manav Rathi
8cd43e9e4b Dup 2024-09-12 18:31:25 +05:30
Manav Rathi
44d66da742 More state 2024-09-12 18:20:19 +05:30
ashilkn
bc0d6adfd1 [mob][auth] Bump up auth to v3.1.4 2024-09-12 18:14:16 +05:30
Ashil
cc80453b12 [mob][photos] Fix exceptions from incorrect use of InheritedWidget (#3247)
## Description

- Avoid potential and fix current issues caused due to calling
`dependOnInheritedWidgetOfExactType<T>()` in initState (i.e, before the
widget is build).
2024-09-12 18:01:31 +05:30
Manav Rathi
816d74a5e6 SearchPerson => Person 2024-09-12 18:00:56 +05:30
Neeraj Gupta
710bb61f21 [auth] Fix bug in code generation 2024-09-12 17:34:26 +05:30
ashilkn
d649cbd9fa [mob][photos] Avoid passing text gotten from inherited widget 2024-09-12 17:32:43 +05:30
Manav Rathi
85fe4b317d Remove empty files 2024-09-12 17:31:26 +05:30
Manav Rathi
623f2c1985 Alt 2024-09-12 17:19:51 +05:30
Manav Rathi
5bcb8fe2ea [web] Continue display of trashed items if mobile search is active (#3246)
...but empty
2024-09-12 17:16:47 +05:30
Manav Rathi
b8f2b850c3 [web] Continue display of trashed items if mobile search is active
...but empty
2024-09-12 17:12:48 +05:30
ashilkn
d976986473 [mob][photos] Fix exceptions from calling dependOnInheritedWidgetOfExactType in init state 2024-09-12 17:04:58 +05:30
Manav Rathi
e6ad4db6d6 [web] Finish search refactoring (#3245)
Should be faster too, by ~50%.

Wraps up the series of PRs over the last few days to refactor search, as
a precursor to integrating the people suggestions.
2024-09-12 16:33:27 +05:30
Manav Rathi
897dd78ffd Remove stale TODO 2024-09-12 16:26:18 +05:30
Manav Rathi
016761be9a Cleanup 2024-09-12 16:20:37 +05:30
Manav Rathi
2990ba855f Speed 2024-09-12 16:03:56 +05:30
Prateek Sunal
09f65eeff7 [auth] Fix duplicate tags entry (#3243)
fixes #1794
2024-09-12 16:02:48 +05:30
Neeraj Gupta
bd18dc7a62 [auth] Disable sharing for HOTP codes 2024-09-12 15:40:30 +05:30
Neeraj Gupta
9ccb597e6e [auth] Add hook to share code 2024-09-12 15:37:49 +05:30
Manav Rathi
38b3e04718 Reset placeholder - Part Deux
Fixes 117c884b3e to also reset the icon

Underlying reason:
https://github.com/JedWatson/react-select/issues/5219

Nb: React itself does not recommend null either

> The value you pass to controlled components should not be `undefined` or `null`.
>
> https://react.dev/reference/react-dom/components/input
2024-09-12 15:18:22 +05:30
Neeraj Gupta
af9e865745 [auth] Add dropdown_button2 dep 2024-09-12 14:35:03 +05:30
Neeraj Gupta
c47fcba5cc [auth] Add method to generate future codes 2024-09-12 14:35:03 +05:30
Neeraj Gupta
02501caa71 [auth] Add viewQR code option on Edit screen 2024-09-12 14:35:03 +05:30
Neeraj Gupta
823eb068f0 [auth] Add option to restore from trash 2024-09-12 14:35:03 +05:30
Neeraj Gupta
954afd6409 [auth] Fix UX issue on deleting last code from trash 2024-09-12 14:35:03 +05:30
Neeraj Gupta
9933e18ba5 [auth] Reduce extend ratio for compact mode 2024-09-12 14:35:03 +05:30
Neeraj Gupta
1ff0ab1adf [auth] Bump version 2024-09-12 14:35:03 +05:30
Neeraj Gupta
3bb9790229 [auth][mob] Add compact mode 2024-09-12 14:35:01 +05:30
Neeraj Gupta
0ad84be3ab [auth] Minor fix 2024-09-12 14:33:30 +05:30
Neeraj Gupta
35916af7bf [auth] Show trashed icons in the end 2024-09-12 14:33:30 +05:30
Neeraj Gupta
72648286f2 [auth] Show trashed icons in the end 2024-09-12 14:33:30 +05:30
Neeraj Gupta
42611085f4 [auth] Ignore tags for trashed codes 2024-09-12 14:33:30 +05:30
Neeraj Gupta
f7e37c6b2c [auth] Add support for trashing codes 2024-09-12 14:33:30 +05:30
Neeraj Gupta
f44f21c5ad [auth] Bypass auth in debugMode if recently authenticated 2024-09-12 14:33:30 +05:30
Neeraj Gupta
05200878f2 [auth] Add support for adding notes 2024-09-12 14:33:30 +05:30
Neeraj Gupta
583163968d [auth] Limit text field length 2024-09-12 14:33:30 +05:30
Neeraj Gupta
53c553db02 [auth] Move field label to left 2024-09-12 14:33:30 +05:30
Manav Rathi
d65597c44f Handle album selection 2024-09-12 14:30:13 +05:30
Manav Rathi
117c884b3e Reset to placeholder on reset 2024-09-12 14:22:26 +05:30
Manav Rathi
32315b1149 Fix 2024-09-12 14:00:47 +05:30
Manav Rathi
a9537e59cf Lint fix 2024-09-12 13:47:12 +05:30
Manav Rathi
2cd2aee11c Fix gallery 3 2024-09-12 13:45:31 +05:30
Manav Rathi
5aa9671037 Gallery fix 2 2024-09-12 13:39:48 +05:30
Manav Rathi
859cfc46d3 Fix gallery 1 2024-09-12 13:28:55 +05:30
Neeraj Gupta
22927fa285 [mob] Backup status fixes (#3244)
## Description
* Fixes sorting order
* Added scrollbar for quick navigation
## Tests
2024-09-12 13:28:12 +05:30
Neeraj Gupta
ae52adc0f5 [mob] Add scrollbar for backup status 2024-09-12 13:23:41 +05:30
Neeraj Gupta
dd1321a555 Check for mount 2024-09-12 13:23:27 +05:30
Manav Rathi
060a055d38 Fix bar 2024-09-12 13:22:29 +05:30
Neeraj Gupta
bb92766d5e [mob] Defer loading of thumbnail 2024-09-12 13:22:02 +05:30
kishan-dhankecha
aedb689e45 fixed duplicated code being added bug 2024-09-12 13:05:38 +05:30
Manav Rathi
877c0a7c73 wip 4 2024-09-12 12:56:24 +05:30
Manav Rathi
74f6e52c74 wip 3 2024-09-12 12:56:24 +05:30
Manav Rathi
5bc5823ef2 wip 2024-09-12 12:56:24 +05:30
Manav Rathi
45b0dd4887 R 2024-09-12 12:56:24 +05:30
Manav Rathi
18f622d007 wip 2024-09-12 12:56:24 +05:30
Manav Rathi
ae7134a80f New types wip 2024-09-12 12:56:24 +05:30
Manav Rathi
d06f7a869e types wip 2024-09-12 12:56:24 +05:30
Manav Rathi
be9c686d71 Lint 3 2024-09-12 12:56:24 +05:30
Manav Rathi
fcd4f36036 Lint 2 2024-09-12 12:56:24 +05:30
Manav Rathi
fbd8346edf Fix lint 1 2024-09-12 12:56:24 +05:30
Manav Rathi
4c5b59b453 Move to new 2024-09-12 12:56:24 +05:30
Manav Rathi
03b6ed6f1a Tile dup 2024-09-12 12:56:24 +05:30
Manav Rathi
b5eaa757da Move 2024-09-12 12:56:24 +05:30
Manav Rathi
ea46ac0196 Rearrange 2024-09-12 12:56:24 +05:30
Manav Rathi
88a0a2f9fc Style tweaks 2024-09-12 12:56:24 +05:30
Manav Rathi
eb2d1f04c4 Remove unused 2024-09-12 12:56:24 +05:30
Manav Rathi
feb0dde706 Inline 2024-09-12 12:56:24 +05:30
Manav Rathi
973eac2b34 Add workaround to restore suggestions on focus
openMenuOnClick and openMenuOnFocus did not seem to work for AsyncSelect.

Workaround source:
https://github.com/JedWatson/react-select/issues/5714#issuecomment-1653251587

The underlying problem is perhaps because of an earlier workaround we are using, for editable selects.
https://github.com/JedWatson/react-select/issues/4675#issuecomment-944010398
2024-09-12 12:56:23 +05:30
Manav Rathi
a16830f5ca Prefix match for file types 2024-09-12 12:56:23 +05:30
Manav Rathi
315529eebf T 2024-09-12 12:56:23 +05:30
Neeraj Gupta
d3f72a036f [mob] Fix backup item card 2024-09-12 12:20:20 +05:30
Neeraj Gupta
e308a63f2b [mob] Fix sort order for backup status 2024-09-12 12:05:54 +05:30
Neeraj Gupta
b0bcb4550e [mob] Enable l10n for ja (#3240)
## Description

## Tests
2024-09-12 11:42:13 +05:30
Kishan Dhankecha
8b43f18f6a [AUTH] Made dart analyzer happy (#3226)
## Description
Updated some deprecated stuff to its replacements to make analyzer happy

## Tests
Changes are not affecting any tests
2024-09-12 11:35:43 +05:30
Neeraj Gupta
66bc855e4a [mob] Bump version v0.9.37 2024-09-12 11:32:26 +05:30
Neeraj Gupta
6854d2885a [mob] Extract string 2024-09-12 11:31:57 +05:30
Neeraj Gupta
21ff032cad [mob] Show processing progress for iOS 2024-09-12 11:31:57 +05:30
Ashil
c1dbc82338 [mob][photos] Increase time taken to show up send logs CTA on loading local photos screen (#3238)
## Description

Noticed that it takes 40 seconds or more for me at times. So increasing
the time to reduce number of potential unnecessary tickets.
2024-09-12 11:21:56 +05:30
bsian03
4c7d3a37b4 [Auth] Add icon for GOV.UK (#3132)
Adds the icon for UK government online services (Government Gateway)
2024-09-12 11:21:22 +05:30
ashilkn
658768f853 [mob][photos] Increase time taken to show up send logs CTA on loading local photos screen 2024-09-12 11:19:31 +05:30
Kishan Dhankecha
29a88e673f [auth] Fix rendering issue #3229 (#3230)
## Description
Fixes the bug in the code list by adding a key to the CodeWidget
2024-09-12 11:18:08 +05:30
MonkeySaint
f2f6160aff [docs] [auth] Add the new method to extract TOTP codes from authy (#3121)
## Description
Adds an option to export authy codes with a rooted android device. I
will probably modify [the tool
used](https://github.com/puddly/android-otp-extractor) so it exports to
an Ente compatible json file later but this will work for any uses who
need to export from authy (Likely do to them blocking rooted users now
like me)
2024-09-12 11:15:48 +05:30
Neeraj Gupta
27091f568f [mobile][photos] Improve magic section UX (#3235)
## Description

Check commits. 


https://github.com/user-attachments/assets/07f8aeec-163d-4ef7-b7f5-e78a475d364d



## Tests

Tested all changes.
2024-09-12 11:14:38 +05:30
ashilkn
30f1b4e006 [mob][photos] Add comment 2024-09-12 07:01:00 +05:30
ashilkn
168d7a1652 [mob][photos] Refactor 2024-09-12 06:56:09 +05:30
ashilkn
bd0c35f64f [mob][photos] Add more gallery types to show 'archive' in selection sheet 2024-09-12 06:48:03 +05:30
ashilkn
f4c7e60b5a [mob][photos] Make hero animation work between magic section's all screen and the screen that comes up when selecting a suggession from there 2024-09-12 06:26:53 +05:30
Manav Rathi
734de8129a [web] Search refactoring - Part x/x (#3233) 2024-09-11 21:23:37 +05:30
Manav Rathi
1fd9ea7a27 Prune and doc 2024-09-11 21:17:45 +05:30
Manav Rathi
c2ea68c39c Prune 2024-09-11 20:58:57 +05:30
Manav Rathi
e0db188195 Temporary backtrack 2024-09-11 20:56:17 +05:30
Manav Rathi
1317791fed Ontology 2024-09-11 20:53:00 +05:30
Manav Rathi
044e1b687f cap 2024-09-11 20:34:38 +05:30
ashilkn
75b06a1cab [mob][photos] Sort by most relevant by default when searching for magic results 2024-09-11 20:22:26 +05:30
Manav Rathi
57cf26c01c fn 2024-09-11 20:21:18 +05:30
ashilkn
0ae32a3882 [mob][photos] Make hero animations work 2024-09-11 20:21:14 +05:30
Manav Rathi
2f9bbbc84c Fix 2024-09-11 20:06:23 +05:30
Manav Rathi
5b2be09a6a To new 2024-09-11 19:57:01 +05:30
Manav Rathi
bf001794b4 Also pass collections 2024-09-11 19:49:17 +05:30
ashilkn
d5027c4c65 [mob][photos] Sort magic result screen by most relevant by default 2024-09-11 19:48:22 +05:30
ashilkn
db13764b04 [mob][photos] Extract strings 2024-09-11 19:44:48 +05:30
ashilkn
37022f7d7d [mob][photos] Add option to sort by most recent and most relevant on magic results screen 2024-09-11 18:54:36 +05:30
Manav Rathi
ace2e5bb27 Move 2024-09-11 18:10:50 +05:30
Manav Rathi
c809d572f7 Move 2024-09-11 17:53:46 +05:30
Manav Rathi
a4a2623074 Move 2024-09-11 17:17:06 +05:30
Manav Rathi
87e31965e5 Move up 2024-09-11 17:11:53 +05:30
Manav Rathi
012a796894 New type 2024-09-11 17:09:14 +05:30
Manav Rathi
cc3caf2e5d doc 2024-09-11 16:57:49 +05:30
Manav Rathi
1d239d409f Fin 2024-09-11 12:19:45 +05:30
Manav Rathi
71d77a62fd Use colors from theme 2024-09-11 12:15:19 +05:30
Connor
79f75ee861 Added Capacities logo to icons and to custom-icons.json (#3198) 2024-09-11 12:03:19 +05:30
Neeraj Gupta
f3ea825429 [mob](upload-status): fixes (#3141)
## Description

These PR does following fixes to upload status:
- Always maintain order or backup status.
  - failed -> in queue -> in background -> uploading -> uploaded
- Show previous uploaded items in this too
2024-09-11 12:02:06 +05:30
Neeraj Gupta
0d991a1420 [mob][photos] Run clip and faces parallel in same isolate (#3193)
## Description

Run faces and clip pipelines in parallel in isolate on mobile.

## Tests

Tested in debug mode on my own pixel 8.
2024-09-11 12:01:32 +05:30
Manav Rathi
985ebc2f77 Theme + memo 2024-09-11 11:48:31 +05:30
Manav Rathi
17c17dd901 Hook 2024-09-11 11:44:30 +05:30
Manav Rathi
0004650b2f [web] Package updates (#3225) 2024-09-11 11:39:06 +05:30
Manav Rathi
f3a3c68488 [web] Package updates 2024-09-11 11:13:25 +05:30
ashilkn
83ffce2a24 [mob][photos] Keep order of files (sorted by highest score) in magic section 2024-09-11 11:03:34 +05:30
ashilkn
9fa1e77947 [mob][photos] Use better names 2024-09-11 11:00:24 +05:30
Manav Rathi
ac10329597 [web] Search related refactoring - Part x/x (#3224) 2024-09-11 10:57:31 +05:30
Manav Rathi
7b890e21d5 Prune 2024-09-11 10:49:12 +05:30
Manav Rathi
509f10f765 Remove refresh workarounds 2024-09-11 10:44:57 +05:30
Manav Rathi
dd9cd53176 Live updates 2024-09-11 10:41:47 +05:30
Manav Rathi
5e18c87bee Cleanup 2024-09-11 10:36:20 +05:30
Manav Rathi
2e0a771068 General update 2024-09-11 10:25:34 +05:30
Manav Rathi
558b9e0b70 Remove default options that are interfering 2024-09-11 10:22:51 +05:30
Manav Rathi
79cd1dd0d1 Another attempt at fixing react-select issues 2024-09-11 10:03:30 +05:30
Manav Rathi
0d079fc593 Clean 2024-09-11 09:21:07 +05:30
Manav Rathi
30901462bc ML aware suppress 2024-09-11 09:21:07 +05:30
Manav Rathi
403801aac8 Hide the menu on no results
react-select seems to be handling false (the result &&) and null
differently. Only on returning null is it supressing the rendering of a
placeholder menu.
2024-09-11 09:21:07 +05:30
Manav Rathi
1dcfcb6250 Alternative & hopefully less hacky approach 2024-09-11 09:21:07 +05:30
Manav Rathi
b279ed4489 [web] Add workaround for dup emotion used by react-select (#3222)
Ref: https://github.com/JedWatson/react-select/issues/5658
2024-09-11 09:19:56 +05:30
Manav Rathi
3cc1f3e9d7 [web] Add workaround for dup emotion used by react-select
Ref: https://github.com/JedWatson/react-select/issues/5658
2024-09-11 09:15:27 +05:30
Laurens Priem
23d9ed65ec Merge branch 'main' into ml_parallel 2024-09-10 11:12:51 -04:00
Manav Rathi
a496debb5f [web] Search: Fix loading indicator position (#3217)
Fix for layout issue introduced in last PR -
https://github.com/ente-io/ente/pull/3216
2024-09-10 20:25:54 +05:30
Manav Rathi
d199260a63 Fix loading indicator position 2024-09-10 20:21:00 +05:30
Manav Rathi
353646e4bf [web] Search refactoring - Part x/x (#3216) 2024-09-10 20:03:44 +05:30
Manav Rathi
b46c2c13cc Tinker 2024-09-10 19:58:05 +05:30
Manav Rathi
a8caeb38ba Omit children
No functional impact
2024-09-10 19:50:49 +05:30
Manav Rathi
6592ab6188 Unused 2024-09-10 19:45:16 +05:30
Manav Rathi
6dc552f015 Visual 2024-09-10 19:44:10 +05:30
Manav Rathi
8365ca000c MUI builtin 2024-09-10 19:28:11 +05:30
Manav Rathi
dbb596b3c2 Fix placeholder handling for v5 of react-select 2024-09-10 19:21:33 +05:30
Prateek Sunal
a947cc69de fix(upload-status): only get files that have upload file id and are owned by user 2024-09-10 19:08:53 +05:30
Prateek Sunal
a3c0e46f1d fix: remove unwanted log 2024-09-10 19:07:15 +05:30
Manav Rathi
7794be5993 Some colors from theme 2024-09-10 19:06:20 +05:30
Manav Rathi
a6e5f01ab9 Remove wrapper 2024-09-10 19:01:37 +05:30
ashilkn
c6ba5e4f70 [mob][photos] Bring Magic section right below faces in search tab 2024-09-10 19:01:02 +05:30
Manav Rathi
093c95263f Remove double memo 2024-09-10 19:00:58 +05:30
Manav Rathi
a4d068468d Quite wonky 2024-09-10 18:48:21 +05:30
Ashil
066d4c201d [mob][photos] Discovery tweaks (#3215)
## Description

Check commits
2024-09-10 18:34:20 +05:30
ashilkn
ae5ebf4bf9 [mob][photos] Make reading of magic cache syncronous for faster loading of search tab 2024-09-10 18:28:09 +05:30
ashilkn
c9a96df720 [mob][photos] Respect the order given in JSON of magic prompts on the UI 2024-09-10 18:17:42 +05:30
ashilkn
537f376ebd [mob][photos] Remove limit of discovery section for non-internal users 2024-09-10 18:12:09 +05:30
Manav Rathi
58f1cec916 Doc 2024-09-10 18:09:13 +05:30
ashilkn
4c3007ccc8 [mob][photos] Make most of file io async in handling magic cache 2024-09-10 17:57:34 +05:30
Ashil
73cae89fc5 [mob][photos] Require Authentication on App Reopen from Guest View (#3131)
This PR introduces a security enhancement that requires authentication
when the app is reopened after being closed while in guest view.
2024-09-10 17:30:58 +05:30
Ashil
c3cb706f51 [mob][photos] Kill the app on logging out from lockscreen (#3214)
## Description 

If lockscreen is above some screens (like an album) and user logs out,
the app goes back to that screen after logging out.
Killing the app right after logging out was the easiest fix.
2024-09-10 17:29:31 +05:30
ashilkn
a703847130 [mob][photos] Kill the app on logging out from lockscreen 2024-09-10 17:22:05 +05:30
Manav Rathi
4299ebcf1b Tinker 2024-09-10 17:18:15 +05:30
Vishnu Mohandas
a15d5e7d1e [mob]Fix build failing (#3213) 2024-09-10 17:18:00 +05:30
ashilkn
849d2c3d3e [mob]Fix build failing 2024-09-10 17:16:16 +05:30
Aman Raj Singh Mourya
3e136baee2 [mob][photos] Refractor code 2024-09-10 17:01:35 +05:30
Manav Rathi
f11c455b6b Props 2024-09-10 17:00:55 +05:30
Manav Rathi
b0f7ce3f61 Doc 2024-09-10 16:47:17 +05:30
Ashil
9c18bbd46e [mob][photos] Add New Album Card Widget for Collecting Photos (#2734) 2024-09-10 16:34:54 +05:30
ashilkn
9c81d59833 [mob][photos] Resolve merge conflicts and merge main 2024-09-10 16:32:33 +05:30
Manav Rathi
51ee4a128a Types 1 2024-09-10 15:51:48 +05:30
Manav Rathi
e5411cb1da Update react-select 4 => 5
Will resolve breaking changes subsequently
2024-09-10 15:41:26 +05:30
Manav Rathi
289d403e0c Update debounce 2024-09-10 15:39:51 +05:30
Manav Rathi
0fe35ac161 Inline (in prep for further refactoring) 2024-09-10 15:16:41 +05:30
Ashil
ff1fa3d391 [mob][photos] Add CTA to send logs if stuck on local sync screen (#3206)
## Description

Once 40 seconds have passed on the local photos sync screen, a help icon
will appear on the app bar.
<img
src="https://github.com/user-attachments/assets/2fe26b99-edb5-446e-a4f2-f12386f9192c"
width="40%" height="40%" alt="helpicon">
<img
src="https://github.com/user-attachments/assets/36f471b7-06b1-4f08-9a9e-073b54611d99"
width="40%" height="40%" alt="dialog">
2024-09-10 15:07:41 +05:30
Ashil
87f74b5ade [auth] Add Appbar Lock Icon for Manual App Locking on Desktop + fix bugs (#3108)
## Description

When app lock is enabled on Auth's desktop app and when
closed/minimised, the app is not getting locked in certain cases. As a
workaround for that, have added a button to manually lock the app.
2024-09-10 15:06:39 +05:30
ashilkn
4a21d0bfac [mob][photos] Fix build failing 2024-09-10 15:04:58 +05:30
ashilkn
b2e9b242ad [mob][photos] Add comment 2024-09-10 15:00:55 +05:30
ashilkn
acdd38743c [mob][photos] Kill app so that the app starts afresh after logging out from the lockscreen 2024-09-10 14:54:00 +05:30
Manav Rathi
c00c10301d MBox 2024-09-10 14:43:02 +05:30
Manav Rathi
d05438e034 R 2024-09-10 14:32:06 +05:30
Manav Rathi
d3cf65f1c0 Box 2024-09-10 14:29:50 +05:30
Manav Rathi
960104b042 R 2024-09-10 14:29:50 +05:30
Manav Rathi
d78acd4205 [docs] Remove fixed ffmpeg workaround (#3209)
1.7.4 has been released a week ago with this fixed
2024-09-10 14:26:15 +05:30
Manav Rathi
dd4dca4473 [docs] Remove fixed ffmpeg workaround
1.7.4 has been released a week ago with this fixed
2024-09-10 14:24:50 +05:30
Neeraj Gupta
05c9f83399 [cli] Base64 Encode the CLI secrets (#3208)
## Description

Related to #1510 & [#3163](https://github.com/ente-io/ente/pull/3163)

This potential fix was only possible due to amazing investigation done
by @shoetten

## Tests
Did basic sanity testing on local machine
2024-09-10 14:17:25 +05:30
Neeraj Gupta
821edd00f7 [cli] Check for secret key length while reading from file 2024-09-10 14:16:36 +05:30
Aman Raj Singh Mourya
068cad2207 [mob][photos] Extract strings 2024-09-10 13:58:42 +05:30
Neeraj Gupta
9e068bdc90 [cli] Base64 encode CLI secrets 2024-09-10 13:46:35 +05:30
Neeraj Gupta
e70bf6a379 [cli] Add check for deviceKey size 2024-09-10 13:46:15 +05:30
Aman Raj Singh Mourya
2a0c7d1e56 [mob][photos] Refractor code 2024-09-10 13:44:00 +05:30
Manav Rathi
32a4204609 [web] Translation cleanup (#3207) 2024-09-10 13:27:46 +05:30
Manav Rathi
74b3b00ea5 Reorder and rename 2024-09-10 13:24:37 +05:30
Manav Rathi
01fba0b722 Reorder and rename 2024-09-10 13:20:12 +05:30
Manav Rathi
fa290752c9 Reorder 2024-09-10 13:18:28 +05:30
Manav Rathi
4ed769271d Rename 2024-09-10 13:13:47 +05:30
Manav Rathi
7f1e7615cf Rename 2024-09-10 13:13:06 +05:30
Manav Rathi
2d4dc568fb [web] Translation cleanup 2024-09-10 13:09:51 +05:30
Manav Rathi
02eefcd00f [web] New translations (#3205)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-10 13:06:01 +05:30
Manav Rathi
e742342dd8 [web][meta] Ignore stale lint runs on PR push (#3204)
Ref:
https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior
2024-09-10 13:05:29 +05:30
Crowdin Bot
b812070ae1 New Crowdin translations by GitHub Action 2024-09-10 07:33:48 +00:00
Manav Rathi
70dada90b2 [web][meta] Ignore stale lint runs on PR push
https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#example-using-concurrency-and-the-default-behavior
2024-09-10 13:02:12 +05:30
Manav Rathi
b3d2e29e28 [web] Search refactoring - Part x/x (#3203) 2024-09-10 12:59:13 +05:30
ashilkn
bb0f31f814 [mob][photos] Extract strings 2024-09-10 12:58:36 +05:30
Manav Rathi
c0c477a3b7 Remove debug log 2024-09-10 12:55:07 +05:30
Manav Rathi
a55c735d13 Fix mobile search bar 2024-09-10 12:53:31 +05:30
Aman Raj Singh Mourya
86bbfbe254 Merge branch 'auth_lock_icon' of https://github.com/ente-io/ente into auth_lock_icon 2024-09-10 12:53:02 +05:30
Aman Raj Singh Mourya
ba270000b2 [auth] Fix logout action 2024-09-10 12:52:27 +05:30
ashilkn
5fceb9898f [mob][photos] Remove gesture that triggered send logs from local sync screen 2024-09-10 12:52:11 +05:30
ashilkn
1cf28e0dd5 [mob][photos] easy to find cta to send logs if app is stuck in local sync screen 2024-09-10 12:47:40 +05:30
Manav Rathi
ffe290d56d Sym 2024-09-10 12:35:39 +05:30
Manav Rathi
7e8344cd4e Bespoke 2024-09-10 12:22:04 +05:30
Manav Rathi
3fc66ce202 Bespoke 2024-09-10 12:07:57 +05:30
Manav Rathi
167b9cfa42 Icon 2024-09-10 11:55:26 +05:30
Manav Rathi
00070d06b6 Props 2024-09-10 11:53:06 +05:30
Manav Rathi
9520898032 [web] Directly import into the selected album on drag and drop (#3201)
Ref:
https://github.com/ente-io/ente/discussions/2707#discussioncomment-10589669
2024-09-10 11:04:11 +05:30
Manav Rathi
71ee7ac019 [web] Directly import into the selected album on drag and drop
Ref: https://github.com/ente-io/ente/discussions/2707#discussioncomment-10589669
2024-09-10 11:01:05 +05:30
Manav Rathi
e77d7a42f5 [web] Fix build (#3200)
ReferenceError: Cannot access 'T' before initialization
at Object.dP
(/home/runner/work/ente/ente/web/apps/photos/.next/server/chunks/6368.js:218:1594)

When accessing the GAP

    grid-column-gap: ${f.dP}px;
2024-09-10 10:11:00 +05:30
Manav Rathi
99291c2576 [web] Fix build
ReferenceError: Cannot access 'T' before initialization
    at Object.dP (/home/runner/work/ente/ente/web/apps/photos/.next/server/chunks/6368.js:218:1594)

When accessing the GAP

    grid-column-gap: ${f.dP}px;
2024-09-10 10:07:21 +05:30
Manav Rathi
e9bd4a4dc5 [cast] Fix cast continually getting reset (#3199) 2024-09-10 10:06:53 +05:30
Manav Rathi
1b95ce330a Fix lint 2024-09-10 09:58:36 +05:30
Manav Rathi
26641a4584 [cast] Fix cast continually getting reset 2024-09-10 09:52:44 +05:30
Manav Rathi
27140c04c9 [desktop][photos] Use antialias with clip image (#3192)
## Description

Adds antialias to clip image preprocessing

## Tests

Only tested the mobile implementation which follows exactly the same
logic. So review carefully.
2024-09-10 09:17:32 +05:30
Manav Rathi
0bf3c64ceb 1 2024-09-10 09:06:53 +05:30
Manav Rathi
13565a0904 Fix kernel construction
.fill(0) was missing
2024-09-10 08:51:37 +05:30
Laurens Priem
642b7ae5ba Mob antialias (#3191)
## Description

- Stop using unnecessary ByteData and Color classes, using simple
Uint8List and RGB integers instead
- Use antialias for clip image preprocessing

## Tests

Tested by comparing resulting embedding to Python.
2024-09-09 22:59:18 -04:00
Manav Rathi
6776c49750 Fix some lint warnings (no functional changes) 2024-09-10 08:09:21 +05:30
Manav Rathi
1189610b42 Fix typo in docs (#3196)
## Description
Fix Raivo OTP typo
2024-09-10 07:31:57 +05:30
Manav Rathi
839cddfe7f [docs][server] Add more links to the self hosting docs (#3197)
Add more links to the self hosting docs from the server/ READMEs to try
and make them easier to find.

/cc @ua741
2024-09-10 07:31:03 +05:30
Manav Rathi
86e2db388e [docs] Add more links to the self hosting docs
To make them easier to find.
2024-09-10 07:27:08 +05:30
dnred
608b078065 Fix typo 2024-09-09 22:48:41 +02:00
laurenspriem
74d2c07ea0 [mob][photos] Run clip and faces parallel in same isolate 2024-09-09 15:49:27 -04:00
laurenspriem
a84cc07aa2 [desktop][photos] Use antialias with clip image 2024-09-09 13:43:35 -04:00
Prateek Sunal
d2f2028f55 fix(intl): remove extra { in front of {{{count 2024-09-09 21:04:50 +05:30
Prateek Sunal
53e2aeff3f Merge remote-tracking branch 'origin/main' into mob-upload-status-fixes 2024-09-09 20:59:38 +05:30
Prateek Sunal
80aebe3869 fix(upload-status): show all uploads, even from past 2024-09-09 20:53:14 +05:30
Neeraj Gupta
7f0e2bcb9e [mob] Bump version v0.9.36 2024-09-09 19:50:54 +05:30
Neeraj Gupta
cc2b0a610f [mob] Add additional logs & error handling on permission grant screen 2024-09-09 19:50:54 +05:30
Manav Rathi
d7a2883b5c [web] Misc cleanup and refactoring (#3185)
Continuation of https://github.com/ente-io/ente/pull/3182
2024-09-09 19:32:25 +05:30
Manav Rathi
6a76583e1b Rely on the button's behavior 2024-09-09 19:25:59 +05:30
Manav Rathi
c161d6272a Remove unnecessary wrapper 2024-09-09 19:24:33 +05:30
Manav Rathi
62cdfc9680 Same breakpoint 2024-09-09 19:17:51 +05:30
Manav Rathi
ff5826ec21 Bespoke 2024-09-09 19:06:26 +05:30
Manav Rathi
69ec80831c Dup 2024-09-09 19:02:23 +05:30
Manav Rathi
b80bb138e2 Inline 2024-09-09 19:00:41 +05:30
Manav Rathi
0fb114967a Inline 2024-09-09 18:54:55 +05:30
Manav Rathi
e9d55adfff R 2024-09-09 18:49:06 +05:30
Manav Rathi
ba1ef42355 Same as elsewhere 2024-09-09 18:34:33 +05:30
Manav Rathi
c23bb13187 Inline 2024-09-09 18:31:36 +05:30
Manav Rathi
330ff5b9d0 Deps 2024-09-09 18:26:35 +05:30
Manav Rathi
132c399e32 Fix typo 2024-09-09 18:19:58 +05:30
Manav Rathi
c5c2a1bbf4 Unenum 2024-09-09 18:17:23 +05:30
Manav Rathi
3ce5b43126 doc react-select 2024-09-09 18:14:11 +05:30
Manav Rathi
423c9c7b9c Don't need the jsxImportSource anymore 2024-09-09 18:10:57 +05:30
Manav Rathi
45b05fc823 Fix 2024-09-09 18:00:52 +05:30
Manav Rathi
808fc51966 Refactor 2024-09-09 17:43:05 +05:30
Manav Rathi
bb4f415ae1 Inline 2024-09-09 17:39:13 +05:30
Manav Rathi
f6f7fb3b8f Inline 2024-09-09 17:37:06 +05:30
Manav Rathi
d22d97ed65 Reuse existing breakpoints 2024-09-09 17:35:32 +05:30
Manav Rathi
3a2881b350 Tweak 2024-09-09 17:21:39 +05:30
Manav Rathi
0d59377284 Prune unused 2024-09-09 17:19:13 +05:30
Manav Rathi
b3016dffca Inline and prune 2024-09-09 17:13:41 +05:30
Manav Rathi
32601826c1 [web] Misc cleanup and refactoring (#3182)
No functional changes intended.
2024-09-09 17:03:11 +05:30
Manav Rathi
f5aebd7044 Lint 2024-09-09 16:56:41 +05:30
Manav Rathi
457d0977b6 Move 2024-09-09 16:51:06 +05:30
Manav Rathi
befa3f82ed Inline 2024-09-09 16:47:11 +05:30
Manav Rathi
56ca068a2c Up 2024-09-09 16:44:39 +05:30
Manav Rathi
d09b447574 Inl 2024-09-09 16:43:20 +05:30
Manav Rathi
e5939e3ca5 Move 2024-09-09 16:42:47 +05:30
Manav Rathi
2bd45883ce Inline 2024-09-09 16:41:32 +05:30
Manav Rathi
d3b47776c3 Inline and prune 2024-09-09 16:39:17 +05:30
Manav Rathi
c1d9763945 Inline 2024-09-09 16:37:26 +05:30
Manav Rathi
83126c3ec4 Inline 2024-09-09 16:36:22 +05:30
Manav Rathi
c4f08715ed Inline 2024-09-09 16:35:07 +05:30
Manav Rathi
5ad7e2f128 Inline 2024-09-09 16:34:22 +05:30
Manav Rathi
0299024804 Rearrange 2024-09-09 15:31:03 +05:30
Manav Rathi
aaa4727bc0 Inline 2024-09-09 15:27:36 +05:30
Manav Rathi
f69760808a Scope type 2024-09-09 15:18:56 +05:30
Manav Rathi
9598ad7a73 Prune state 2024-09-09 15:15:36 +05:30
Manav Rathi
bf00d844dd Refactor 2024-09-09 15:13:45 +05:30
Manav Rathi
87110408ef Inline 2024-09-09 15:00:26 +05:30
Manav Rathi
546e40c1ff Trim exports 2024-09-09 14:58:39 +05:30
Manav Rathi
8306b5d534 Remove unused 2024-09-09 14:48:06 +05:30
Manav Rathi
34897247dd [web] Streamline the family portal redirect (#3181) 2024-09-09 14:35:28 +05:30
Manav Rathi
9037973ced Retain the dialog 2024-09-09 14:30:34 +05:30
Manav Rathi
672865c062 Remove double redirection 2024-09-09 14:28:23 +05:30
Manav Rathi
96f10bebd4 Inline 2024-09-09 14:22:36 +05:30
Manav Rathi
8aed23ca93 Inline 2 2024-09-09 14:07:01 +05:30
Manav Rathi
19f18fe032 Inline 2024-09-09 14:02:14 +05:30
Manav Rathi
9bf4edecdb [server][web] Remove unused redirects (#3180)
Verified by building museum locally after the changes.

/cc @ua741
2024-09-09 13:55:16 +05:30
Manav Rathi
af6feaf735 [server] Remove unused roadmap related endpoints 2024-09-09 13:46:54 +05:30
Manav Rathi
289ddd673b [web] Remove unused redirects 2024-09-09 13:42:39 +05:30
Crowdin Bot
0aeff4a8ae New Crowdin translations by GitHub Action 2024-09-09 11:53:23 +05:30
Tanguy
f15daa9a0f Change PayPal logo to the new one 2024-09-09 11:53:05 +05:30
Crowdin Bot
c7da14f52e New Crowdin translations by GitHub Action 2024-09-09 11:52:51 +05:30
Manav Rathi
23c27aa781 [web] Handle the newer signal screenshot filename format
Ref: https://github.com/ente-io/ente/discussions/2446#discussioncomment-10580240
2024-09-09 11:52:08 +05:30
Manav Rathi
e5671a1fcc [web] Cleanup the date parsing code (#3175)
Prep for adding a new format case.
2024-09-09 11:22:30 +05:30
Manav Rathi
3b5c2b830e Cleanup 2024-09-09 11:15:03 +05:30
Manav Rathi
7fc7d79554 null => undef 2024-09-09 10:59:40 +05:30
Manav Rathi
417ac32f54 Tinker 2024-09-09 10:56:54 +05:30
Manav Rathi
713b01fc7d Split 2024-09-09 10:53:00 +05:30
Manav Rathi
8ed80d3feb Remove overloading 2024-09-09 10:49:19 +05:30
Manav Rathi
b59b07e93d Rearrange 2024-09-09 10:40:27 +05:30
Manav Rathi
1f2b09e704 Cleanup 2024-09-09 10:29:51 +05:30
Manav Rathi
6b3d39fbd7 [docs] update import.md (#3168)
## Description

seperated -> separated
2024-09-09 09:24:59 +05:30
Manav Rathi
98ed6c3fcb [web] New translations (#3171)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-09 09:24:11 +05:30
Crowdin Bot
faa09134d5 New Crowdin translations by GitHub Action 2024-09-09 00:33:13 +00:00
Ikko Eltociear Ashimine
b271e19dc8 [docs] update import.md
seperated -> separated
2024-09-09 03:15:31 +09:00
laurenspriem
762fa7150e [mob][photos] Refactor 2024-09-08 19:28:06 +02:00
laurenspriem
db6f8dbff8 [mob][photos] comment 2024-09-08 14:26:45 +02:00
laurenspriem
af25c83aa2 [mob][photos] Use antialias for 80% scale and lower 2024-09-08 14:19:58 +02:00
Vishnu Mohandas
cca59a33b9 [staff] Increase number of years available within DatePicker to 100 (#3165) 2024-09-08 02:30:22 +05:30
vishnukvmd
4246d2a91b [staff] Increase number of years available within DatePicker to 100 2024-09-08 02:30:05 +05:30
Manav Rathi
b52476855f [web] More search related refactoring (#3162)
Preparing for showing cgroups in the search dropdown.
2024-09-07 18:16:13 +05:30
Manav Rathi
d5e7dbc762 LF 2024-09-07 18:13:23 +05:30
Manav Rathi
af8756218e Rename 2024-09-07 18:06:14 +05:30
Manav Rathi
ce271d2288 Unindex 2024-09-07 17:20:20 +05:30
Manav Rathi
60dd2dd800 Inline 2024-09-07 17:15:23 +05:30
Manav Rathi
52880e94a9 Remove unused 2024-09-07 17:11:49 +05:30
Manav Rathi
974cec75be Rename 2024-09-07 17:09:03 +05:30
Manav Rathi
3baa699d79 Inline 2024-09-07 17:08:49 +05:30
Manav Rathi
3423a7aa5d Inline 2024-09-07 17:07:13 +05:30
Manav Rathi
60f7282774 Inline 2024-09-07 17:04:47 +05:30
Manav Rathi
980a1f4c5a Inline 2024-09-07 17:02:37 +05:30
Manav Rathi
3cb0c1b325 Inline 2024-09-07 17:01:12 +05:30
Manav Rathi
752ae51f46 ns 2024-09-07 16:59:10 +05:30
Manav Rathi
c4c9f71b01 Inline 2024-09-07 16:58:32 +05:30
Manav Rathi
7a85fa5c61 Inline 2024-09-07 16:56:43 +05:30
Manav Rathi
e9a6b55ba4 Lowercased + searchable 2024-09-07 16:31:42 +05:30
Manav Rathi
8e7a3a9347 Pass lft 2024-09-07 16:07:00 +05:30
Manav Rathi
d6344093b6 OnnA 2024-09-07 14:51:54 +05:30
Manav Rathi
34211dafef Nomenclature 2024-09-07 14:31:48 +05:30
Manav Rathi
e140b2f663 [web] Misc tweaks (#3161) 2024-09-07 14:23:59 +05:30
Manav Rathi
d2deea9502 Inline 2024-09-07 14:17:41 +05:30
Manav Rathi
31bfb53dfb Inline inmems 2024-09-07 13:27:23 +05:30
Manav Rathi
b6ced23649 Casing 2024-09-07 13:02:57 +05:30
Manav Rathi
6af03fdfca Move clip code to new home 2024-09-07 13:00:22 +05:30
Manav Rathi
88684c9725 [web] Search related translation cleanup (#3158) 2024-09-07 12:02:28 +05:30
Manav Rathi
9ab641c19a lc 2024-09-07 11:59:23 +05:30
Manav Rathi
c8740e7331 Use 2024-09-07 11:54:54 +05:30
Manav Rathi
6aa9bd7e8c P2 2024-09-07 11:53:30 +05:30
Manav Rathi
d6bf9689ff Shift and lc 2024-09-07 11:43:37 +05:30
Manav Rathi
1876fb7431 Unused 2024-09-07 11:38:13 +05:30
Manav Rathi
50a5394165 Lowercase 2024-09-07 11:37:03 +05:30
Manav Rathi
b54a572da6 Use 2024-09-07 11:35:52 +05:30
Manav Rathi
1f934eaefa lc 2024-09-07 11:32:17 +05:30
Manav Rathi
87d75fd718 Dedup 2024-09-07 11:30:38 +05:30
Manav Rathi
d22e39b3f3 Rename 2024-09-07 11:16:44 +05:30
Manav Rathi
add5b856dc Extrac 2024-09-07 11:08:32 +05:30
Manav Rathi
2f19a21b5f [web] New translations (#3157)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-09-07 10:56:57 +05:30
Crowdin Bot
ee9db04c08 New Crowdin translations by GitHub Action 2024-09-07 05:25:24 +00:00
Manav Rathi
68c51c4549 [web] Refactoring in preparation of introducing a cgroup sync (#3156) 2024-09-07 10:53:23 +05:30
Manav Rathi
762bf413e8 Web workers cannot access session store 2024-09-07 10:19:20 +05:30
Manav Rathi
6159f5e4ee cen 2024-09-07 10:11:44 +05:30
Manav Rathi
b70444acac Update docs 2024-09-07 10:07:55 +05:30
Manav Rathi
dd53cf4e58 Handle NaNs 2024-09-07 06:35:02 +05:30
laurenspriem
23eaab0757 [mob][photos] Fix regression I created 2024-09-06 17:27:42 +02:00
Manav Rathi
c662023819 Mirror the parse 2024-09-06 20:55:31 +05:30
Manav Rathi
3d1c106759 allSettled swallows errors
all still runs to completion, it just rejects early
2024-09-06 19:58:13 +05:30
Manav Rathi
90e2dca36b Fin 2 2024-09-06 19:58:13 +05:30
Manav Rathi
79b2933be7 Fin 1 2024-09-06 19:58:13 +05:30
Manav Rathi
eb16c925d2 Prep 2024-09-06 19:58:13 +05:30
Manav Rathi
1bef528fde Prune 2024-09-06 19:58:13 +05:30
Manav Rathi
bcf579e7d7 Don't need the squares 2024-09-06 19:58:13 +05:30
Manav Rathi
bf7cbe141d lt wip 2024-09-06 19:58:13 +05:30
Manav Rathi
fce4295e2a PF 2024-09-06 19:58:13 +05:30
Manav Rathi
fc95069421 City parse 1 2024-09-06 19:58:13 +05:30
Manav Rathi
77ac215b76 Fix lint 2024-09-06 19:58:13 +05:30
Manav Rathi
85397732c8 Rename 2024-09-06 19:58:13 +05:30
Manav Rathi
49a81c10db Better mirror the google format by including seconds and using UTC 2024-09-06 19:58:13 +05:30
Manav Rathi
b742ffcafd Doc 2024-09-06 19:58:13 +05:30
Manav Rathi
55ece20d70 timestamp is a string 2024-09-06 19:58:13 +05:30
Manav Rathi
261a7f278b Fix 2024-09-06 19:58:13 +05:30
Manav Rathi
e6605d7ac9 Log 2024-09-06 19:58:13 +05:30
Manav Rathi
20247493c8 Separate parsing 2024-09-06 19:58:13 +05:30
Manav Rathi
cfea740511 Parse 2024-09-06 19:58:13 +05:30
Manav Rathi
9e48010ee6 Latlng 2024-09-06 19:58:13 +05:30
Manav Rathi
ff4b388877 Clean 2024-09-06 19:58:13 +05:30
Manav Rathi
5195e2ac74 Move 2024-09-06 19:58:13 +05:30
Manav Rathi
f958b16343 Rearrange 2024-09-06 19:58:12 +05:30
Manav Rathi
18e3adde11 Refactor search code
In prep for moving location tags handling to @/new
2024-09-06 19:58:12 +05:30
Manav Rathi
9476d26972 Mention version 2024-09-06 19:58:12 +05:30
Manav Rathi
8cfe36be68 Remove legacy locale mapper 2024-09-06 19:58:12 +05:30
Manav Rathi
6e8514e08c Add sanity checker 2024-09-06 19:58:12 +05:30
Manav Rathi
c67a6b0c9e Clean 2024-09-06 19:58:12 +05:30
Manav Rathi
13199bb3f7 Use 2024-09-06 19:58:12 +05:30
Manav Rathi
5fd0b46756 Remove legacy apiOrigin migration
> "Note that the legacy value was never in production builds, only nightlies, so
  this code can be removed soon"
2024-09-06 19:58:12 +05:30
Manav Rathi
c90315679f Migrator 2024-09-06 19:58:12 +05:30
Manav Rathi
a9be915f87 Remote Loc 1 2024-09-06 19:58:12 +05:30
Manav Rathi
57e7eb9e05 Keep them separate 2024-09-06 19:58:12 +05:30
Manav Rathi
785e96036a Add cleanup code 2024-09-06 19:58:12 +05:30
Manav Rathi
98979a2271 New path 2024-09-06 19:58:12 +05:30
Manav Rathi
eb91b6ea6d Doc 2024-09-06 19:58:12 +05:30
Manav Rathi
9af44e15b4 Keygen 2024-09-06 19:58:12 +05:30
Manav Rathi
4edaebe054 Split 2024-09-06 19:58:12 +05:30
ashilkn
fe92c1b30f [mob][photos] Fix discovery section not appearing 2024-09-06 19:19:43 +05:30
laurenspriem
e9d6f46997 [mob][photos] Use antialias with clip image 2024-09-06 14:16:27 +02:00
laurenspriem
9b743d7afe [mob][photos] Stop using ByteData directly 2024-09-06 13:51:01 +02:00
ashilkn
e1feb8bcd5 [mob][photos] UI changes 2024-09-06 16:47:34 +05:30
laurenspriem
c94db7e9b8 [mob][photos] Remove unused method 2024-09-06 13:10:56 +02:00
Laurens Priem
dfc35d00da [mob][photos] Log with .log instead of .txt (#3150)
## Description

Title
2024-09-06 12:47:38 +02:00
ashilkn
8b2322ef6c [mob][photos] Minor change 2024-09-06 16:17:17 +05:30
laurenspriem
9bd29228b0 [mob][photos] Log with .log instead of .txt 2024-09-06 12:38:50 +02:00
Neeraj Gupta
3437b41114 [mob] Ensure file is not uploaded before deleting localFile 2024-09-06 15:17:01 +05:30
ashilkn
76a1423e72 [auth] Add space between lock and search icon 2024-09-06 14:50:45 +05:30
ashilkn
b99145e863 Merge branch 'main' into auth_lock_icon 2024-09-06 14:40:59 +05:30
Manav Rathi
e2ec5469a7 [server] Log slowUpload for all destinations (#3148)
## Description

## Tests
2024-09-06 13:38:17 +05:30
Neeraj Gupta
9920578ca2 [server] Log slowUpload for all destinations 2024-09-06 13:29:57 +05:30
Neeraj Gupta
be1ca57515 [mob] Add gen id in temp file path 2024-09-06 11:41:52 +05:30
Neeraj Gupta
7c2ce513df [mob] Additional check for fileSize for multipart upload 2024-09-06 11:41:52 +05:30
Neeraj Gupta
1b6dbbc288 [mob] Compute encFileSize just once 2024-09-06 11:41:52 +05:30
Neeraj Gupta
138515da02 [mob] Reuse same fileSize 2024-09-06 11:41:52 +05:30
Neeraj Gupta
5820d03bb5 [mob] Rethrow exception due to content size 2024-09-06 11:41:52 +05:30
Neeraj Gupta
4999e9d944 [mob] Update uuid pkg 2024-09-06 11:41:52 +05:30
Manav Rathi
3ef528cdf6 [docs] Mention auth s3 (#3146) 2024-09-06 09:31:33 +05:30
Manav Rathi
1571b70716 yarn pretty 2024-09-06 09:28:09 +05:30
Manav Rathi
16181dd1b9 [docs] Mention auth s3 2024-09-06 09:27:36 +05:30
Prateek Sunal
f7d9a3cd17 mob[panorama]: add back button to viewer screen (#3140)
## Description

Add back button to Panorama screen which will disappear as soon as timer
expires i.e. 5 seconds and reappear on screen tap.

## Tests
2024-09-06 06:33:18 +05:30
Prateek Sunal
1e6d91b50f fix(upload-status): always sort list 2024-09-06 02:38:54 +05:30
Prateek Sunal
73bdba5076 fix(panorama): add back button to viewer screen 2024-09-06 02:31:55 +05:30
Prateek Sunal
c67540b728 [auth](macos) update podfile lock (#3130)
## Description

## Tests
2024-09-05 14:59:40 +05:30
Manav Rathi
3df7ec4692 [server] Load museum.yaml after configuration.yaml (#3134)
Since museum.yaml is gitignored, loading it the last makes it easier to
do ad-hoc configuration changes without marking the git tree dirty.
2024-09-05 10:24:09 +05:30
Manav Rathi
bd94e27af6 Add an example 2024-09-05 10:23:20 +05:30
Manav Rathi
9a37542158 [server] Load museum.yaml after configuration.yaml
Since museum.yaml is gitignored, loading it the last makes it easier to do
ad-hoc configuration changes without marking the git tree dirty.
2024-09-05 09:59:32 +05:30
Manav Rathi
4fe7ec6257 Add hint on how to remove the temporary container 2024-09-05 09:43:49 +05:30
Manav Rathi
bdacd1058e 16 => 15 for now 2024-09-05 09:41:38 +05:30
Manav Rathi
7fb31eee0a Punctuation 2024-09-05 09:41:38 +05:30
Manav Rathi
f1adcd4573 Add macOS example 2024-09-05 09:41:37 +05:30
Manav Rathi
130b2757a9 [docs] Postgres 12 => 16 migration guide 2024-09-05 09:41:37 +05:30
Manav Rathi
c71b7de363 [desktop] Update dependencies (#3129)
Routine updates now that the latest release has been released.
2024-09-05 09:24:05 +05:30
Manav Rathi
ea8c28a205 Regen 2024-09-05 09:22:58 +05:30
Aman Raj Singh Mourya
f448c66c17 [mob][photos] Fixed bottom button spacing 2024-09-04 22:07:14 +05:30
Aman Raj Singh Mourya
3c850ef195 [mob][photos] Fix border of card widget 2024-09-04 21:55:49 +05:30
Aman Raj Singh Mourya
9afb59ea87 [auth] Extract strings 2024-09-04 21:46:33 +05:30
Aman Raj Singh Mourya
b3c6c0fc9b [mob][photos] Show lockscreen when guestview is enabled and app is killed 2024-09-04 20:44:47 +05:30
Prateek Sunal
ae758a114a update: pod file 2024-09-04 20:04:04 +05:30
Manav Rathi
01e1af1fbd [desktop] Update dependencies 2024-09-04 19:28:19 +05:30
Manav Rathi
3759019cbc [desktop] Start next release train (#3128) 2024-09-04 19:06:04 +05:30
Manav Rathi
9cff56c1a4 [desktop] Start next release train 2024-09-04 19:03:21 +05:30
Manav Rathi
511fb8de6a photosd-v1.7.4 (#3127) 2024-09-04 18:39:42 +05:30
Manav Rathi
fd36ede27b photosd-v1.7.4 2024-09-04 18:36:53 +05:30
Ashil
a904263ed5 [mob][photos] Consider sample aspect ratio or pixel aspect ratio when parsing width and height of video used for calculating aspect ratio (#3126)
## Description

Most videos have a [Pixel aspect
ratio](https://en.wikipedia.org/wiki/Pixel_aspect_ratio#:~:text=The%20aspect%20ratio%20of%20the%20pixels%20themselves%20is%20known%20as,PAR%20%3D%20DAR%20%2F%20SAR)
of 1:1. For the ones that do not have a PAR of 1:1, just using height
and width from exif to calculate the aspect ratio of the video won't
work. In such cases, `sample_aspect_ratio` should be considered.

## Tests

Tested and working without bugs.
2024-09-04 18:04:21 +05:30
ashilkn
02aae58e71 [mob][photos] Consider sample aspect ratio or pixel aspect ratio when parsing width and height of video used for calculating aspect ratio 2024-09-04 17:54:21 +05:30
Manav Rathi
7495b6c2c4 [desktop] Add What's New (2) (#3125) 2024-09-04 15:38:25 +05:30
Manav Rathi
aa1e2188fb [desktop] Add What's New (2) 2024-09-04 15:30:43 +05:30
Manav Rathi
8c3c401efb [server] Increase expiry time for free subscriptions (#3124)
## Description
For existing users, the expiry time is random date in future: Tuesday,
July 2, 2120
## Tests
Locally, made the change to show expiry time for free plan and verified
that
- for existing account, new expiry time was shown.
 - For new account, the expiry time was 100 years from now.
2024-09-04 13:14:21 +05:30
Neeraj Gupta
5cd37a02c7 [server] Bump up expiry_time for free plan 2024-09-04 13:05:36 +05:30
Manav Rathi
2bb1670428 [desktop] Clustering - Incorporate low quality face heuristics (#3123) 2024-09-04 12:43:45 +05:30
Manav Rathi
485e8444fe Inc 2024-09-04 12:31:02 +05:30
Manav Rathi
5395ca5caf UI 3 2024-09-04 12:18:55 +05:30
Neeraj Gupta
c416819f0a [server] Increase duration of free trial 2024-09-04 12:18:06 +05:30
Manav Rathi
816b26475a UI 2 2024-09-04 11:06:20 +05:30
Manav Rathi
46d7d4e587 UI 1 2024-09-04 11:00:35 +05:30
Manav Rathi
263f94418d Filter during enumeration 2024-09-04 10:57:38 +05:30
Manav Rathi
f990863bb2 Retain that info 2024-09-04 10:44:32 +05:30
Manav Rathi
d91cd53375 Ren 2024-09-04 10:37:37 +05:30
Manav Rathi
6a9fdd6c77 sw 2024-09-04 10:36:27 +05:30
Manav Rathi
f1185fcade Add low quality face condition 2024-09-04 10:33:16 +05:30
Aman Raj Singh Mourya
1fde4b9f16 [mob][photos] same action like new card widget when tap on Collect event photos 2024-09-03 17:35:17 +05:30
Aman Raj Singh Mourya
db1eb19ef0 [mob][photos] Floating button background color fixed 2024-09-03 17:16:11 +05:30
Aman Raj Singh Mourya
9b0d11963c [mob][photos] Fixed border stroke 2024-09-03 16:49:50 +05:30
Aman Raj Singh Mourya
0b5e057e4e [auth] Changed location of lock icon 2024-09-03 15:20:17 +05:30
Aman Raj Singh Mourya
d139d23c21 [auth] Lock icon to manually lock app on desktop 2024-09-03 14:24:41 +05:30
Aman Raj Singh Mourya
6185556b9b [mob][photos] Fix floating button background color 2024-09-03 13:21:45 +05:30
Aman Raj Singh Mourya
bbaabeef38 [mob][photos] Hide share icon when collection is from Collect Photos 2024-08-21 16:23:13 +05:30
Aman Raj Singh Mourya
093b736a3b [mob][photos] Fixed sharing of album 2024-08-21 16:19:19 +05:30
Aman Raj Singh Mourya
70cc6a35d7 [mob][photos] Used better names 2024-08-21 13:36:54 +05:30
Aman Raj Singh Mourya
5792c2bae6 [mob][photos] Add New Album Card Widget for Collecting Photos 2024-08-17 01:57:38 +05:30
883 changed files with 46898 additions and 24253 deletions

BIN
.github/assets/obtainium-badge.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,56 @@
name: "Internal release (auth mobile)"
on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.24.3"
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: auth
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Setup keys
uses: timheuer/base64-to-file@v1
with:
fileName: "keystore/ente_auth_key.jks"
encodedString: ${{ secrets.SIGNING_KEY }}
- name: Build PlayStore AAB
run: |
flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
env:
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
- name: Upload AAB to PlayStore
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: io.ente.auth
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
track: internal

View File

@@ -8,7 +8,7 @@ on:
- ".github/workflows/auth-lint.yml"
env:
FLUTTER_VERSION: "3.24.1"
FLUTTER_VERSION: "3.24.3"
jobs:
lint:

View File

@@ -29,7 +29,7 @@ on:
- "auth-v*"
env:
FLUTTER_VERSION: "3.24.1"
FLUTTER_VERSION: "3.24.3"
jobs:
build-ubuntu:
@@ -45,6 +45,11 @@ jobs:
with:
submodules: recursive
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:

View File

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

View File

@@ -9,7 +9,7 @@ on:
env:
FLUTTER_VERSION: "3.24.1"
FLUTTER_VERSION: "3.24.3"
jobs:
lint:

View File

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

View File

@@ -7,6 +7,11 @@ on:
- "web/**"
- ".github/workflows/web-lint.yml"
# Cancel in-progress lint runs when a new commit is pushed.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest

View File

@@ -42,11 +42,12 @@ You can also clone this repository and choose to self-host.
<div align="center">
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
[<img height="42" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
[<img height="42" src=".github/assets/web-badge.svg">](https://web.ente.io)
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
[<img height="40" src=".github/assets/obtainium-badge.png">](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.photos.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Photos%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-photos*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
[<img height="40" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
[<img height="40" src=".github/assets/web-badge.svg">](https://web.ente.io)
</div>
@@ -67,11 +68,12 @@ want to give back, please check out Ente Photos or spread the word.
<div align="center">
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
[<img height="40" src=".github/assets/obtainium-badge.png">](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.auth.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Auth%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-auth*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
[<img height="40" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
[<img height="40" src=".github/assets/web-badge.svg">](https://auth.ente.io)
</div>

View File

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

View File

@@ -3,6 +3,9 @@
{
"title": "1xBet"
},
{
"title": "23andme"
},
{
"title": "3Commas"
},
@@ -17,6 +20,12 @@
"title": "airtm",
"hex": "000000"
},
{
"title": "aliyun",
"altNames": [
"阿里云"
]
},
{
"title": "Amazon"
},
@@ -27,6 +36,16 @@
{
"title": "AscendEX"
},
{
"title": "BaiduCloud",
"altNames": [
"百度云",
"baiduyun"
]
},
{
"title": "Band"
},
{
"title": "Battle.net",
"slug": "battlenet",
@@ -35,12 +54,25 @@
"Blizzard"
]
},
{
"title": "BBS.NGA",
"altNames": [
"NGA玩家社区",
"NGA社区"
]
},
{
"title": "Bethesda",
"altNames": [
"Bethesda Softworks"
]
},
{
"title": "Binance",
"altNames": [
"币安"
]
},
{
"title": "BinanceUS",
"slug": "binance_us",
@@ -119,6 +151,12 @@
{
"title": "Bybit"
},
{
"title": "Canva"
},
{
"title": "Capacities"
},
{
"title": "CERN"
},
@@ -136,6 +174,9 @@
{
"title": "Cloudflare"
},
{
"title": "Coinbase"
},
{
"title": "CoinDCX"
},
@@ -185,6 +226,9 @@
"title": "dus.net",
"slug": "dusnet"
},
{
"title": "eBay"
},
{
"title": "ecitizen kenya",
"slug": "ecitizen_kenya"
@@ -220,6 +264,9 @@
"title": "Firefox",
"slug": "mozilla"
},
{
"title": "ForUsAll"
},
{
"title": "G2A"
},
@@ -242,6 +289,19 @@
"Госуслуги"
]
},
{
"title": "GOV.UK",
"slug": "gov_uk",
"altNames": [
"Government Gateway"
]
},
{
"title": "Guideline"
},
{
"title": "Gusto"
},
{
"title": "Habbo"
},
@@ -264,6 +324,10 @@
{
"title": "IceDrive"
},
{
"title": "ID.me",
"slug": "IDme"
},
{
"title": "Infomaniak"
},
@@ -292,6 +356,12 @@
"title": "Jagex",
"hex": "D3D800"
},
{
"title": "jianguoyun",
"altNames": [
"坚果云"
]
},
{
"title": "Kagi"
},
@@ -321,9 +391,23 @@
"title": "La Poste",
"slug": "laposte"
},
{
"title": "Lark",
"altNames": [
"飞书"
]
},
{
"title": "Letterboxd"
},
{
"title": "Linux.Do",
"slug": "LINUX_DO",
"altNames": [
"LINUX DO",
"LinxDo"
]
},
{
"title": "Local",
"slug": "local_wp",
@@ -333,6 +417,10 @@
"Local Wordpress"
]
},
{
"title": "Login.gov",
"slug": "login_gov"
},
{
"title": "Marketplace.tf",
"slug": "marketplacedottf"
@@ -407,6 +495,13 @@
"title": "Name.com",
"slug": "name_com"
},
{
"title": "NeteaseMail",
"altNames": [
"网易邮箱",
"Mail.163"
]
},
{
"title": "NextDNS"
},
@@ -420,6 +515,12 @@
"title": "ngrok",
"hex": "858585"
},
{
"title": "Nintendo",
"altNames": [
"任天堂"
]
},
{
"title": "Njalla"
},
@@ -448,7 +549,10 @@
},
{
"title": "okx",
"hex": "000000"
"hex": "000000",
"altNames": [
"欧易"
]
},
{
"title": "Parsec"
@@ -456,6 +560,11 @@
{
"title": "PayPal"
},
{
"title": "PBTech",
"slug": "pbtech",
"hex": "f08222"
},
{
"title": "pCloud"
},
@@ -492,10 +601,21 @@
{
"title": "Proxmox"
},
{
"title": "qiniuyun",
"altNames": [
"七牛云",
"qiniu"
]
},
{
"title": "Real-Debrid",
"slug": "real_debrid"
},
{
"title": "RealMe",
"slug": "realme"
},
{
"title": "Registro br",
"slug": "registro_br",
@@ -541,6 +661,13 @@
{
"title": "SimpleLogin"
},
{
"title": "Simplicity",
"altNames": [
"simplicitynz",
"simplicity.kiwi"
]
},
{
"title": "Sipgate"
},
@@ -576,9 +703,24 @@
"title": "Synology DSM",
"slug": "synology_dsm"
},
{
"title": "T-Mobile",
"altNames": [
"T Mobile",
"T-Mobile ID"
]
},
{
"title": "TCPShield"
},
{
"title": "tencent cloud",
"slug": "tencent_cloud"
"altNames": [
"腾讯云",
"tencentcloud"
]
},
{
"title": "Techlore",
"altNames": [
@@ -597,6 +739,15 @@
"title": "Termius",
"hex": "858585"
},
{
"title": "Titan"
},
{
"title": "tianyiyun",
"altNames": [
"天翼云"
]
},
{
"title": "TorGuard"
},
@@ -646,6 +797,15 @@
{
"title": "Vikunja"
},
{
"title": "volcengine",
"altNames": [
"火山引擎"
]
},
{
"title": "WARGAMING.NET"
},
{
"title": "Wealthfront"
},
@@ -688,4 +848,4 @@
]
}
]
}
}

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><g transform="translate(26.145 5.696)" fill="none" fill-rule="evenodd"><path d="M7.824 10.031a6 6 0 0 1 7.492 3.984L32.42 69.958a6 6 0 1 1-11.476 3.509L3.84 17.523a6 6 0 0 1 3.984-7.492Z" fill="#D91A62"/><rect fill="#7BC144" transform="rotate(26 20.845 34.313)" x="14.845" y="-.937" width="12" height="70.5" rx="6"/><path fill="#49A848" d="m18.689 25.047 5.144 16.826-7.713 15.815-5.144-16.827 7.713-15.814z"/></g></svg>

After

Width:  |  Height:  |  Size: 480 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340333809" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8815" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M245.824 651.52V459.776c0-37.44-18.56-72.512-51.2-91.264L64.32 291.328v465.472c0 11.712 6.976 23.36 16.256 28.096l400.32 233.856v-152c0-37.44-18.624-72.512-51.2-91.264L262.144 679.68c-9.344-7.04-16.32-16.384-16.32-28.096" fill="#008DD5" p-id="8816"></path><path d="M760.192 679.616l-167.616 98.24c-32.576 18.688-51.2 53.76-51.2 91.2v152.064l400.32-233.92a32.448 32.448 0 0 0 16.256-28.032v-467.84l-130.304 74.88c-32.576 18.688-51.2 53.76-51.2 91.2v191.808c0 14.08-6.976 23.36-16.256 30.4" fill="#EE3306" p-id="8817"></path><path d="M701.952 101.888L534.4 3.648a39.552 39.552 0 0 0-32.576 0L101.568 237.568l130.304 74.88c32.64 18.688 72.128 18.688 102.4 0l167.552-98.304c2.368-2.304 4.672-2.304 7.04-2.304a32.832 32.832 0 0 1 25.6 2.304l167.488 98.24c32.64 18.752 72.192 18.752 102.4 0l130.368-74.88-232.768-135.616z" fill="#5AB200" p-id="8818"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 180 180" xmlns="http://www.w3.org/2000/svg">
<ellipse style="" cx="90" cy="90" rx="90" ry="90" transform="matrix(1, 0, 0, 1, 0, -1.7763568394002505e-15)"/>
<path d="M 37.753 62.604 L 35.578 62.604 C 32.864 62.604 31.487 63.41 31.487 64.997 L 31.487 104.269 C 31.487 105.858 32.864 106.662 35.578 106.662 L 37.753 106.662 C 40.468 106.662 41.844 105.857 41.844 104.269 L 41.844 64.997 C 41.845 63.41 40.468 62.604 37.753 62.604 Z" fill="white" style="transform-origin: 90px 90px;"/>
<path d="M 76.105 101.852 C 76.105 97.167 79.194 93.201 83.461 91.837 C 83.949 89.653 84.194 87.244 84.199 84.611 C 84.199 70.415 76.978 62.596 63.865 62.596 L 49.886 62.596 C 47.934 62.596 47.024 63.498 47.024 65.434 L 47.024 103.788 C 47.024 105.724 47.934 106.625 49.885 106.625 L 63.864 106.625 C 68.863 106.625 73.003 105.485 76.215 103.293 C 76.145 102.816 76.108 102.334 76.104 101.852 M 63.863 97.796 L 57.427 97.796 L 57.427 71.425 L 63.863 71.425 C 71.916 71.425 73.607 78.596 73.607 84.611 C 73.607 90.626 71.916 97.796 63.863 97.796 Z" fill="white" style="transform-origin: 90px 90px;"/>
<path d="M 86.724 97.043 C 89.403 97.043 91.576 99.196 91.576 101.853 C 91.576 104.509 89.403 106.663 86.724 106.663 C 84.044 106.663 81.872 104.509 81.872 101.853 C 81.872 99.196 84.044 97.043 86.724 97.043 Z" fill="#2EA76D" style="transform-origin: 90px 90px;"/>
<path d="M 155.722 95.102 C 155.58 95.042 155.428 95.008 155.273 95.003 C 154.61 94.981 154.158 95.239 153.759 95.879 C 153.523 96.262 153.29 96.652 153.059 97.042 C 152.179 98.528 151.27 100.063 149.949 101.164 C 148.155 102.657 145.557 103.356 143.329 102.95 C 142.004 102.71 141.058 101.759 140.497 101.005 C 139.469 99.618 138.968 97.752 139.048 95.6 C 142.328 95.326 152.211 93.878 152.997 86.451 C 153.15 85.011 152.736 83.706 151.801 82.677 C 150.616 81.372 148.723 80.652 146.474 80.652 C 139.882 80.652 133.376 87.488 132.551 95.28 C 132.325 97.418 132.594 99.391 133.351 101.151 C 132.871 101.611 132.322 101.994 131.727 102.289 C 131.174 102.549 130.696 102.603 130.345 102.443 C 129.911 102.243 129.735 101.74 129.666 101.355 C 129.406 99.928 129.741 98.288 130.138 96.594 C 130.371 95.6 130.665 94.566 130.922 93.652 C 131.719 90.833 132.544 87.919 132.269 84.975 C 132.019 82.28 130.11 80.605 127.288 80.605 C 123.332 80.605 120.727 83.404 119.041 85.803 C 119.006 84.015 118.576 82.717 117.733 81.849 C 116.932 81.023 115.754 80.604 114.235 80.604 C 110.355 80.604 107.782 83.292 106.101 85.645 C 106.123 85.429 106.146 85.208 106.17 84.988 C 106.276 83.979 106.323 82.534 105.511 81.641 C 105.028 81.109 104.301 80.839 103.351 80.839 C 102.697 80.819 102.044 80.87 101.402 80.992 C 101.393 80.993 100.521 81.162 100.189 81.464 C 99.608 81.993 99.793 82.722 99.899 83.138 C 99.912 83.19 99.925 83.239 99.931 83.28 C 99.998 83.741 100.018 84.207 99.992 84.672 C 99.87 87.502 99.341 90.331 98.838 92.725 C 98.566 94.015 98.26 95.327 97.958 96.622 C 97.285 99.496 96.592 102.466 96.236 105.454 C 96.157 106.035 96.563 106.569 97.143 106.648 C 97.196 106.655 97.25 106.658 97.303 106.657 L 97.512 106.66 C 99.645 106.688 101.74 106.601 102.233 105.395 C 102.778 104.065 103.08 102.447 103.346 101.016 L 103.464 100.382 C 104.096 97.092 104.649 94.735 105.762 91.704 C 106.336 90.142 107.384 88.736 108.232 87.683 C 109.258 86.409 110.366 85.162 111.615 85.13 C 112.131 85.104 112.469 85.257 112.723 85.592 C 113.936 87.197 112.426 92.376 111.781 94.589 C 111.641 95.067 111.523 95.471 111.449 95.767 L 111.004 97.476 C 110.35 99.968 109.673 102.544 109.327 105.15 C 109.292 105.417 109.259 105.685 109.232 105.956 L 109.203 106.319 L 109.476 106.527 C 110.026 106.951 113.957 106.358 113.989 106.349 C 115.438 105.863 115.753 104.511 115.857 104.067 C 116.127 102.918 116.366 101.743 116.596 100.609 L 116.613 100.525 C 117.045 98.387 117.493 96.176 118.162 94.043 C 119.469 89.891 121.21 87.059 123.341 85.624 C 124.252 85.009 125.188 84.94 125.611 85.46 C 126.347 86.357 125.881 88.786 125.681 89.823 C 125.406 91.262 125.053 92.725 124.713 94.141 L 124.695 94.214 C 124.476 95.116 124.26 96.017 124.058 96.922 C 123.435 99.724 122.924 103.199 124.515 105.205 C 125.325 106.227 126.578 106.745 128.24 106.745 C 130.003 106.745 131.661 106.162 133.458 104.911 C 133.953 104.563 134.453 104.158 135.037 103.677 C 137.06 105.957 139.357 106.934 142.674 106.934 C 150.172 106.934 153.697 101.994 155.697 98.279 C 155.963 97.803 156.198 97.31 156.399 96.804 C 156.647 96.12 156.349 95.372 155.721 95.103 M 146.526 85.722 C 146.536 85.837 146.546 85.953 146.547 86.07 C 146.547 86.244 146.538 86.418 146.52 86.593 C 146.464 87.17 146.35 87.742 146.181 88.298 C 145.111 91.738 142.099 92.347 139.493 92.434 C 139.836 90.966 140.345 89.54 141.008 88.185 C 142.275 85.624 143.868 84.034 145.162 84.033 C 145.282 84.033 145.401 84.051 145.515 84.083 C 145.575 84.104 145.633 84.129 145.688 84.16 L 145.743 84.184 C 145.765 84.192 145.786 84.203 145.806 84.216 C 145.863 84.253 145.915 84.297 145.964 84.345 L 146.008 84.386 C 146.026 84.4 146.041 84.416 146.057 84.433 C 146.092 84.474 146.124 84.518 146.153 84.564 L 146.191 84.622 C 146.22 84.662 146.246 84.704 146.269 84.747 C 146.283 84.774 146.294 84.805 146.329 84.885 C 146.366 84.97 146.397 85.057 146.425 85.145 L 146.449 85.252 C 146.478 85.365 146.5 85.478 146.515 85.593 L 146.526 85.722 Z" fill="white" style="transform-origin: 90px 90px;"/>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340558126" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="16285" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M891.318857 340.845714c4.900571 0 9.728 0.292571 14.628572 0.804572a409.965714 409.965714 0 0 1 108.836571 30.061714c10.093714 4.534857 12.580571 8.192 3.949714 17.334857-24.868571 26.624-45.494857 57.051429-61.001143 89.965714-16.822857 35.328-35.108571 69.851429-52.297142 105.033143a225.28 225.28 0 0 1-52.150858 69.412572c-53.613714 48.493714-116.150857 68.973714-187.538285 59.099428-81.92-11.337143-159.451429-38.985143-232.740572-75.483428a143.506286 143.506286 0 0 1-10.459428-5.485715 5.339429 5.339429 0 0 1 0.292571-9.216l5.12-2.706285c59.245714-31.670857 108.836571-75.849143 156.525714-122.294857 20.187429-19.529143 39.497143-40.009143 59.904-59.318858A345.014857 345.014857 0 0 1 804.571429 352.256c13.165714-3.218286 26.550857-5.778286 39.789714-8.630857h0.585143l28.233143-2.56" fill="#133C9A" p-id="16286"></path><path d="M317.659429 913.846857c-8.996571-0.512-31.158857-3.584-33.865143-3.949714a536.429714 536.429714 0 0 1-165.083429-48.274286c-30.208-14.116571-59.245714-30.72-88.356571-46.957714-19.163429-10.678857-27.794286-27.282286-27.648-49.883429 0.585143-83.382857 0.585143-166.765714 0-250.148571C2.413714 461.019429 0.731429 407.405714 0 353.718857c0-4.754286 0.731429-9.508571 2.194286-13.897143 3.291429-9.728 9.947429-10.24 16.530285-3.949714 7.606857 7.314286 13.677714 16.237714 21.211429 23.405714 67.291429 66.413714 138.752 127.195429 218.770286 177.225143 45.056 28.891429 91.940571 54.710857 140.434285 77.385143 77.750857 35.328 157.549714 66.486857 241.078858 86.235429 73.874286 17.481143 145.627429 6.436571 205.458285-40.374858 18.285714-15.652571 27.282286-27.062857 48.932572-55.881142a359.862857 359.862857 0 0 1-37.376 72.850285c-13.897143 21.942857-45.348571 51.2-69.193143 74.093715-36.278857 35.108571-83.748571 63.561143-128.292572 87.552-48.566857 26.185143-99.035429 47.104-152.941714 58.514285-27.648 6.948571-67.584 14.848-81.334857 15.579429-2.413714-0.146286-10.678857 1.682286-14.848 1.389714-35.547429 2.633143-57.490286 3.657143-92.891429 0z" fill="#3370FF" p-id="16287"></path><path d="M165.083429 110.518857a52.443429 52.443429 0 0 1 7.460571 0c152.649143 0 304.128 2.486857 456.630857 2.486857 0.292571 0 0.585143 0 0.731429 0.219429 14.189714 12.361143 27.282286 25.746286 39.277714 40.155428 34.450286 34.230857 60.123429 93.622857 77.677714 129.755429 8.777143 25.014857 21.942857 48.859429 28.16 76.8v0.438857c-15.579429 5.046857-30.72 11.190857-45.348571 18.505143-44.178286 22.381714-64.219429 38.765714-100.790857 74.752-19.968 19.529143-37.010286 37.083429-63.488 62.098286a563.346286 563.346286 0 0 1-29.769143 26.916571c-7.021714-12.434286-125.732571-244.589714-364.251429-427.300571" fill="#00D6B9" p-id="16288"></path></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340195618" class="icon" viewBox="0 0 1050 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6355" xmlns:xlink="http://www.w3.org/1999/xlink" width="205.078125" height="200"><path d="M681.80215 142.259694a100.529011 100.529011 0 0 1-66.041812 37.537087 1221.89083 1221.89083 0 0 1-206.102068 5.630563l-4.486854-3.372473V0c-37.537087 37.537087-82.962827 37.537087-129.884186 41.672032v143.69666H128.130119A120.52924 120.52924 0 0 0 2.322226 289.416805a211.439372 211.439372 0 0 0-2.228765 37.537087v581.062375a119.708116 119.708116 0 0 1 75.074174-37.537087 428.157397 428.157397 0 0 1 57.801249-4.516181h425.224812a119.356206 119.356206 0 0 0 119.004296-97.948336 231.204995 231.204995 0 0 0 3.372473-42.434504V156.570709z m-203.814651 675.667564H130.388209V309.680967a64.516868 64.516868 0 0 1 72.816084-72.816084h72.845409v265.369609H221.972836a70.557993 70.557993 0 0 0-75.044848 63.431812 239.328255 239.328255 0 0 1 128.359242-10.87989v212.084541c0 18.768543 3.753709 22.522252 22.141016 22.522252h85.220917c18.768543 0 22.522252-3.372473 22.522253-21.75978V569.801249c0-13.13798 4.134945-17.272925 16.891689-16.510453a301.235122 301.235122 0 0 0 48.798213 0 70.557993 70.557993 0 0 0 64.92743-62.698666c-40.90956 23.284724-85.044962 7.888653-129.033737 13.519217V241.351738h144.517785v504.873819a65.308666 65.308666 0 0 1-73.314623 71.320465z m572.440575-299.534223v-16.891689h-67.449453a93.842717 93.842717 0 0 0 66.83361-90.910132 201.996449 201.996449 0 0 0 0-20.528095V103.608225a127.156882 127.156882 0 0 1-70.206083 33.783378 581.267656 581.267656 0 0 1-67.18552 7.888654h-60.059339a121.966207 121.966207 0 0 0-128.623174 131.526433v747.19331c27.038433-34.89776 64.92743-34.135288 102.464517-37.537087v-130.617332h88.974626a124.282949 124.282949 0 0 0 134.898906-135.133513c0.762472-67.449453 0.381236-134.898906 0.381236-202.348359z m-103.608225 216.19016a64.194284 64.194284 0 0 1-70.587319 70.587319h-48.387651V270.267026a64.516868 64.516868 0 0 1 75.074174-75.074174h44.663268v276.278824c-75.074174 7.126181-94.223953 20.528094-101.731371 61.584284 15.777307-2.932585 31.906524-7.126181 48.416977-8.6218s34.54585 0 53.69563 0v17.59551z m0 0" p-id="6356" fill="#d81e06"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340610287" class="icon" viewBox="0 0 1653 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17270" xmlns:xlink="http://www.w3.org/1999/xlink" width="322.8515625" height="200"><path d="M344.8620198 721.82988526a57.857089 57.857089 0 0 1-46.13274501-56.07295017v-308.4012244a59.89610558 59.89610558 0 0 1 46.13274501-56.07295017l286.35436058-62.06256065 30.07549089-122.72329718H328.80476645A210.78331632 210.78331632 0 0 0 116.61962599 327.28021902v364.47417458a213.71440233 213.71440233 0 0 0 212.18514046 212.31257895h332.48710482l-30.07549089-122.21354321zM1178.05508073 116.49690269H843.01920461l30.58524561 122.72329718 286.35436059 62.06256065a57.98452749 57.98452749 0 0 1 46.132745 56.07295017v308.4012244a60.15098257 60.15098257 0 0 1-46.13274502 56.07295017l-286.35436057 62.06256066-30.58524561 122.72329716H1178.05508073a212.44001744 212.44001744 0 0 0 212.94977139-212.82233291V327.28021902A213.33208686 213.33208686 0 0 0 1178.05508073 116.49690269z" fill="#F76E05" p-id="17271"></path><path d="M631.21638038 495.49906876h244.29964793v30.07549166H631.21638038z" fill="#F76E05" p-id="17272"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 508 508" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2"><g transform="matrix(.26718 0 0 .26718 0 0)"><circle cx="950" cy="950" r="950" fill="#7d2ae7"/><circle cx="950" cy="950" r="950" fill="url(#prefix___Radial1)"/><circle cx="950" cy="950" r="950" fill="url(#prefix___Radial2)"/><circle cx="950" cy="950" r="950" fill="url(#prefix___Radial3)"/><circle cx="950" cy="950" r="950" fill="url(#prefix___Radial4)"/></g><path d="M446.744 276.845c-.665 0-1.271.43-1.584 1.33-4.011 11.446-9.43 18.254-13.891 18.254-2.563 0-3.6-2.856-3.6-7.336 0-11.21 6.71-34.982 10.095-45.82.392-1.312.646-2.485.646-3.483 0-3.15-1.722-4.696-5.987-4.696-4.598 0-9.547 1.8-14.36 10.233-1.663-7.435-6.691-10.683-13.715-10.683-8.12 0-15.965 5.224-22.421 13.696-6.456 8.471-14.048 11.25-19.76 9.88 4.108-10.057 5.634-17.57 5.634-23.145 0-8.746-4.324-14.028-11.308-14.028-10.624 0-16.747 10.134-16.747 20.797 0 8.237 3.736 16.708 11.954 20.817-6.887 15.573-16.943 29.66-20.758 29.66-4.93 0-6.379-24.123-6.105-41.38.176-9.9.998-10.408.998-13.401 0-1.722-1.115-2.896-5.595-2.896-10.448 0-13.676 8.844-14.165 18.998a50.052 50.052 0 01-1.8 11.406c-4.363 15.573-13.363 27.39-19.232 27.39-2.72 0-3.463-2.72-3.463-6.28 0-11.21 6.28-25.219 6.28-37.173 0-8.784-3.854-14.34-11.112-14.34-8.55 0-19.858 10.173-30.56 29.229 3.521-14.595 4.97-28.721-5.459-28.721a14.115 14.115 0 00-6.476 1.683 3.689 3.689 0 00-2.113 3.56c.998 15.535-12.521 55.329-25.336 55.329-2.328 0-3.463-2.524-3.463-6.593 0-11.23 6.691-34.943 10.056-45.801.43-1.409.666-2.622.666-3.678 0-2.974-1.84-4.5-6.007-4.5-4.578 0-9.547 1.741-14.34 10.174-1.683-7.435-6.711-10.683-13.735-10.683-11.523 0-24.397 12.19-30.051 28.076-7.572 21.208-22.832 41.692-43.375 41.692-18.645 0-28.486-15.515-28.486-40.03 0-35.392 25.982-64.308 45.253-64.308 9.215 0 13.617 5.869 13.617 14.869 0 10.897-6.085 15.964-6.085 20.112 0 1.272 1.057 2.524 3.15 2.524 8.374 0 18.234-9.841 18.234-23.262 0-13.422-10.897-23.243-30.168-23.243-31.851 0-63.898 32.047-63.898 73.113 0 32.673 16.121 52.374 44 52.374 19.017 0 35.628-14.79 44.588-32.047 1.018 14.302 7.513 21.776 17.413 21.776 8.804 0 15.925-5.243 21.364-14.458 2.094 9.645 7.65 14.36 14.87 14.36 8.275 0 15.201-5.243 21.794-14.986-.097 7.65 1.644 14.85 8.276 14.85 3.13 0 6.867-.725 7.533-3.464 6.984-28.877 24.24-52.453 29.523-52.453 1.565 0 1.995 1.507 1.995 3.287 0 7.846-5.537 23.928-5.537 34.2 0 11.092 4.716 18.43 14.459 18.43 10.8 0 21.775-13.227 29.092-32.556 2.29 18.058 7.24 32.633 14.987 32.633 9.508 0 26.392-20.014 36.625-41.203 4.01.509 10.036.372 15.827-3.717-2.465 6.241-3.912 13.07-3.912 19.897 0 19.663 9.39 25.18 17.47 25.18 8.785 0 15.907-5.243 21.365-14.458 1.8 8.315 6.398 14.34 14.85 14.34 13.225 0 24.71-13.519 24.71-24.612 0-2.934-1.252-4.715-2.72-4.715zm-274.51 18.547c-5.342 0-7.435-5.38-7.435-13.401 0-13.93 9.528-37.193 19.604-37.193 4.402 0 6.065 5.185 6.065 11.524 0 14.145-9.059 39.07-18.235 39.07zm182.948-41.574c-3.189-3.796-4.343-8.961-4.343-13.559 0-5.673 2.074-10.467 4.558-10.467 2.485 0 3.248 2.446 3.248 5.85 0 5.693-2.035 14.008-3.463 18.176zm41.418 41.574c-5.34 0-7.434-6.182-7.434-13.401 0-13.441 9.528-37.193 19.682-37.193 4.402 0 5.967 5.146 5.967 11.524 0 14.145-8.902 39.07-18.215 39.07z" fill="#fff" fill-rule="nonzero"/><defs><radialGradient id="prefix___Radial1" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="scale(1469.491) rotate(-49.416 1.37 .302)"><stop offset="0" stop-color="#6420ff"/><stop offset="1" stop-color="#6420ff" stop-opacity="0"/></radialGradient><radialGradient id="prefix___Radial2" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="rotate(54.703 42.717 594.194) scale(1657.122)"><stop offset="0" stop-color="#00c4cc"/><stop offset="1" stop-color="#00c4cc" stop-opacity="0"/></radialGradient><radialGradient id="prefix___Radial3" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1023 -1030 473.711 470.491 367 1684)"><stop offset="0" stop-color="#6420ff"/><stop offset="1" stop-color="#6420ff" stop-opacity="0"/></radialGradient><radialGradient id="prefix___Radial4" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(595.999 1372 -2298.41 998.431 777 256)"><stop offset="0" stop-color="#00c4cc" stop-opacity=".73"/><stop offset="0" stop-color="#00c4cc"/><stop offset="1" stop-color="#00c4cc" stop-opacity="0"/></radialGradient></defs></svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,6 @@
<svg width="100%" height="100%" viewBox="0 0 78 78" fill="none" xmlns="http://www.w3.org/2000/svg">
<g style="mix-blend-mode:difference">
<circle cx="38.8209" cy="39" r="13.45" transform="rotate(-15 38.8209 39)" fill="white"></circle>
<path fill-rule="evenodd" clip-rule="evenodd" d="M54.7914 66.0811C54.6942 66.3374 54.5105 66.5518 54.271 66.6852C52.0346 67.9311 49.6099 68.9243 47.0245 69.617C30.1152 74.1478 12.7346 64.1131 8.20379 47.2038C3.67296 30.2946 13.7077 12.9139 30.6169 8.38311C33.2023 7.69037 35.7987 7.33813 38.3584 7.2989C38.6325 7.29469 38.8988 7.38849 39.1111 7.56192C41.8794 9.82347 44.4239 12.3787 46.6916 15.197C47.4731 16.1681 46.2983 17.5912 45.101 17.2444C41.2693 16.1343 37.0954 16.023 32.9609 17.1308C20.8828 20.3671 13.7152 32.7819 16.9515 44.8599C20.1878 56.938 32.6025 64.1056 44.6806 60.8693C48.8151 59.7615 52.3742 57.5781 55.1375 54.7009C56.001 53.8018 57.7299 54.4469 57.5387 55.6787C56.9839 59.2532 56.058 62.7384 54.7914 66.0811ZM65.4625 56.1737C64.7914 57.2153 63.3044 56.5354 63.4669 55.307C64.4343 47.9938 64.0074 40.3692 61.9779 32.7952C59.9484 25.2211 56.5058 18.4044 52.0114 12.5547C51.2565 11.5722 52.2043 10.2398 53.3063 10.8064C60.9824 14.7532 67.0278 21.8023 69.4377 30.7963C71.8476 39.7902 70.1368 48.9176 65.4625 56.1737Z" fill="white"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,10 @@
<?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>

After

Width:  |  Height:  |  Size: 845 B

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="300"
height="120.32412">
<path id="e"
d="m 38.866448,26.308378 c -21.145729,0 -38.76645103,8.97108 -38.76645103,36.036419 0,21.441707 11.84866003,34.944406 39.31245703,34.944406 32.326175,0 34.3984,-21.294248 34.3984,-21.294248 l -15.663557,0 c 0,0 -3.358398,11.466134 -19.690354,11.466134 -13.301932,0 -22.869203,-8.985845 -22.869203,-21.580814 l 59.861133,0 0,-7.903529 c 0,-12.460384 -7.91007,-31.668368 -36.582425,-31.668368 z m -0.546007,10.101117 c 12.662062,0 21.294248,7.757047 21.294248,19.383225 l -43.680508,0 c 0,-12.34261 11.267202,-19.383225 22.38626,-19.383225 z"
style="fill:#e53238;fill-opacity:1;stroke:none" />
<path id="b"
d="m 75.437762,0.10007279 0,83.59702321 c 0,4.745232 -0.338677,11.408082 -0.338677,11.408082 l 14.939733,0 c 0,0 0.536238,-4.785353 0.536238,-9.1587 0,0 7.381193,11.547477 27.451204,11.547477 21.13453,0 35.49041,-14.673014 35.49041,-35.695165 0,-19.556604 -13.18634,-35.28566 -35.45629,-35.28566 -20.854235,0 -27.33444,11.261381 -27.33444,11.261381 l 0,-37.67443821 z M 114.20421,36.853125 c 14.35199,0 23.47828,10.651661 23.47828,24.945665 0,15.327725 -10.54056,25.35517 -23.3759,25.35517 -15.317854,0 -23.58065,-11.960116 -23.58065,-25.218668 0,-12.354387 7.414449,-25.082167 23.47827,-25.082167 z"
style="fill:#0064d2;fill-opacity:1;stroke:none" />
<path id="a"
d="m 190.6451,26.308378 c -31.81215,0 -33.85239,17.418776 -33.85239,20.202235 l 15.83418,0 c 0,0 0.83034,-10.169369 16.9262,-10.169369 10.45935,0 18.56422,4.787411 18.56422,13.991413 l 0,3.276038 -18.56422,0 c -24.64532,0 -37.67444,7.20973 -37.67444,21.840254 0,14.398537 12.03849,22.232696 28.30702,22.232696 22.17148,0 29.31371,-12.251017 29.31371,-12.251017 0,4.872784 0.37568,9.67455 0.37568,9.67455 l 14.07643,0 c 0,0 -0.54601,-5.951939 -0.54601,-9.759864 l 0,-32.913945 c 0,-21.581223 -17.40751,-26.122991 -32.76038,-26.122991 z m 17.47221,37.128431 0,4.368051 c 0,5.697129 -3.51553,19.860981 -24.21197,19.860981 -11.3333,0 -16.1925,-5.656156 -16.1925,-12.216892 0,-11.935273 16.36378,-12.01214 40.40447,-12.01214 z"
style="fill:#f5af02;fill-opacity:1;stroke:none" />
<path id="y"
d="m 214.87901,29.041161 17.81346,0 25.56479,51.217345 25.5063,-51.217345 16.13644,0 -46.45929,91.183029 -16.9262,0 13.40641,-25.418513 z"
style="fill:#86b817;fill-opacity:1;stroke:none" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 30">
<g style="mix-blend-mode:difference">
<path d="M22.6 10.4c-1 .4-2-.1-2.4-1s.1-2 1-2.4 2 .1 2.4 1-.1 2-1 2.4m-5.9 6.7c-.9.4-2-.1-2.4-1s.1-2 1-2.4 2 .1 2.4 1-.1 2-1 2.4m10.8-3.7c-1 .4-2-.1-2.4-1s.1-2 1-2.4 2 .1 2.4 1 0 2-1 2.4m3.3 4.8c-1 .4-2-.1-2.4-1s.1-2 1-2.4 2 .1 2.4 1-.1 2-1 2.4M17 4.7l2.3 1.2V2.5l-2.3.7-.2-.2.9-3h-3.4l.9 3-.2.2c-.1.1-2.3-.7-2.3-.7v3.4L15 4.7c.1.1.1.2.2.2l-1.3 4c-.1.2-.1.4-.1.6 0 1.1.8 2 1.9 2.2h.7c1-.2 1.9-1.1 1.9-2.1 0-.2 0-.4-.1-.6l-1.3-4c-.1-.2 0-.2.1-.3m-7.6 5.7c.9.4 2-.1 2.4-1s-.1-2-1-2.4-2 .1-2.4 1 0 2 1 2.4m-5 3c.9.4 2-.1 2.4-1s-.1-2-1-2.4-2 .1-2.4 1 .1 2 1 2.4m-3.2 4.8c.9.4 2-.1 2.4-1s-.1-2-1-2.4-2 .1-2.4 1 0 2 1 2.4m14.8 11c4.4 0 8.6.3 12.3.8 1.1-4.5 2.4-7 3.7-8.8l-2.5-.9c.2 1.3.3 1.9 0 2.7-.4-.4-.8-1.1-1.1-2.3l-1.2 4c.7-.5 1.3-.8 2-.9-1.1 2.5-2.6 3.1-3.5 3-1.1-.2-1.7-1.2-1.5-2.1.3-1.2 1.5-1.5 2.1-.1 1.1-2.3-.8-3-2-2.3 1.9-1.9 2.1-3.5.6-5.6-2.1 1.6-2.1 3.2-1.2 5.5-1.2-1.4-3.2-.6-2.5 1.6.9-1.4 2.1-.5 1.9.8-.2 1.1-1.7 2.1-3.5 1.9-2.7-.2-2.9-2.1-2.9-3.6.7-.1 1.9.5 2.9 1.9l.4-4.3c-1.1 1.1-2.1 1.4-3.2 1.4.4-1.2 2.1-3 2.1-3h-5.4s1.7 1.9 2.1 3c-1.1 0-2.1-.2-3.2-1.4l.4 4.3c1-1.4 2.2-2 2.9-1.9-.1 1.5-.2 3.4-2.9 3.6-1.9.2-3.4-.8-3.5-1.9-.2-1.3 1-2.2 1.9-.8.7-2.3-1.2-3-2.5-1.6.9-2.2.9-3.9-1.2-5.5-1.5 2-1.3 3.7.6 5.6-1.2-.7-3.1 0-2 2.3.6-1.4 1.8-1.1 2.1.1.2.9-.3 1.9-1.5 2.1-.9.2-2.4-.5-3.5-3 .6 0 1.2.3 2 .9l-1.2-4c-.3 1.1-.7 1.9-1.1 2.3-.3-.8-.2-1.4 0-2.7l-2.9.9C1.3 23 2.6 25.5 3.7 30c3.7-.5 7.9-.8 12.3-.8" fill="white"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 400 400" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M 399.262 200.003 C 399.262 255.201 376.96 305.199 340.838 341.349 C 304.762 377.548 254.87 399.898 199.787 399.898 C 144.704 399.898 94.813 377.549 58.737 341.35 C 22.615 305.2 0.312 255.201 0.312 200.003 C 0.312 144.805 22.614 94.807 58.736 58.657 C 94.812 22.458 144.704 0.10800000000000001 199.787 0.10800000000000001 C 254.87 0.10800000000000001 304.762 22.458 340.838 58.657 C 376.96 94.807 399.262 144.805 399.262 200.003" style="fill: rgb(21, 10, 69);" transform="matrix(1, 0, 0, 1, 0, -3.552713678800501e-15)"/>
<path fill="#fff" d="M234.117 91.106C225.896 77.188 211.92 69 192.19 69 155.196 69 133 98.475 133 139.413c0 40.937 22.196 70.412 59.19 70.412 6.577 0 13.976-.819 19.73-3.275 6.577-2.456 12.332-6.55 16.442-11.463v19.65c0 13.1-7.399 29.475-29.595 29.475-17.264 0-25.485-9.825-28.773-19.65L139.577 239.3c8.221 18.012 26.306 34.388 61.656 34.388 51.792 0 65.767-35.207 65.767-65.5V70.638h-32.061l-.822 20.468Zm-33.706 86.788c-18.908 0-29.595-14.738-29.595-38.481 0-23.744 10.687-38.482 29.595-38.482s29.595 14.738 29.595 38.482c0 22.925-10.687 38.481-29.595 38.481ZM267 284.332V331H133.822v-27.837h106.049v-18.831H267Z" style="" transform="matrix(1, 0, 0, 1, 0, -3.552713678800501e-15)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,18 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 333.8 127" style="enable-background:new 0 0 333.8 127;" xml:space="preserve">
<path d="M296.4,18.6c-20.6,0-37.4,16.8-37.4,37.6c0,20.7,16.8,37.6,37.4,37.6c20.6,0,37.4-16.9,37.4-37.6
C333.8,35.4,317,18.6,296.4,18.6L296.4,18.6z M296.4,75.9c-10.9,0-19.7-8.9-19.7-19.8c0-10.9,8.8-19.8,19.7-19.8
c10.8,0,19.7,8.9,19.7,19.8C316.1,67,307.2,75.9,296.4,75.9L296.4,75.9z M186.2,48.5l-6.5-3.3c-2.8-1.4-4.6-2.5-5.3-3.3
c-0.7-0.7-1.1-1.7-1.1-2.6c0-1.3,0.6-2.3,1.7-3.2c1.1-0.9,2.7-1.3,4.7-1.3c3.7,0,7.7,2.2,12.2,6.7l11-11.1
c-2.7-3.7-6.3-6.7-10.4-8.8c-4-2-8.5-3.1-13-3c-6.7,0-12.3,2-16.6,6c-4.3,4-6.5,8.8-6.5,14.5c0,8.7,5.7,16,17.2,21.8l6,3
c5.2,2.6,7.8,5.3,7.8,8.1c0,1.5-0.7,2.8-2.1,4c-1.4,1.1-3.3,1.7-5.7,1.7c-2.2,0-4.7-0.8-7.5-2.3c-2.8-1.5-5.3-3.5-7.3-5.9l-11,12
c6.2,8.1,14.5,12.2,24.8,12.2c7.8,0,14-2.1,18.6-6.4c4.6-4.2,7-9.5,7-15.9c0-4.8-1.3-8.9-3.8-12.5C197.8,55.4,193.1,52,186.2,48.5
L186.2,48.5z M75.2,85.5V20.1H57.4v4.4c-6-3.9-13-5.9-20.1-5.9C16.8,18.6,0,35.4,0,56.1c0,20.7,16.8,37.6,37.4,37.6
c7,0,13.9-2,19.9-5.7c0,0.6,0,1.1,0,1.4c0,10.9-8.8,19.8-19.7,19.8c-3.7,0-7.3-1.1-10.4-3l-8.8,15.4c5.8,3.5,12.4,5.4,19.2,5.4
c20.6,0,37.6-16.9,37.6-37.6C75.2,88.6,75.3,86.3,75.2,85.5L75.2,85.5z M37.4,75.9c-10.8,0-19.7-8.9-19.7-19.8
c0-10.9,8.8-19.8,19.7-19.8c10.9,0,19.7,8.9,19.7,19.8C57.1,67,48.2,75.9,37.4,75.9L37.4,75.9z M145.9,20h-17.8v35.7
c0,5.1,0,13.8-3.7,17.6c-1.8,1.8-3.7,3.4-7.8,3.4c-4.1,0-6.1-1.6-7.9-3.4c-3.7-3.7-3.7-12.5-3.7-17.6V20H87.2v35.6
c-0.1,7.4-0.1,21,8.8,30c5.2,5.3,11.5,8,20.5,8c9,0,15.3-2.7,20.5-8c8.9-9,8.9-22.7,8.8-30L145.9,20z M247,72.7
c-1.4,1.1-4.9,3.5-8.8,3c-3.2-0.4-5.8-2.8-6.2-10.7V35.3h21V20h-21V0h-17.8v3.9h0v58.7c0,9.3,2.3,31,24,31
c10.9-0.2,17.6-6.1,20.4-8.5l0.4-0.3l-10.7-13.2C248.2,71.8,247.5,72.4,247,72.7L247,72.7z M247,72.7" style="fill:#F45D48;">
</path>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg">
<path fill="#FFF" d="M33.258 25.45h26.027v33.51H33.258z"/>
<path d="m39.22 53.522 2.194-12.578a6.684 6.684 0 0 1-2.21-7.444 6.645 6.645 0 0 1 6.311-4.495v-13.96H28.567c-3.627 0-6.567 2.952-6.567 6.593v32.324c-.005.61.13 1.213.394 1.762C23.816 58.61 29.43 67.876 45.5 75V54.038a36.635 36.635 0 0 1-6.28-.516Z" fill="#E21D3E"/>
<path d="M62.417 15H45.5v13.96a6.644 6.644 0 0 1 6.302 4.458 6.684 6.684 0 0 1-2.14 7.435l2.193 12.638c-2.098.367-4.225.55-6.355.547V74.97c16.055-7.094 21.684-16.39 23.106-19.276.264-.55.399-1.153.394-1.762v-32.31a6.606 6.606 0 0 0-1.918-4.686A6.555 6.555 0 0 0 62.417 15Z" fill="#B51E23"/>
</svg>

After

Width:  |  Height:  |  Size: 729 B

View File

@@ -1,5 +1,12 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M446.258 230.173C434.83 295.328 381.676 344.578 311.926 344.578H267.645C258.614 344.578 249.514 352.94 248.072 362.188L228.68 485.284C227.555 492.294 224.272 494.623 217.172 494.623H145.945C138.743 494.623 137.039 492.214 138.118 485.114L146.298 399.986L60.8024 395.566C53.6116 395.566 51.0102 391.647 52.0325 384.467L110.366 14.5526C111.491 7.54283 115.853 4.53217 122.93 4.53217H270.871C342.087 4.53217 387.14 52.4756 392.65 114.643C435.023 143.273 454.834 181.366 446.269 230.162L446.258 230.173Z" fill="#001C64"/>
<path d="M167.972 262.157L146.309 400L132.609 486.48C132.354 488.148 132.462 489.85 132.924 491.472C133.386 493.094 134.192 494.598 135.287 495.881C136.382 497.163 137.741 498.195 139.27 498.906C140.8 499.617 142.464 499.99 144.151 500H219.376C222.81 499.996 226.13 498.767 228.739 496.535C231.348 494.303 233.075 491.213 233.61 487.821L253.411 362.168C253.949 358.778 255.677 355.691 258.286 353.461C260.895 351.231 264.213 350.004 267.645 350.001H311.926C345.668 349.957 378.285 337.859 403.896 315.889C429.507 293.919 446.428 263.521 451.608 230.176C459.276 181.244 434.659 136.698 392.525 114.692C392.43 119.905 391.974 125.106 391.162 130.256C385.962 163.584 369.035 193.96 343.428 215.913C317.822 237.867 285.219 249.955 251.491 250.001H182.195C178.766 250.002 175.449 251.227 172.842 253.456C170.235 255.684 168.508 258.77 167.972 262.157Z" fill="#0070E0"/>
<path d="M146.297 399.998H58.7005C57.0105 399.99 55.3422 399.617 53.8091 398.906C52.276 398.195 50.9144 397.161 49.8168 395.876C48.7193 394.591 47.9117 393.084 47.4491 391.458C46.9864 389.833 46.8797 388.126 47.1361 386.456L106.163 12.179C106.693 8.78702 108.418 5.6961 111.025 3.46315C113.633 1.23021 116.952 0.00205828 120.385 0H270.791C342.007 0 393.786 51.8289 392.57 114.621C373.615 104.841 352.565 99.8231 331.238 99.9995H205.846C202.412 100 199.091 101.226 196.48 103.456C193.869 105.687 192.139 108.775 191.601 112.167L167.972 262.155L146.297 399.998Z" fill="#003087"/>
<g clip-path="url(#clip0_203_147)">
<path d="M395.978 115C395.978 176.933 338.822 250 252.345 250H169.045L164.956 275.8L145.522 400H42.0002L104.278 0H272C328.478 0 372.911 31.4778 389.278 75.2222C393.998 87.9408 396.271 101.437 395.978 115Z" fill="#002991"/>
<path d="M455.645 230C450.119 263.571 432.827 294.081 406.862 316.067C380.898 338.054 347.956 350.082 313.933 350H256.089L232.011 500H129.045L145.522 400L164.967 275.8L169.045 250H252.345C338.711 250 395.978 176.933 395.978 115C438.478 136.933 463.256 181.256 455.645 230Z" fill="#60CDFF"/>
<path d="M395.978 115C378.156 105.678 356.545 100 333.022 100H192.578L169.045 250H252.345C338.711 250 395.978 176.933 395.978 115Z" fill="#008CFF"/>
</g>
<defs>
<clipPath id="clip0_203_147">
<rect width="500" height="500" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 914 B

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 26.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 160.5 95.1" style="enable-background:new 0 0 160.5 95.1;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<path class="st0" d="M152,47.7c2.3-2.3,4.5-5,5.9-8.1c8-18.1-3.6-37.8-23.4-38.5h-51v19.7h48.4c5,0,8.7,3.6,8.8,8.3 c0.1,4.9-3.1,8.3-8.3,8.7c-1,0.1-48.8,0-48.8,0v56.3h51c19.8-0.7,31.4-20.4,23.4-38.5C156.6,52.7,154.4,50,152,47.7z M131.9,74.5 h-28.5v-17c13.3,0,28.5,0,29,0c5.2,0.4,8.5,3.8,8.3,8.7C140.5,70.9,136.9,74.5,131.9,74.5z"/>
<path class="st0" d="M20.8,67.3V94H1.3V64c0.3-15,10.2-25.2,25.3-26.1c7.6-0.4,15.2-0.1,22.8-0.2c4.4-0.1,7.7-2.3,8.7-5.8 c1-3.7,0.1-6.9-2.9-9.4c-1.6-1.3-3.5-1.9-5.6-1.8H29V1.1h19.2c4.3,0,6.1,0.4,8.4,0.9c13.7,2.7,21.6,13.3,21.3,28.3 c-0.3,14.1-9.2,24.4-22.8,26.3c-8.2,1.2-16.4,0.4-24.7,0.6c-6.2,0.1-9.6,3-9.6,9.3L20.8,67.3z"/>
<rect x="1.2" y="1.3" class="st0" width="19.5" height="19.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340476837" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12844" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1019.830857 176.274286c-4.242286-4.169143-8.484571-4.169143-12.726857-4.169143-12.8 4.242286-165.741714 259.145143-497.152 250.660571-55.222857 0-114.761143-4.242286-169.984-21.211428L314.587429 312.32s-4.242286-21.211429-25.526858-34.011429c-16.969143-8.484571-25.453714-8.484571-29.696-4.242285v4.242285l12.726858 101.961143C106.276571 308.077714 21.284571 176.347429 12.8 172.105143c-4.242286 0-8.484571 0-12.726857 4.242286v12.726857a519.314286 519.314286 0 0 0 280.429714 310.125714l38.253714 242.249143c4.242286 68.022857 50.980571 110.445714 110.445715 110.445714h182.710857c59.465143 0 106.203429-42.422857 110.445714-110.445714l34.011429-199.68v-4.242286s-16.969143 0-50.980572 21.211429c-34.011429 25.526857-42.422857 59.465143-42.422857 59.465143s-34.011429 84.992-42.569143 119.003428c-8.484571 38.253714-50.980571 34.011429-50.980571 34.011429H467.456c-16.969143 0-34.011429-12.8-34.011429-29.769143l-59.465142-212.48c42.422857 12.8 89.234286 17.042286 140.214857 17.042286 237.933714 0 437.613714-144.457143 509.878857-356.937143-4.242286 0-4.242286-8.484571-4.242286-12.726857" fill="#02A7E0" p-id="12845"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 343 358" style="enable-background:new 0 0 343 358;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D64309;}
</style>
<path class="st0" d="M171.3,102.6c0,0-69-2.1-69,52.4c0,54.5,32.8,99.8,69,99.8c36.2,0,69-45.4,69-99.8
C240.3,100.5,171.3,102.6,171.3,102.6z M154.6,171.1c-1.7,3.7-5.1,5.6-9.9,5.6c-4.9,0-8.3-1.9-9.9-5.6c-0.7-1.5-1-3.2-1-5.4
c0-2.3,0.3-3.9,1-5.5c1.7-3.7,5-5.5,9.9-5.5c4.8,0,8.2,1.8,9.9,5.5c0.7,1.6,1,3.2,1,5.5C155.6,167.9,155.3,169.6,154.6,171.1z
M214.1,152.1c-4.3-0.6-17.1-0.7-23.9,5.3c-3.4,3-5.1,7.4-5.1,13.3v40.2h-15.4v-40.2c0-10.4,3.6-19,10.4-24.9
c13.3-11.6,33.7-9.2,36-8.9L214.1,152.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 906 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90 90"><path fill="#FF5900" fill-rule="nonzero" d="m76.14 69.42-1.43.92a53.07 53.07 0 0 1-60.03-.06l-1.42-.92L8 78.34l1.24.8a63.44 63.44 0 0 0 70.98 0l1.23-.8-5.31-8.92Zm-54.1-8.74L57.9 0H71.3l-35.8 60.68H22.04ZM36.63 5.23A15.12 15.12 0 0 0 25.75.73c-4.27 0-7.98 1.49-10.95 4.44a14.73 14.73 0 0 0-4.45 10.9c0 4.3 1.48 7.93 4.45 10.89 2.85 2.89 6.8 4.55 10.95 4.43 4.2 0 7.85-1.54 10.88-4.5a14.99 14.99 0 0 0 4.51-10.83c.06-4.07-1.57-8-4.51-10.83Zm-6.56 15.14a5.58 5.58 0 0 1-4.26 1.79 6.01 6.01 0 0 1-4.4-1.79 5.59 5.59 0 0 1-1.79-4.3c0-1.73.62-3.15 1.8-4.32a5.9 5.9 0 0 1 4.39-1.78 6 6 0 0 1 4.33 1.78 6.02 6.02 0 0 1-.07 8.62Zm48.42 15.2a15 15 0 0 0-10.89-4.5c-4.26 0-7.97 1.49-10.94 4.44a14.73 14.73 0 0 0-4.45 10.83c0 4.3 1.48 7.94 4.45 10.9 2.84 2.89 6.8 4.55 10.94 4.42 4.2 0 7.86-1.53 10.89-4.49A14.99 14.99 0 0 0 83 46.34c0-4.06-1.6-8-4.51-10.77Zm-6.56 15.14a6.01 6.01 0 0 1-4.33 1.79 6.01 6.01 0 0 1-6.12-6.16c0-1.72.62-3.14 1.8-4.3a5.9 5.9 0 0 1 4.39-1.8 6 6 0 0 1 4.32 1.8 5.95 5.95 0 0 1-.06 8.67Z"/></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1 +1,17 @@
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="M0 0h90v90H0z" fill="#E20074"/><g fill="#FFF"><path d="M18.692 55.385V42.404h12.981v12.98zm39.635 0V42.404h12.981v12.98z"/><path d="M70.615 12.98h-51.23l-.693 22.674 3.462.52c.692-6.75 2.423-11.597 5.192-14.886 2.942-3.288 7.096-5.192 12.462-5.365v47.25c0 4.154-.52 6.75-1.731 7.962-1.039 1.038-2.77 1.73-5.192 1.903-.693 0-1.904.174-3.635.174v3.634h31.673v-3.634c-1.73 0-2.942 0-3.635-.174-2.423-.173-4.153-.865-5.192-1.903-1.211-1.212-1.73-3.981-1.73-7.962V16.096c5.365.173 9.519 1.904 12.46 5.366 2.943 3.288 4.674 8.134 5.193 14.884l3.462-.52-.866-22.845Z"/></g></g></svg>
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 720 720" style="enable-background:new 0 0 720 720;" xmlns="http://www.w3.org/2000/svg">
<defs>
<style type="text/css">
.st0{fill:#E20074;}
</style>
</defs>
<g>
<g>
<g>
<polygon class="st0" points="96.62,469.28 223.57,469.28 223.57,342.31 96.62,342.31 96.62,469.28 &#9;&#9;&#9;"/>
<path class="st0" d="M402.16,82.88c103.43,1.82,165.08,70.76,174.17,196.81l33.57-5.44l-6.41-221.3H102.88l-6.31,221.3&#10;&#9;&#9;&#9;&#9;l33.53,5.44c9.09-126.05,69.86-194.99,174.17-196.81v463.44c0,84.34-14.53,97.97-105.21,98.87v35.35h308.34v-35.35&#10;&#9;&#9;&#9;&#9;c-90.68-0.9-105.23-14.53-105.23-98.87V82.88L402.16,82.88z"/>
<polygon class="st0" points="481.85,469.28 608.78,469.28 608.78,342.31 481.85,342.31 481.85,469.28 &#9;&#9;&#9;"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 858 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340512759" class="icon" viewBox="0 0 1402 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13871" xmlns:xlink="http://www.w3.org/1999/xlink" width="273.828125" height="200"><path d="M1215.068154 831.197568a199.23384 199.23384 0 0 1-148.202014 58.441927l-477.741777 1.258319c148.202014-142.329859 263.967361-265.64512 276.830178-271.796902a660.058216 660.058216 0 0 1 64.453895-58.302113c51.311452-58.302113 96.471122-64.873335 141.910419-65.013148a190.006167 190.006167 0 0 1 142.190046 57.882674c77.596338 70.885303 77.875964 206.364314 0 277.529243z m95.911869-368.128211c-58.302113-57.882673-142.329859-102.902531-226.217791-102.622904S936.979657 393.162747 878.258104 432.310449c-19.294224 19.573851-57.882673 45.439297-83.887932 83.887932-32.017228 19.294224-508.360872 504.725728-508.360872 504.725728l703.679942-1.398132a520.384809 520.384809 0 0 0 109.613565-6.711035 372.322608 372.322608 0 0 0 206.364314-91.15822c122.336568-129.467043 121.777315-335.55173 5.312902-458.307738z" fill="#00A3FF" p-id="13872"></path><path d="M517.539994 432.310449a322.688914 322.688914 0 0 0-200.212532-64.034456 289.553181 289.553181 0 0 0-226.497418 104.440477A333.174906 333.174906 0 0 0 98.100331 937.455616q77.596338 77.316711 174.4869 77.037085l128.767977-123.175448h-70.605677A264.386801 264.386801 0 0 1 181.988264 833.854019c-77.596338-77.176898-77.875964-199.793093 0-283.960651a180.638682 180.638682 0 0 1 141.211353-58.441927c38.868075 0 77.456524 6.291595 129.327229 57.882674 19.573851 25.585819 77.596338 64.314082 97.030376 90.039714h6.431408l77.316711-90.598967c-25.725633-32.57648-90.598967-83.608306-115.765347-116.464413" fill="#00C8DC" p-id="13873"></path><path d="M1103.916643 282.850115C1045.334904 115.214063 877.279412-1.110536 696.500917 0.007969 476.99416 0.567222 303.206326 162.470932 265.037317 368.97506c12.862816 0 32.157041-6.431408 51.591079-6.431409s51.591079 6.291595 71.025116 6.151782A303.39469 303.39469 0 0 1 683.917727 129.055572 313.601055 313.601055 0 0 1 968.297819 308.995188s6.571221 6.431408 6.431408 0c45.299484-6.431408 90.459154-26.005259 129.187416-26.145073" fill="#006EFF" p-id="13874"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,11 @@
<svg width="1606" height="1005.0000000000001" xmlns="http://www.w3.org/2000/svg" class="icon">
<g>
<title>background</title>
<rect fill="none" id="canvas_background" height="1007" width="1608" y="-1" x="-1"/>
</g>
<g>
<title>Layer 1</title>
<path id="svg_4" class="selected" fill="#F3A22F" d="m1332.2,333.8c-12.8,-108.8 -108.8,-185.6 -217.6,-185.6c-25.6,0 -57.6,6.4 -83.2,12.8c-70.4,-83.2 -179.2,-134.4 -288,-134.4c-147.2,0 -275.2,83.2 -339.2,211.2l-19.2,0c-198.4,0 -358.4,153.6 -364.8,352s153.6,358.4 352,364.8l467.2,0c38.4,0 70.4,-32 70.4,-70.4c0,-38.4 -32,-70.4 -70.4,-70.4l-435.2,0l-6.4,0c-115.2,0 -211.2,-89.6 -211.2,-204.8c0,-108.8 83.2,-198.4 192,-211.2c19.2,0 44.8,0 64,6.4l6.4,0l44.8,12.8c12.8,-128 121.6,-230.4 256,-230.4c89.6,0 172.8,51.2 217.6,128c6.4,12.8 6.4,19.2 12.8,32l12.8,-12.8c32,-25.6 76.8,-32 115.2,-25.6l0,-6.4c64,6.4 108.8,57.6 108.8,121.6c0,19.2 -6.4,38.4 -12.8,57.6c19.2,12.8 32,25.6 57.6,32c12.8,-12.8 25.6,-19.2 32,-32c102.4,6.4 179.2,96 172.8,198.4c-6.4,96 -89.6,172.8 -192,172.8c-76.8,0 -153.6,-51.2 -179.2,-128l76.8,0c12.8,0 19.2,-6.4 19.2,-19.2c0,-6.4 0,-6.4 -6.4,-12.8l-153.6,-204.8c-6.4,-6.4 -19.2,-12.8 -32,-6.4l-6.4,6.4l-153.6,204.8c-6.4,6.4 -6.4,25.6 6.4,32c6.4,0 6.4,6.4 12.8,6.4l89.6,0c32,179.2 204.8,300.8 384,268.8s300.8,-204.8 268.8,-384c-25.6,-153.6 -134.4,-256 -268.8,-281.6z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg">
<ellipse style="" cx="48.075" cy="47.848" rx="47.823" ry="47.698"/>
<path d="M53.6 47.5zm-16.8.6c2.4 0 5.2 2.9 7.8 3.3 1.7.3 5.4.5 9-3.9-9.8 2.6-9.6-3.3-15.7-2.2 4.9.4 4.7 3.7 9.9 4.4-4.5 1.8-8.7-5.8-14.4-2.2-4 2.4-7 .2-7 .2 1.8 3.2 4.8 2.5 4.8 2.5s-4 1.6-.5 7.6c1.9 3.2.2 3.7-1.7 3.3 0 0 2.3 1.6 3.6.7 2.8-1.7-1.3-7.1-1.3-7.1 4.9 2.9 3.1 7.9 1.8 8.4 4.2-.9 2.8-5.3 1.9-7.2-.8-1.7-.7-4.5 2.7-5.9-3.7-.3-5.2 3.8-5.2 3.8-.4-1.9.2-3.3.4-3.7.8-1.4 2.4-2 3.9-2zm16.8-.6zm0 0z" fill="#ffffff"/>
<path d="M75.3 42c0-1.1-.2-2.1-.3-3.2-.2-1.9-.4-3.3-1.1-4.3 0 0-4.7-.7-9 2.6-2.1 1.6-3.7 3.7-5.2 5.8-1.6 2.2-2.2 4.1-2.4 6.9-.2 2.4-.6 4.8-1.8 6.9-1.4 2.4-4 3.2-6.7 3.3-.7 0-3.6-.2-2.6-1.8.3-.5.8-1.3.7-1.9-.1-.4-.4-.7-.7-1-.6-.7-1.7-2.2-2.6-1.1-.5.7-.8 2.6-2 2.3-.4-.1-.6-.5-.7-.9-.2-.6-.3-1.2-.3-1.8 0-.6-.1-1.2 0-1.8 0-.2-.1-.5-.3-.5-.4-.1-.5.3-.6.6-.6 1.3-.7 2.9-.1 4.3.3.7.7 1.4 1.3 2 .2.2.5.4.6.6.1.5-.2.7-.7.7-.6-.1-1-.6-1.4-1-.6-.7-1-1.4-1.2-2.3-.2-.6-.2-1.3-.2-2 .1-1.2.3-2.2.4-2.9 0-.1-.1-.2-.3-.1-1.2.6-1.5 2.3-1.5 3.5 0 1.5.5 3 1.3 4.3.6 1 1.4 2.5 2.8 2.6.8 0 1.4-.4 1.9-.9.1-.1.4-.4.6-.2.1.1.2.4.2.5 0 .7-.5 1.3-.9 1.9-.7 1-1.2 2.1-1.5 3.2-.2.7-1.1.8-1.4.2-.5-1-1-2-1.3-3-.1-.2-.8-2.6-1-2.5-.1.1-.1.3-.1.4 0 .3-.1.5-.2.8-.2.5-.5 1-.9 1.4-.7.8-1.5 1.5-2 2.4-.5.8-.8 1.7-1 2.7-.2 1-.3 2-.5 2.9-.7 3.1-2 7.8-3.2 10.7-.8 1.9-1.3 2.2.4 2.9l2.4 1.2c5.1 2.2 10.5 3.3 16.1 3.3 3.7 0 7.4-.5 10.9-1.4 1.1-.3 1.8-.6 1.5-1.7-.7-2.6-1.6-5.9-1.6-6.2-.5-2.9-1.1-4.2-3.1-5.6-1-.8-1.6-1.3-2.2-1.8-.5-.5-1.5-1.4-1.5-1.9 0-.1.1-.2.3-.2.5-.1 1.7.7 2.1.8 4.1 1.8 8.5 2.7 12.9 2.7 1.5 0 2.9.2 3.8-1.2.7-1 .7-2.5.1-3.6-.2-1.2.1-1.7.9-2.5.5-.5 1-1.1.7-1.8-.1-.3-.4-.6-.8-.6-.3 0-2.5.3-3.1.3-.2 0-.7 0-.8-.3-.1-.2.1-.6.2-.7.2-.2.4-.3.6-.3.1 0 .3.1.4.1.6.2 1.5-.3 2.1-.5.8-.3 1.4-.5 2.3-.8.2-.1.4-.4.5-.6.1-.3-.1-1.1-.1-1.4 0-1.1-.1-1.2-1.2-1-.3.1-.7.2-1 0-.3-.2-.4-.8-.2-1.1s.7-.4 1.1-.4c.8.1.8.3 1.7.3 1 .1 2.1-.1 2.8-.9.6-.8.1-1.6-.1-2.5-1-5.6-2.1-8.6-2.2-12.9zM53.8 86.6c.1.3.2.9-.3 1-.3.1-.9.2-1.4-1.2-1.5-4-2.6-7.4-3.7-11.6-.6-2.2-.5-2.8-.1-2.8.2 0 .3.6.4.6.3.7 5.1 14 5.1 14zM73.4 46c-.3.5-.7.9-.9 1.4-.3.5-.5 1-.6 1.6-.3 1-.2 2.4-1.1 3.1-.2.2-.6.3-.7-.1-.1-.5-.1-1-.2-1.5-.3-1-1.1-2.9-4.9-2.8-.4 0-.6-.3-.5-.7.1-.4.7-.7 1.1-.8.7-.2 1.4-.3 2.2-.3 1.1-.1 2.2-.2 3.4-.5.4-.1 1.5-.4 1-1-.5-.5-3.8-.5-5-.3-2.1.3-2.6.4-3.7 1.1-.5.3-1 0-1-.5 0-.4.5-.6.8-.8 1.9-1.1 4-1.2 6.1-1.4 1-.1 2-.2 3 0 .7.2 1.5.6 1.7 1.4 0 .8-.3 1.5-.7 2.1zm-50.1.4c-2.8-3.9-6.1-13.4 0-22.9-6.4 4.1-10.6 19.6 0 22.9zM71.2 23c-.8 1.9-3 3.9-6.6 5.8 4.2 1 7.3-2 7.3-2-.4 2-3.1 3.3-7.1 3.7-6.2.6-8.4 6.4-8.4 6.4C63.8 28.7 74 33 74 33c.1-.4-.4-6.9-2.8-10z" fill="#ffffff"/>
<path d="M71.3 33.3c-10.7-2.1-14.9 5.3-15.3 5.9 1.7-1.6 4.2-3.4 6.9-3.6-.7.5-3.5 1.4-7 5.7-4.5 5.5-12.6 3.1-12.6 3.1.7.7 3.5 3.4 8.9 2.4 6.9-1.3 7.8-12.1 19.1-13.5zm-17 23c.8-1 1.4-2.2 1.6-3.5.2-1.1.6-5.3.5-6.4 0 0-1 1.4-1.8 2.2-.1.1-.2.3-.2.5-.1.9-.4 3.5-.8 5.1-.4 1.6-1.2 3.1-2.2 4.3 1.1-.5 2.1-1.2 2.9-2.2zM53 52.4c.2-1 .4-2 .3-3-.8.9-1.7 1.6-2.1 1.8-.1.1-.2.2-.2.3-.2 5.6-2.5 7.4-2.5 7.4.4 0 .8-.2 1.1-.4 2-1.4 2.9-3.6 3.4-6.1zm-4.9 5.3c.3-.3.5-.6.7-1l.6-1.2c.4-1 .6-2.2.7-3.4v-.5c-.2.1-.9.4-1.3.5-.1.1-.2.2-.2.4 0 .9-.1 2.6-.2 3.4-.1.4-.2.8-.4 1.2l-.3.6c-.1.2-.5.7-.5.9.2-.1.8-.8.9-.9zm20.6-38c1.4-2.6 1.6-3 2.5-5.8 0-.1 0-.3-.2-.4-.2 0-.3.1-.4.2-.6 2.3-.7 2.6-2 5.3.1.2.1.5.1.7zm.8.6c.1 0 .2.1.3.1 1.6-1.7 2.2-2.7 3.4-4.7.1-.1 0-.3-.1-.4-.1-.1-.3 0-.4.1-1.2 2.1-1.9 3.1-3.5 4.9h.3zm-3.7-.3v.2c.4.3.7.7.8 1.2.3-.4.6-.6 1-.9.1 0 .1-.1.2-.1V20c0-.5 0-1-.4-1.3 0 0 .8-1.9 1.1-3.9 0-.2-.1-.3-.3-.3-.2 0-.3.1-.3.3-.4 1.8-1.1 3.5-1.2 3.7-.5.3-.7.9-.9 1.5zm-.4 1c-.1-.1-.2-.1-.3-.1H65c-.9 0-1.2.6-1.5 1.3 0 .1 0 .1-.1.2.3.2.5.4.6.8.1.2.1.4.1.6.4-.4.9-.6 1.5-.8v-.1c0-.1.1-.2.1-.4V22c.1-.4 0-.8-.3-1zm2.2 2.9c-.2-.2-.3-.2-.5-.3h-.8c-.1 0-.2.1-.3.1-.1 0-.2.1-.3.1-.4.2-.8.4-1.1.7-.1.1-.1.2-.2.3h.4c.7.2 1.1.5 1.4 1.1h.1c.8-.3 1.5-.7 1.5-1.6 0-.2-.1-.3-.2-.4zM61.2 25c.1.3.1.5.1.8.5-.4 1-.6 1.7-.8v-.1c0-.1.1-.2.1-.3 0-.1.1-.3.1-.4.1-.5 0-.9-.4-1.2-.1-.1-.2-.1-.2-.1h-.2c-.9 0-1.3.5-1.8 1.2v.1c.3.2.5.4.6.8zm1.7.8c-.4.1-.9.3-1.2.7-.1.1-.1.2-.2.3h.4c.7.2 1.2.5 1.5 1.2h.3c.8-.2 1.5-.4 1.8-1.2v-.5c0-.2-.1-.3-.2-.4-.2-.2-.4-.3-.6-.3h-1.3c-.2.2-.4.2-.5.2zm-5.3-.1c-.1.1-.1.3-.2.4.2.2.3.4.4.8.1.3.1.7 0 1h.1c.6-.6 1.3-.8 2.1-1 0 0 0-.1.1-.1 0-.1.1-.1.1-.2.1-.1.1-.2.2-.4 0-.2.1-.3.1-.5s0-.4-.1-.6c-.1-.2-.2-.3-.4-.4 0 0-.1 0-.1-.1s-.2-.1-.2-.1c-1.1 0-1.6.5-2.1 1.2zm2.8 2c-.2 0-.4 0-.6.1-.4.1-.9.3-1.2.6-.1.1-.2.3-.2.4.7.2 1.2.6 1.4 1.3h.7c.8-.1 1.6-.4 2-1.2.1-.1 0-.2 0-.3v-.1c0-.2-.1-.3-.2-.4-.2-.2-.4-.3-.7-.4h-.1c-.1 0-.3 0-.4-.1s-.3 0-.5 0h-.2v.1zm-5.8 1.9h.1c.5-.5 1.1-.7 1.9-.8l.1-.1c.1-.1.2-.3.2-.4.1-.1.1-.3.2-.5.1-.4 0-.7-.2-1l-.3-.3c-.1 0-.2-.1-.3-.1-.8-.1-1.4.4-1.8 1.1-.5.7-.7 1.5.1 2.1z" fill="#ffffff"/>
<path d="M70.1 20.9c0-.1.1-.1 0 0-.4.3-.2.1-.5.3-.1-.1-.2-.1-.3-.1h-.2c-.2 0-.4 0-.5.1-.1 0-.2.1-.3.1-.1 0-.2.1-.3.1h-.1c-.1 0-.2.1-.2.2-.1 0-.1.1-.2.1-.2.2-.3.3-.4.5-.1.1-.1.3-.1.4v.1h.1c.5.1.9.3 1.2.7.2 0 .3-.1.5-.1.7-.3 1.3-.8 1.2-1.6v-.1c.3-.2 0 0 .4-.3h.1s.1-.1.5-.3c.9-.6 1.7-1.4 3-2.3.1-.1.2-.3.1-.4-.1-.1-.3-.2-.4-.1-1.4.9-2.1 1.7-3 2.3-.5.3-.6.3-.6.4zM55.5 17c-.3 1.3-.5 2.8-.8 4.1-.3 1.4-1.7 3.7-3.6 5.6 0 0 4.8-1.7 5.8-3.6.7-1.4.7-2.5 1.1-4 1.1-4.1 3.7-4.6 4.5-4.8-1.3-.4-2.6-.8-3.9-.5-1.5.4-2.7 1.7-3.1 3.2z" fill="#ffffff"/>
<path d="M51 16.1c-.7 1.5-.7 3.2-.8 4.8-.1 1.6-.9 3.2-1.7 4.6-.5.8-1 1.6-1.6 2.4-.5.6-1.2 1.2-1.7 1.8-.2.2-.4.4-.5.6 0 0 .7-.3.9-.4.4-.2.8-.3 1.1-.5 2.7-1.4 4.7-3.8 6-6.5.6-1.3.9-2.6 1.1-4.1.1-1.1.4-2.2 1-3.2s1.7-1.8 2.9-2.3c-3.2-.6-5.6.6-6.7 2.8zM22.6 40.7c3.3-5-1.2-13.7 8.6-23.4-6.1 3.1-12.6 13.4-8.6 23.4z" fill="#ffffff"/>
<path d="M46.4 16.7c-.8 1.6-1 3.4-1.2 5.1-.2 1.8-.8 3.4-1.6 5-.5.9-1 1.8-1.6 2.6-.5.7-1.2 1.3-1.7 1.9-.2.2-.4.4-.5.6.1 0 .7-.3.9-.4.4-.2.8-.4 1.1-.6 2.7-1.6 4.7-4.2 6-7.2.6-1.5.9-2.9 1.1-4.5.1-1.2.4-2.5 1-3.5.7-1.3 1.9-2.3 3.3-2.9-.2.1-4.9 0-6.8 3.9z" fill="#ffffff"/>
<path d="M40.7 18.6c-.6 1.2-1 2.5-1.4 3.8-.3 1.3-.5 2.7-1 4-.8 2.2-1.9 4.2-3.4 6.1 3.1-.9 5.7-3.1 7.1-5.9.5-1 1-2.2 1.3-3.5 1-4.2.5-7.6 4.9-9.7h-.6c-3.4.2-5.5 2.4-6.9 5.2z" fill="#ffffff"/>
<path d="M35.4 19.3c-1.6 2.3-2.6 5-3.1 7.8-.4 2.3-.5 4-1.4 6.2 0 0 3.9-2.6 5.7-7.2 1.1-2.9 1.6-7.7 3.8-9.9.9-.9 2-1.9 3.2-2.4 0 0-.3 0-.6.1-3.2.6-5.7 2.7-7.6 5.4z" fill="#ffffff"/>
<path d="M27.5 25.3c-1.3 3.3-2 10-2 10s.2-.2 2.7-2.5c1.7-1.5 2.2-4 2.6-6.2.5-2.5 1.1-4.9 2.7-7 1.5-2 3.4-3.9 5.6-5.1 0 0-3.8.7-7.4 4.2-2.1 1.9-3.3 4.2-4.2 6.6zm29.9-.9s.8-.5 1.3-.8c.9-.6 1.5-1.4 1.7-2.4.4-1.5 1-3.5 3.6-4.3-2.4 2.1-1.7 3.2-3.1 5.4 4.8-3.4 5.8-5.7 5.8-5.7-.7-1.1-2.6-1.6-3.8-1.3-4.4 1-2.8 6.7-5.5 9.1zm-14 18.5c5.2 2.5 12.3-1 12.2-5.6-.9 1.1-4.3 3.4-7.4 3.8 0 0 1.7.6 3.4.1 0 .1-1.9 2-8.2 1.7zm-20.6-.2c0 .2.2.4.5.3.4-.1 1.1-.2 1.5-.3.6 1.3 1.3 2.4 2.5 3.3 1.2.9 2.9 1.3 4.5 1-.5-1.6-1.5-3-2.9-3.7-1-.5-1.9-.7-2.9-.8.5.7 1.6 2 3.3 2.7.2.1.3.3.2.5-.1.1-.2.2-.3.2h-.1c-.3-.1-.6-.3-.9-.5-.3-.2-.5-.3-.8-.5-.2-.2-.5-.4-.7-.6-.2-.2-.4-.4-.5-.6-.1-.2-.3-.3-.4-.5-.1-.2-.2-.3-.3-.5-.1-.1-.1-.2-.2-.2 0-.1-.1-.2-.1-.2V42c.1-.2.1-.5.2-.7.1-.2.1-.4.2-.6.1-.2.2-.5.3-.7.1-.3.2-.5.4-.8.1-.3.3-.5.4-.8.2-.3.3-.5.5-.8.2-.2.4-.5.6-.7l.2-.2c.1-.1.4-.1.5 0 .1.1.1.4 0 .5-1.2 1.1-2 3.2-2.3 4.3 1-.6 1.8-1.3 2.5-2.2 1-1.4 1.3-3.2 1-4.9-1.7.5-3.2 1.7-3.9 3.2-.7 1.5-.9 2.9-.8 4.4-.4.1-1.2.2-1.6.3-.5 0-.6.2-.6.4zm9.8-2.5-.1.1c-.1.1-.1.1 0 .2 0 .1.2.1.3.1.4 0 .8-.1 1.1-.2.1 0 1.1-.4 1.1-.4.6 1.2 1.3 2.2 2.5 3 1.2.8 2.9 1.1 4.4.8-.5-1.5-1.6-2.7-2.9-3.4-.9-.4-1.7-.6-2.6-.7.4.6 1.3 1.5 2.8 2.1.2.1.3.3.2.5-.1.1-.2.2-.3.2H39c-.3-.1-.6-.3-.9-.4-.3-.1-.5-.3-.7-.5-.2-.2-.4-.3-.6-.5l-.5-.5c-.1-.1-.2-.3-.4-.4-.1-.1-.2-.2-.2-.4-.1-.1-.2-.2-.2-.4-.1-.3-.1-.7 0-1 0-.3.1-.7.2-1 .2-.9.7-1.7 1.2-2.4.1-.2.3-.2.5-.1s.2.3.1.5c-.9 1.2-1.2 2.4-1.3 3 .6-.4 1.1-1 1.6-1.7.7-1.1.9-2.6.5-3.9-1.3.5-2.4 1.5-2.9 2.7-.5 1.2-.5 2.3-.4 3.5-.4.1-.7.3-1.1.4-.6.4-1 .5-1.3.8z" fill="#ffffff"/>
<path d="M28.6 41c-.3.1-.6.1-.9.2-.2.1-.3.1-.5.2 0 0-.1.1-.2.1-.1.1-.2.1-.2.2 0 .2.3.2.4.2.5.1 1-.1 1.4-.2l1.2-.3h.1c.5 1.2 1.2 2.1 2.3 2.9 1.1.8 2.7 1.1 4.1.8-.4-1.4-1.4-2.6-2.7-3.2-.8-.4-1.6-.6-2.2-.6.4.6 1.3 1.6 2.9 2.2.2.1.3.3.2.5-.1.1-.2.2-.3.2h-.1c-.5-.2-.9-.5-1.4-.7-.4-.2-.7-.5-1-.8L31 42c-.1-.2-.3-.4-.4-.6-.1-.2-.3-.5-.2-.8v-.3c.1-.3.1-.6.2-.9.1-.4.2-.8.4-1.2.2-.4.3-.9.6-1.3.1-.1.2-.2.2-.4.1-.2.3-.2.5-.1s.2.3.1.5c-.7 1-1 2.4-1.2 3.2.7-.4 1.2-1 1.8-1.7.9-1.2 1.2-2.9.9-4.4-1.5.5-2.9 1.5-3.5 2.9-.6 1.3-.8 2.5-.7 3.8-.3.1-.7.2-1.1.3zm14-4.4c-.2.2-.1.4.1.4.3 0 .7-.1 1-.2.7-.3 1-.4 1.2-.5.9 1 1.8 1.7 3.2 2.1 1.4.5 3.1.3 4.4-.4-.9-1.2-2.2-2.2-3.7-2.4-.8-.1-1.6-.1-2.3 0 .1.1.3.2.5.4.7.5 1.5.8 2.5.8.2 0 .3.2.3.4s-.2.3-.3.3c-.6 0-1.3-.2-1.9-.4-.4-.2-.9-.4-1.2-.8-.2-.2-.5-.4-.7-.7-.1-.2-.1-.4-.1-.6v-.7c.1-.7.3-1.3.6-1.9.1-.1.1-.2.2-.3.1-.2.3-.2.5-.1s.2.3.1.5c-.6.9-.7 1.7-.7 2.3.4-.3.7-.7 1-1.1.7-1 .9-2.4.6-3.6-1.2.4-2.3 1.3-2.8 2.4-.5 1.1-.6 2.1-.4 3.2-.2.1-.5.2-1 .5-.6 0-.9.2-1.1.4z" fill="#ffffff"/>
<path d="M37.5 38.4c-.2.2-.1.5.1.5h.1c.2 0 .5 0 .7-.1 0 0 .7-.3 1.5-.5.7 1.1 1.5 2 2.8 2.7 1.3.7 3 .8 4.5.3-.6-1.4-1.8-2.6-3.3-3-.9-.3-1.7-.4-2.5-.4.4.5 1.3 1.2 2.8 1.6.2 0 .3.2.2.4 0 .2-.2.3-.3.3H44c-.7-.2-1.4-.5-2-.9-.3-.2-.6-.4-.9-.7-.2-.2-.6-.5-.7-.8-.1-.2-.1-.3-.1-.5v-.9c0-.3.1-.5.1-.7.1-.3.2-.6.3-.8.1-.3.3-.6.5-.9.1-.1.1-.2.2-.2.1-.2.3-.2.5-.1s.2.3.1.5c-.8 1.1-1 2.2-1 2.9.5-.4 1-.9 1.4-1.5.7-1.1.9-2.6.5-3.9-1.3.5-2.4 1.5-2.9 2.7-.5 1.1-.5 2.1-.4 3.3l-1.6.4c-.2.1-.4.2-.5.3zm10.4-4.3c-.2.2-.1.4.1.4.4 0 .8-.2 1.1-.3.3-.2.6-.3.8-.4.9.7 1.8 1.2 3 1.4 1.3.2 2.7-.1 3.8-.9-.9-1-2.2-1.6-3.6-1.7-.7 0-1.3.1-2 .3.3.2 1.2.7 2.9.8.2 0 .3.2.3.4s-.2.3-.3.3c-.6 0-1.2-.1-1.7-.2-.6-.1-1.1-.3-1.6-.7-.4-.3-.4-.9-.3-1.4.1-.8.3-1.7.7-2.4.1-.2.3-.2.5-.1s.2.3.1.5c-.4.6-.5 1.6-.5 2.2.3-.3.6-.7.8-1.1.6-1 .7-2.4.3-3.5-1.1.5-2.1 1.4-2.5 2.5-.4 1-.4 1.9-.3 3l-1 .5c-.2 0-.4.2-.6.4z" fill="#ffffff"/>
<path d="M52.8 31.9c.4 0 1-.5 1.3-.7.3-.1.6-.3.9-.4.1.6.5.9 1 1.1.3.1.6.1 1 .1.8-.1 1.6-.3 1.9-1.1v-.4c-.1-.5-.5-.7-.9-.8l-.2-.1h-.9c-.2 0-.4 0-.5.1-.2.1-.5.1-.7.2-.1 0-.2.1-.2.1-.4.1-.8.3-1.1.4-.4.1-1.2.6-1.5.8l-.3.3c-.2.1 0 .4.2.4z" fill="#ffffff"/>
<path d="M48 0C21.5 0 0 21.5 0 48s21.5 48 48 48 48-21.5 48-48S74.5 0 48 0zm37.6 73.4c-1.6 2.4-3.5 4.7-5.5 6.7-2.1 2.1-4.3 3.9-6.7 5.5-2.4 1.6-5 3-7.7 4.2-5.6 2.4-11.5 3.6-17.7 3.6s-12.1-1.2-17.7-3.6c-2.7-1.1-5.3-2.5-7.7-4.2-2.4-1.6-4.7-3.5-6.7-5.5-2.1-2.1-3.9-4.3-5.5-6.7-1.6-2.4-3-5-4.2-7.7C3.8 60.1 2.6 54.1 2.6 48s1.2-12.1 3.6-17.7c1.1-2.7 2.5-5.3 4.2-7.7 1.6-2.4 3.5-4.7 5.5-6.7 2.1-2.1 4.3-3.9 6.7-5.5 2.4-1.6 5-3 7.7-4.2C35.9 3.8 41.9 2.6 48 2.6s12.1 1.2 17.7 3.6c2.7 1.1 5.3 2.5 7.7 4.2 2.4 1.6 4.7 3.5 6.7 5.5 2.1 2.1 3.9 4.3 5.5 6.7 1.6 2.4 3 5 4.2 7.7 2.4 5.6 3.6 11.5 3.6 17.7s-1.2 12.1-3.6 17.7c-1.1 2.7-2.5 5.3-4.2 7.7z" fill="#ffffff"/>
<path d="M31.4 66.4c-2.1-.4-11.9.3-11.2-11.3.7 5.7 3.9 9.3 10.9 8.3 0 0-9.2-3.2-8.5-15 0 0-1.1-.3-1.9-1-1.7 2.4-3.1 9.6-2.2 12.5-.2-.2-3-5.2.8-13.6-.8-.6-1.6-1.6-1.6-1.6s-4 5.5-2.7 12.5c.5 5.8 7.5 13 16.4 9.2z" fill="#ffffff"/>
<path d="M29.7 60.2c-3.3-5.8-1.6-9.1-1.6-9.1-2.8-.6-3.8-4.5-3.8-4.5-1.2 5.8 1 11 5.4 13.6z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1727340360476" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9874" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M836.395 475.861L709.973 970.155a8.661 8.661 0 0 0 0 4.138 9.216 9.216 0 0 0 9.174 7.04H971.86a9.216 9.216 0 0 0 9.216-11.178L854.06 475.86a9.301 9.301 0 0 0-14.379-4.736 8.96 8.96 0 0 0-3.328 4.694M140.8 587.86L42.88 970.155a9.173 9.173 0 0 0 9.259 11.136h195.029a9.344 9.344 0 0 0 7.381-3.328 8.917 8.917 0 0 0 1.792-3.67 8.661 8.661 0 0 0 0.043-4.138L158.379 587.86a8.96 8.96 0 0 0-3.328-4.65 9.387 9.387 0 0 0-5.419-1.792 9.387 9.387 0 0 0-5.547 1.792 8.96 8.96 0 0 0-3.285 4.65" fill="#00E5E5" p-id="9875"></path><path d="M313.43 271.36L135.082 970.155a8.96 8.96 0 0 0 1.706 7.594 9.088 9.088 0 0 0 7.04 3.542h356.822a9.216 9.216 0 0 0 9.258-11.094L331.051 271.275a8.96 8.96 0 0 0-3.328-4.651 9.387 9.387 0 0 0-5.462-1.792 9.387 9.387 0 0 0-5.504 1.792 8.96 8.96 0 0 0-3.328 4.693" fill="#006EFF" p-id="9876"></path><path d="M621.141 49.11a8.96 8.96 0 0 0-3.328-4.651 9.387 9.387 0 0 0-5.504-1.792 9.387 9.387 0 0 0-5.461 1.792 8.96 8.96 0 0 0-3.328 4.65L359.723 970.155a9.173 9.173 0 0 0 9.216 11.093h487.253a9.344 9.344 0 0 0 7.339-3.328 9.472 9.472 0 0 0 1.877-3.67 9.173 9.173 0 0 0 0-4.095L621.141 49.109z" fill="#006EFF" p-id="9877"></path><path d="M442.027 372.95L287.36 970.111a8.832 8.832 0 0 0 1.835 7.85 9.216 9.216 0 0 0 7.381 3.371h308.608a9.387 9.387 0 0 0 7.424-3.413 9.301 9.301 0 0 0 1.835-7.808L459.648 372.907a8.96 8.96 0 0 0-3.328-4.608 9.387 9.387 0 0 0-5.504-1.835 9.387 9.387 0 0 0-5.461 1.835 8.96 8.96 0 0 0-3.328 4.608" fill="#00E5E5" p-id="9878"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96">
<g style="mix-blend-mode:difference">
<path fill="white" fill-rule="evenodd" d="M47.77,1A47,47,0,1,1,1,48.23V48A46.87,46.87,0,0,1,47.71,1Zm0,9a38.12,38.12,0,0,1,19.13,71A82.23,82.23,0,0,0,69.84,54.5c2.44.69,3.82,1.08,6.27,1.87A128.54,128.54,0,0,0,66.2,36.09,81.28,81.28,0,0,1,53.06,54.25l7.84-.49c-6.75,12.12-16.27,18-28.33,19.71-2.75-13.71-.69-36,14.7-46.48l1.56,7.48c3-4.83,8.93-11.22,13.34-15.67a41.77,41.77,0,0,0-22.83-2.15c1.27,1.09,2.84,2.47,4.11,3.55C26.1,27.57,16.57,39.68,10.3,53.76A38.3,38.3,0,0,1,47.77,9.94Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 634 B

View File

@@ -50,10 +50,10 @@ PODS:
- flutter_inappwebview_ios (0.0.1):
- Flutter
- flutter_inappwebview_ios/Core (= 0.0.1)
- OrderedSet (~> 5.0)
- OrderedSet (~> 6.0.3)
- flutter_inappwebview_ios/Core (0.0.1):
- Flutter
- OrderedSet (~> 5.0)
- OrderedSet (~> 6.0.3)
- flutter_local_authentication (1.2.0):
- Flutter
- flutter_local_notifications (0.0.1):
@@ -71,7 +71,7 @@ PODS:
- move_to_background (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- OrderedSet (5.0.0)
- OrderedSet (6.0.3)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
@@ -82,14 +82,14 @@ PODS:
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- SDWebImage (5.19.2):
- SDWebImage/Core (= 5.19.2)
- SDWebImage/Core (5.19.2)
- Sentry/HybridSDK (8.33.0)
- sentry_flutter (8.7.0):
- SDWebImage (5.19.7):
- SDWebImage/Core (= 5.19.7)
- SDWebImage/Core (5.19.7)
- Sentry/HybridSDK (8.36.0)
- sentry_flutter (8.9.0):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.33.0)
- Sentry/HybridSDK (= 8.36.0)
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
@@ -100,16 +100,16 @@ PODS:
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- "sqlite3 (3.46.0+1)":
- "sqlite3/common (= 3.46.0+1)"
- "sqlite3/common (3.46.0+1)"
- "sqlite3/dbstatvtab (3.46.0+1)":
- "sqlite3 (3.46.1+1)":
- "sqlite3/common (= 3.46.1+1)"
- "sqlite3/common (3.46.1+1)"
- "sqlite3/dbstatvtab (3.46.1+1)":
- sqlite3/common
- "sqlite3/fts5 (3.46.0+1)":
- "sqlite3/fts5 (3.46.1+1)":
- sqlite3/common
- "sqlite3/perf-threadsafe (3.46.0+1)":
- "sqlite3/perf-threadsafe (3.46.1+1)":
- sqlite3/common
- "sqlite3/rtree (3.46.0+1)":
- "sqlite3/rtree (3.46.1+1)":
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- Flutter
@@ -231,7 +231,7 @@ SPEC CHECKSUMS:
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
@@ -240,19 +240,19 @@ SPEC CHECKSUMS:
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
Sentry: 8560050221424aef0bebc8e31eedf00af80f90a6
sentry_flutter: e26b861f744e5037a3faf9bf56603ec65d658a61
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 292c3e1bfe89f64e51ea7fc7dab9182a017c8630
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e

View File

@@ -1,5 +1,3 @@
library super_logging;
import 'dart:async';
import 'dart:collection';
import 'dart:core';

View File

@@ -1,146 +0,0 @@
// Inspired from https://github.com/netfarm/lehttp_overrides
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
// expired
const String kSha1DstX3 = 'DAC9024F54D8F6DF94935FB1732638CA6AD77C13';
// ISRG Root X1
const String kIsrgRootX1 = '''-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----''';
const String kIsrgRootX1Alt = '''-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
-----END CERTIFICATE-----
''';
const String kLetsEncryptCert = '''-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
''';
String _hexConverter(Uint8List bytes) {
final StringBuffer buffer = StringBuffer();
for (int part in bytes) {
buffer.write('${part < 16 ? '0' : ''}${part.toRadixString(16)}');
}
return buffer.toString().toUpperCase();
}
class WindowsHttpOverrides extends HttpOverrides {
static bool? _initRootCert;
final bool allowExpiredDSTX3;
static bool _addRootCert() {
if (Platform.isWindows) {
final List<int> cert = ascii.encode(kIsrgRootX1);
SecurityContext.defaultContext.setTrustedCertificatesBytes(cert);
final List<int> certAlt = ascii.encode(kIsrgRootX1Alt);
SecurityContext.defaultContext.setTrustedCertificatesBytes(certAlt);
final List<int> certAlt2 = ascii.encode(kLetsEncryptCert);
SecurityContext.defaultContext.setTrustedCertificatesBytes(certAlt2);
}
return true;
}
WindowsHttpOverrides({this.allowExpiredDSTX3 = false}) {
_initRootCert ??= _addRootCert();
}
@override
HttpClient createHttpClient(SecurityContext? context) {
final HttpClient client = super.createHttpClient(context);
if (allowExpiredDSTX3) {
client.badCertificateCallback =
(X509Certificate cert, String host, int port) =>
_hexConverter(cert.sha1) == kSha1DstX3;
}
return client;
}
}

View File

@@ -66,24 +66,25 @@ final lightThemeData = ThemeData(
color: Colors.black,
width: 2,
),
fillColor: MaterialStateProperty.resolveWith((states) {
return states.contains(MaterialState.selected)
fillColor: WidgetStateProperty.resolveWith((states) {
return states.contains(WidgetState.selected)
? const Color.fromRGBO(0, 0, 0, 1)
: const Color.fromRGBO(255, 255, 255, 1);
}),
checkColor: MaterialStateProperty.resolveWith((states) {
return states.contains(MaterialState.selected)
checkColor: WidgetStateProperty.resolveWith((states) {
return states.contains(WidgetState.selected)
? const Color.fromRGBO(255, 255, 255, 1)
: const Color.fromRGBO(0, 0, 0, 1);
}),
),
radioTheme: RadioThemeData(
fillColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
@@ -91,21 +92,21 @@ final lightThemeData = ThemeData(
),
switchTheme: SwitchThemeData(
thumbColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
}),
trackColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
@@ -114,7 +115,7 @@ final lightThemeData = ThemeData(
colorScheme: const ColorScheme.light(
primary: Colors.black,
secondary: Color.fromARGB(255, 163, 163, 163),
).copyWith(background: const Color.fromRGBO(255, 255, 255, 1)),
).copyWith(surface: const Color.fromRGBO(255, 255, 255, 1)),
);
final darkThemeData = ThemeData(
@@ -176,15 +177,15 @@ final darkThemeData = ThemeData(
color: Colors.grey,
width: 2,
),
fillColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.selected)) {
fillColor: WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(158, 158, 158, 1);
} else {
return const Color.fromRGBO(0, 0, 0, 1);
}
}),
checkColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.selected)) {
checkColor: WidgetStateProperty.resolveWith((states) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(0, 0, 0, 1);
} else {
return const Color.fromRGBO(158, 158, 158, 1);
@@ -193,11 +194,11 @@ final darkThemeData = ThemeData(
),
radioTheme: RadioThemeData(
fillColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
@@ -205,28 +206,28 @@ final darkThemeData = ThemeData(
),
switchTheme: SwitchThemeData(
thumbColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
}),
trackColor:
MaterialStateProperty.resolveWith<Color?>((Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
WidgetStateProperty.resolveWith<Color?>((Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return null;
}
if (states.contains(MaterialState.selected)) {
if (states.contains(WidgetState.selected)) {
return const Color.fromRGBO(102, 187, 106, 1);
}
return null;
}),
),
colorScheme: const ColorScheme.dark(primary: Colors.white)
.copyWith(background: const Color.fromRGBO(0, 0, 0, 1)),
.copyWith(surface: const Color.fromRGBO(0, 0, 0, 1)),
);
TextTheme _buildTextTheme(Color textColor) {
@@ -458,17 +459,17 @@ OutlinedButtonThemeData buildOutlinedButtonThemeData({
fontSize: 18,
),
).copyWith(
backgroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
backgroundColor: WidgetStateProperty.resolveWith<Color>(
(Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return bgDisabled;
}
return bgEnabled;
},
),
foregroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.disabled)) {
foregroundColor: WidgetStateProperty.resolveWith<Color>(
(Set<WidgetState> states) {
if (states.contains(WidgetState.disabled)) {
return fgDisabled;
}
return fgEnabled;

View File

@@ -1,5 +1,5 @@
{
"account": "حسابي",
"account": "الحساب",
"unlock": "فتح القفل",
"recoveryKey": "مفتاح الاسترداد",
"counterAppBarTitle": "العداد",
@@ -19,6 +19,20 @@
"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": "الحساب (you@domain.com)",
"codeTagHint": "وسم",
"accountKeyType": "نوع المفتاح",
@@ -79,7 +93,7 @@
"data": "البيانات",
"importCodes": "استورد شيفرات",
"importTypePlainText": "نص بسيط",
"importTypeEnteEncrypted": "تصدير Ente Ecrypted",
"importTypeEnteEncrypted": "تصدير مشفر ente",
"passwordForDecryptingExport": "كلمة المرور لفك تشفير التصدير",
"passwordEmptyError": "لا يمكن أن تكون كلمة المرور فارغة",
"importFromApp": "استورد الشيفرات من {appName}",
@@ -123,21 +137,10 @@
"oops": "عذرًا",
"suggestFeatures": "اقتراح ميزة",
"faq": "الأسئلة الأكثر شيوعاً",
"faq_q_1": "إلى أي مدى Auth آمن؟",
"faq_a_1": "كل الشيفرات التي تنسخها احتياطيا بواسطة Auth تخزن مشفرة من الطرفين. يعني هذا أنك وحدك من يمكنك الوصول لشيفراتك. تطبيقاتنا مفتوحة المصدر وتشفيرنا تم اختباره من جهات خارجية.",
"faq_q_2": "هل يمكنني الوصول إلى رموزي على سطح المكتب؟",
"faq_a_2": "يمكنك الوصول إلى رموزك على الويب @ auth.ente.io.",
"faq_q_3": "كيف يمكنني حذف الرموز؟",
"faq_a_3": "يمكنك حذف الرمز عن طريق السحب لليسار على هذا العنصر.",
"faq_q_4": "كيف يمكنني دعم هذا المشروع؟",
"faq_a_4": "يمكنك دعم تطوير هذا المشروع عن طريق الاشتراك في تطبيق الصور @ ente.io.",
"faq_q_5": "كيف يمكنني تفعيل قفل FaceID في Auth",
"faq_a_5": "يمكنك تمكين قفل FaceID تحت الإعدادات => الحماية => قفل الشاشة.",
"somethingWentWrongMessage": "حدث خطأ ما، يرجى المحاولة مرة أخرى",
"leaveFamily": "مغادرة خطة العائلة",
"leaveFamilyMessage": "هل أنت متأكد من الخروج من خطة العائلة؟",
"inFamilyPlanMessage": "أنت مندرج ضمن خطة عائلية!",
"swipeHint": "اسحب لليسار لتحرير أو إزالة الرموز",
"scan": "مسح",
"scanACode": "فحص رمز Qr",
"verify": "التحقق",
@@ -182,6 +185,7 @@
"security": "الأمان",
"lockscreen": "شاشة القفل",
"authToChangeLockscreenSetting": "الرجاء المصادقة لتغيير إعدادات شاشة القفل",
"deviceLockEnablePreSteps": "لتمكين قفل التطبيق، فضلا أعد شيفرة مرور للجهاز أو قفل الشاشة في إعدادات نظامك.",
"viewActiveSessions": "عرض الجلسات النشطة",
"authToViewYourActiveSessions": "الرجاء المصادقة لعرض جلساتك النشطة",
"searchHint": "بحث...",

View File

@@ -0,0 +1,40 @@
{
"account": "Уліковы запіс",
"unlock": "Разблакіраваць",
"recoveryKey": "Ключ аднаўлення",
"counterAppBarTitle": "Лічыльнік",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingGetStarted": "Пачаць",
"codeIssuerHint": "Выдавец",
"codeSecretKeyHint": "Сакрэтны ключ",
"secret": "Сакрэт",
"notes": "Нататкі",
"codeTagHint": "Тэг",
"saveAction": "Захаваць",
"blog": "Блог",
"changePassword": "Змяніць пароль",
"data": "Даныя",
"importLabel": "Імпарт",
"yes": "Так",
"no": "Не",
"email": "Электронная пошта",
"support": "Падтрымка",
"settings": "Налады",
"pleaseTryAgain": "Калі ласка, паспрабуйце яшчэ раз",
"delete": "Выдаліць",
"enterYourPasswordHint": "Увядзіце ваш пароль",
"faq": "Частыя пытанні",
"deleteAccount": "Выдаліць уліковы запіс",
"noDeleteAccountAction": "Не, выдаліць уліковы запіс",
"sendEmail": "Адправіць ліст",
"createNewAccount": "Стварыць новы ўліковы запіс",
"confirmPassword": "Пацвердзіць пароль",
"close": "Закрыць",
"oopsSomethingWentWrong": "Штосьці пайшло не так.",
"language": "Мова",
"security": "Бяспека",
"searchHint": "Пошук...",
"search": "Пошук"
}

View File

@@ -19,6 +19,20 @@
"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": "Профил (you@domain.com)",
"codeTagHint": "Етикет",
"accountKeyType": "Тип на кода",
@@ -34,6 +48,9 @@
"nextTotpTitle": "следващ",
"deleteCodeTitle": "Изтриване на кода?",
"deleteCodeMessage": "Сигурни ли сте, че искате да изтриете този код? Това действие е необратимо.",
"trashCode": "Преместване в кошчето на кода?",
"trashCodeMessage": "Сигурни ли сте, че искате да изместите кода в кошчето за {account}?",
"trash": "Кошче",
"viewLogsAction": "Преглед на историята на действията",
"sendLogsDescription": "Това ще изпрати файлове с история на действията, за да ни помогне да отстраним проблема Ви. Въпреки че вземаме предпазни мерки, за да гарантираме, че чувствителната информация не се регистрира, препоръчваме Ви да прегледате тези файлове с история на действията, преди да ги споделите.",
"preparingLogsTitle": "Подготвяне на файловете с историята...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Потвърждение чрез имейл",
"emailVerificationEnableWarning": "За да избегнете загуба на достъп до акаунта си, не забравяйте да съхраните копие от Вашия имейл 2FA извън Ente Auth, преди да активирате потвърждението чрез имейл.",
"authToChangeEmailVerificationSetting": "Моля, удостоверете се, за да промените потвърждението чрез имейл",
"authenticateGeneric": "Моля, удостоверете се",
"authToViewYourRecoveryKey": "Моля, удостоверете се, за да видите Вашия ключ за възстановяване",
"authToChangeYourEmail": "Моля, удостоверете се, за да промените своя имейл",
"authToChangeYourPassword": "Моля, удостоверете се, за да промените паролата си",
@@ -123,21 +141,12 @@
"oops": "Опа",
"suggestFeatures": "Предложете функции",
"faq": "ЧЗВ",
"faq_q_1": "Колко сигурен е Auth?",
"faq_a_1": "Всички кодове, които архивирате чрез Auth, се съхраняват криптирани от край до край. Това означава, че само Вие имате достъп до Вашите кодове. Нашите приложения са с отворен код и нашата криптография е подложена на външен одит.",
"faq_q_2": "Мога ли да получа достъп до моите кодове на работния плот?",
"faq_a_2": "Можете да получите достъп до вашите кодове онлайн @ auth.ente.io.",
"faq_q_3": "Как мога да изтрия кодове?",
"faq_a_3": "Можете да изтриете код, като плъзнете наляво върху него.",
"faq_q_4": "Как мога да подкрепя този проект?",
"faq_a_4": "Можете да подкрепите развитието на този проект, като се абонирате за нашето приложение за снимки @ ente.io.",
"faq_q_5": "Как мога да активирам заключване чрез FaceID в Auth",
"faq_a_5": "Можете да активирате заключване чрез FaceID в Настройки → Сигурност → Заключен екран.",
"somethingWentWrongMessage": "Нещо се обърка, моля опитайте отново",
"leaveFamily": "Напуснете семейството",
"leaveFamilyMessage": "Сигурни ли сте, че искате да напуснете семейния план?",
"inFamilyPlanMessage": "Вие сте на семеен план!",
"swipeHint": "Плъзнете наляво, за да редактирате или премахнете кодове",
"hintForMobile": "Натиснете продължително код, за да го редактирате или премахнете.",
"hintForDesktop": "Натиснете десен бутон върху код, за да го редактирате или премахнете.",
"scan": "Сканиране",
"scanACode": "Скениране на код",
"verify": "Потвърждаване",
@@ -193,6 +202,10 @@
"scanAQrCode": "Скениране на QR код",
"enterDetailsManually": "Въведете подробности ръчно",
"edit": "Редактиране",
"share": "Споделяне",
"shareCodes": "Споделяне на кодове",
"shareCodesDuration": "Изберете продължителността, за която искате да споделите кодовете.",
"restore": "Възстановяване",
"copiedToClipboard": "Копирано в буферната памет",
"copiedNextToClipboard": "Следващият код е копиран в буферната памет",
"error": "Грешка",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Моля, експортирайте Вашите кодове, за да сте сигурни, че имате резервно копие, от което можете да ги възстановите.",
"offlineModeWarning": "Избрахте да продължите без резервни копия. Моля, направете ръчни резервни копия, за да сте сигурни, че Вашите кодове са в безопасност.",
"showLargeIcons": "Показване на големи икони",
"compactMode": "Компактен изглед",
"shouldHideCode": "Скриване на кодове",
"doubleTapToViewHiddenCode": "Можете да докоснете два пъти върху запис, за да видите кода",
"focusOnSearchBar": "Фокусиране на търсенето при стартиране на приложението",
@@ -466,5 +480,8 @@
"pinLock": "Заключване с ПИН код",
"enterPin": "Въведете ПИН код",
"setNewPin": "Задаване на нов ПИН код",
"importFailureDescNew": "Неуспешно обработване на избрания файл."
"importFailureDescNew": "Неуспешно обработване на избрания файл.",
"appLockNotEnabled": "Заключването на приложението не е активирано",
"appLockNotEnabledDescription": "Моля, активирайте заключването на приложението от Сигурност > Заключване на приложението",
"authToViewPasskey": "Моля, удостоверете се, за да видите Вашите ключове за парола"
}

View File

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

View File

@@ -0,0 +1,487 @@
{
"account": "Konto",
"unlock": "Lås op",
"recoveryKey": "Gendannelsesnøgle",
"counterAppBarTitle": "Tæller",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Sikkerhedskopier dine 2FA koder",
"onBoardingGetStarted": "Kom i gang",
"setupFirstAccount": "Opret din første konto",
"importScanQrCode": "Skan en QR kode",
"qrCode": "QR kode",
"importEnterSetupKey": "Indtast en oprettelsesnøgle",
"importAccountPageTitle": "Indtast kontooplysninger",
"secretCanNotBeEmpty": "Hemmelighed kan ikke være tom",
"bothIssuerAndAccountCanNotBeEmpty": "Både udsteder og konto kan ikke være tomme",
"incorrectDetails": "Forkerte oplysninger",
"pleaseVerifyDetails": "Bekræft venligst oplysningerne og forsøg igen",
"codeIssuerHint": "Udsteder",
"codeSecretKeyHint": "Hemmelig nøgle",
"secret": "Hemmelighed",
"all": "Alt",
"notes": "Noter",
"notesLengthLimit": "Noter kan højest være {count} tegn",
"@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": "Konto (you@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Nøgletype",
"sessionExpired": "Session udløbet",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Log venligst på igen",
"loggingOut": "Logger ud...",
"timeBasedKeyType": "Tids-baseret (TOTP)",
"counterBasedKeyType": "Tæller-baseret (HOTP)",
"saveAction": "Gem",
"nextTotpTitle": "næste",
"deleteCodeTitle": "Slet kode?",
"deleteCodeMessage": "Er du sikker på at du vil slette denne kode? Handlingen er irreversibel.",
"trashCode": "Slet kode?",
"trashCodeMessage": "Er du sikker på at du vil slette koden til {account}?",
"trash": "Slet",
"viewLogsAction": "Se logs",
"sendLogsDescription": "Dette vil sende os dine logs for at hjælpe os med at løse dit problem. Selvom vi tager forholdsregler for at sikre at følsomme oplysninger ikke bliver logget anbefaler vi at du tjekker dine logs før du sender dem.",
"preparingLogsTitle": "Forbereder logs...",
"emailLogsTitle": "Send logs i email",
"emailLogsMessage": "Send venligst logs til {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Kopier email adresse",
"exportLogsAction": "Eksporter logs",
"reportABug": "Rapporter en fejl",
"crashAndErrorReporting": "Nedbruds- og fejlrapportering",
"reportBug": "Rapporter fejl",
"emailUsMessage": "Send os venligst en email på {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Kontakt support",
"rateUsOnStore": "Anmeld os på {storeName}",
"blog": "Blog",
"merchandise": "Merchandise",
"verifyPassword": "Bekræft adgangskode",
"pleaseWait": "Vent venligst...",
"generatingEncryptionKeysTitle": "Genererer krypteringsnøgler...",
"recreatePassword": "Gendan adgangskode",
"recreatePasswordMessage": "Den nuværende enhed er ikke kraftfuld nok til at bekræfte din adgangskode, så vi bliver nødt til at gendanne den på en måde der fungerer på alle enheder.\n\nLog venligst ind med din gendannelsesnøgle og gendan din adgangskode (du kan bruge den samme adgangskode igen hvis du ønsker).",
"useRecoveryKey": "Brug gendannelsesnøgle",
"incorrectPasswordTitle": "Forkert adgangskode",
"welcomeBack": "Velkommen tilbage!",
"madeWithLoveAtPrefix": "lavet med ❤️ hos ",
"supportDevs": "Abonnér på <bold-green>ente</bold-green> for at støtte os",
"supportDiscount": "Brug rabatkoden \"AUTH\" og få 10% rabat på det første år",
"changeEmail": "Skift email adresse",
"changePassword": "Skift adgangskode",
"data": "Data",
"importCodes": "Importer koder",
"importTypePlainText": "Almindelig tekst",
"importTypeEnteEncrypted": "Krypteret Ente eksport",
"passwordForDecryptingExport": "Kodeord til dekryptering af eksport",
"passwordEmptyError": "Kodeordet kan ikke være tomt",
"importFromApp": "Importer koder fra {appName}",
"importGoogleAuthGuide": "Eksporter dine konti fra Google Authenticator til en QR kode fra \"Transfer Accounts\".\n\nTip: Du kan bruge webkameraet på din bærbare computer til at tage et billede af QR koden.",
"importSelectJsonFile": "Vælg JSON fil",
"importSelectAppExport": "Vælg {appName} eksportfil",
"importEnteEncGuide": "Vælg den krypterede JSON fil eksporteret fra Ente",
"importRaivoGuide": "Brug \"Export OTPs to Zip archive\" fra Raivo's indstillinger.\n\nUdpak zip filen og importér JSON filen.",
"importBitwardenGuide": "Brug \"Export vault\" i Bitwarden Tools og importer den ukrypterede JSON fil.",
"importAegisGuide": "Brug \"Export the vault\" i Aegis' indstillinger.\n\nHvis din vault er krypteret bliver du nødt til at indtaste kodeordet for at dekryptere den.",
"import2FasGuide": "Brug \"Settings > Backup Export\" i 2FAS.\n\nHvis din backup er krypteret bliver du nødt til at indtaste kodeordet for at dekryptere den.",
"importLastpassGuide": "Brug \"Transfer accounts\" i Lastpass Authenticator Settings og tryk på \"Export accounts to file\". Importer den downloadede JSON fil.",
"exportCodes": "Eksporter koder",
"importLabel": "Importer",
"importInstruction": "Vælg venligst en fil der indeholder en liste af dine koder i det følgende format",
"importCodeDelimiterInfo": "Koderne kan adskilles med enten et komma eller en ny linje",
"selectFile": "Vælg fil",
"emailVerificationToggle": "Email-verifikation",
"emailVerificationEnableWarning": "For at undgå at blive låst ude af din konto, sørg for at gemme en kopi af din email 2FA udenfor Ente Auth før du aktiverer email-verifikation.",
"authToChangeEmailVerificationSetting": "Bekræft venligst din identitet for at ændre email-verifikation",
"authenticateGeneric": "Bekræft venligst din identitet",
"authToViewYourRecoveryKey": "Bekræft venligst din identitet for at se din gendannelseskode.",
"authToChangeYourEmail": "Bekræft venligst din identitet for at ændre din email adresse",
"authToChangeYourPassword": "Bekræft venligst din identitet for at ændre din adgangskode",
"authToViewSecrets": "Bekræft venligst din identitet for at se dine hemmeligheder",
"authToInitiateSignIn": "Bekræft venligst din identitet for at påbegynde sikkerhedskopiering.",
"ok": "OK",
"cancel": "Afbryd",
"yes": "Ja",
"no": "Nej",
"email": "Email",
"support": "Support",
"general": "Generelt",
"settings": "Indstillinger",
"copied": "Kopieret",
"pleaseTryAgain": "Forsøg venligst igen",
"existingUser": "Eksisterende bruger",
"newUser": "Ny bruger",
"delete": "Slet",
"enterYourPasswordHint": "Indtast adgangskode",
"forgotPassword": "Glemt adgangskode",
"oops": "Ups",
"suggestFeatures": "Foreslå funktioner",
"faq": "FAQ",
"somethingWentWrongMessage": "Noget gik galt, forsøg venligst igen",
"leaveFamily": "Forlad familie-abonnementet",
"leaveFamilyMessage": "Er du sikker på at du vil forlade familie-abonnementet?",
"inFamilyPlanMessage": "Du er nu i familie-abonnementet!",
"hintForMobile": "Langt tryk på en kode for at redigere eller slette.",
"hintForDesktop": "Højre-klik på en kode for at redigere eller slette.",
"scan": "Skan",
"scanACode": "Skan en kode",
"verify": "Bekræft",
"verifyEmail": "Bekræft email adresse",
"enterCodeHint": "Indtast den 6-cifrede kode fra din authenticator app",
"lostDeviceTitle": "Mistet enhed?",
"twoFactorAuthTitle": "Tofaktorgodkendelse",
"passkeyAuthTitle": "Bekræftelse af adgangskode",
"verifyPasskey": "Bekræft adgangskode",
"recoverAccount": "Gendan konto",
"enterRecoveryKeyHint": "Indtast din gendannelsesnøgle",
"recover": "Gendan",
"contactSupportViaEmailMessage": "Send venligst en email til {email} fra din registrerede email adresse",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Ugyldig QR kode",
"noRecoveryKeyTitle": "Ingen gendannelsesnøgle?",
"enterEmailHint": "Indtast din email adresse",
"invalidEmailTitle": "Ugyldig email adresse",
"invalidEmailMessage": "Indtast en gyldig email adresse.",
"deleteAccount": "Slet konto",
"deleteAccountQuery": "Vi er kede af at se dig gå. Er du stødt på et problem?",
"yesSendFeedbackAction": "Ja, send feedback",
"noDeleteAccountAction": "Nej, slet konto",
"initiateAccountDeleteTitle": "Bekræft venligst for at påbegynde sletning af konto",
"sendEmail": "Send email",
"createNewAccount": "Opret konto",
"weakStrength": "Svagt",
"strongStrength": "Stærkt",
"moderateStrength": "Middel",
"confirmPassword": "Bekræft kodeord",
"close": "Luk",
"oopsSomethingWentWrong": "Ups, noget gik galt.",
"selectLanguage": "Vælg sprog",
"language": "Sprog",
"social": "Social",
"security": "Sikkerhed",
"lockscreen": "Skærmlås",
"authToChangeLockscreenSetting": "Bekræft venligst din identitet for at ændre skærmlås indstillinger",
"deviceLockEnablePreSteps": "For at aktivere enhedslås, indstil venligst kode eller skærmlås på din enhed i dine systemindstillinger.",
"viewActiveSessions": "Se aktive sessioner",
"authToViewYourActiveSessions": "Bekræft venligst din identitet for at se dine aktive sessioner",
"searchHint": "Søg...",
"search": "Søg",
"sorryUnableToGenCode": "Beklager, ikke i stand til at generere en kode for {issuerName}",
"noResult": "Intet resultat",
"addCode": "Tilføj kode",
"scanAQrCode": "Skan QR kode",
"enterDetailsManually": "Indtast oplysninger manuelt",
"edit": "Rediger",
"share": "Del",
"shareCodes": "Del koder",
"shareCodesDuration": "Vælg varighed for deling af koden.",
"restore": "Genopret",
"copiedToClipboard": "Kopieret til udklipsholderen",
"copiedNextToClipboard": "Næste kode kopieret til udklipsholderen",
"error": "Fejl",
"recoveryKeyCopiedToClipboard": "Gendannelsesnøgle kopieret til udklipsholderen",
"recoveryKeyOnForgotPassword": "Hvis du glemmer dit kodeord er gendannelsesnøglen den eneste mulighed for at få adgang til dine data.",
"recoveryKeySaveDescription": "Vi gemmer ikke denne nøgle, gem venligst denne 24-ords nøgle et sikkert sted.",
"doThisLater": "Gør det senere",
"saveKey": "Gem nøgle",
"save": "Gem",
"send": "Send",
"saveOrSendDescription": "Vil du gemme på din enhed (Downloads mappe som udgangspunkt) eller sende til andre apps?",
"saveOnlyDescription": "Vil du gemme på din enhed (Downloads mappe som udgangspunkt)?",
"back": "Tilbage",
"createAccount": "Opret konto",
"passwordStrength": "Kodeordets styrke: {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": "Kodeord",
"signUpTerms": "Jeg er enig i <u-terms>betingelser for brug</u-terms> og <u-policy>privatlivspolitik</u-policy>",
"privacyPolicyTitle": "Privatlivspolitik",
"termsOfServicesTitle": "Betingelser",
"encryption": "Kryptering",
"setPasswordTitle": "Angiv adgangskode",
"changePasswordTitle": "Skift adgangskode",
"resetPasswordTitle": "Nulstil adgangskode",
"encryptionKeys": "Krypteringsnøgler",
"passwordWarning": "Vi gemmer ikke denne adgangskode, så hvis du glemmer den <underline>kan vi ikke dekryptere dine data</underline>",
"enterPasswordToEncrypt": "Indtast en adgangskode vi kan bruge til at kryptere dine data",
"enterNewPasswordToEncrypt": "Indtast en ny adgangskode vi kan bruge til at kryptere dine data",
"passwordChangedSuccessfully": "Adgangskoden er blevet ændret",
"generatingEncryptionKeys": "Genererer krypteringsnøgler...",
"continueLabel": "Fortsæt",
"insecureDevice": "Usikker enhed",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Beklager, vi kunne ikke generere sikre krypteringsnøgler på denne enhed.\n\nForsøg venligst at oprette en konto fra en anden enhed.",
"howItWorks": "Sådan fungerer det",
"ackPasswordLostWarning": "Jeg forstår at hvis jeg mister min adgangskode kan jeg miste mine data, da mine data er <underline>end-to-end krypteret</underline>.",
"loginTerms": "Ved at logge ind godkender jeg Ente's <u-terms>betingelser for brug</u-terms> og <u-policy>privatlivspolitik</u-policy>.",
"logInLabel": "Log ind",
"logout": "Log ud",
"areYouSureYouWantToLogout": "Er du sikker på at du vil logge ud?",
"yesLogout": "Ja, log ud",
"exit": "Afslut",
"verifyingRecoveryKey": "Bekræfter gendannelsesnøgle...",
"recoveryKeyVerified": "Gendannelsesnøgle bekræftet",
"recoveryKeySuccessBody": "Fantastisk! Din gendannelsesnøgle er gyldig. Tak for bekræften.\n\nHusk venligst at tage en sikkerhedskopi af din gendannelsesnøgle.",
"invalidRecoveryKey": "Den indtastede gendannelsesnøgle er ikke gyldig. Sørg venligst for at den indeholder 24 ord, og tjek stavningen af hvert ord.\n\nHvis du indtastede en ældre gendannelseskode, sørg for at den er 64 tegn lang, og tjek hvert tegn.",
"recreatePasswordTitle": "Gendan adgangskode",
"recreatePasswordBody": "Denne enhed er ikke kraftfuld nok til at bekræfte adgangskoden, men vi kan gendanne den på en måde der fungerer for alle enheder.\n\nLog venligst ind med din gendannelsesnøgle og gendan din adgangskode (du kan bruge den samme adgangskode igen hvis du ønsker).",
"invalidKey": "Ugyldig nøgle",
"tryAgain": "Forsøg igen",
"viewRecoveryKey": "Se gendannelsesnøgle",
"confirmRecoveryKey": "Bekræft gendannelsesnøgle",
"recoveryKeyVerifyReason": "Din gendannelsesnøgle er den eneste måde du kan gendanne dine data hvis du glemmer din adgangskode. Du kan finde din gendannelseskode under \"Indstillinger > Konto\".\n\nIndtast venligst din gendannelseskode for at bekræfte at du har gemt den korrekt.",
"confirmYourRecoveryKey": "Bekræft din gendannelsesnøgle",
"confirm": "Bekræft",
"emailYourLogs": "Email dine logs",
"pleaseSendTheLogsTo": "Send venligst logs til {toEmail}",
"copyEmailAddress": "Kopier email adresse",
"exportLogs": "Eksporter logs",
"enterYourRecoveryKey": "Indtast gendannelsesnøgle",
"tempErrorContactSupportIfPersists": "Det ser ud til at noget gik galt. Forsøg venligst igen efter lidt tid. Hvis fejlen varer ved, kontakt da venligst vores support.",
"networkHostLookUpErr": "Ude af stand til at forbinde til Ente. Tjek venligst dine netværksindstillinger og kontakt support hvis fejlen varer ved.",
"networkConnectionRefusedErr": "Ude af stand til at forbinde til Ente. Forsøg igen efter et stykke tid. Hvis fejlen varer ved, kontakt da venligst support.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Det ser ud til at noget gik galt. Forsøg venligst igen efter lidt tid. Hvis fejlen varer ved, kontakt da venligst support.",
"about": "Om os",
"weAreOpenSource": "Vi er open source!",
"privacy": "Privatliv",
"terms": "Betingelser",
"checkForUpdates": "Tjek for opdateringer",
"checkStatus": "Tjek status",
"downloadUpdate": "Download",
"criticalUpdateAvailable": "Kritisk opdatering er tilgængelig",
"updateAvailable": "Opdatering er tilgængelig",
"update": "Opdater",
"checking": "Tjekker...",
"youAreOnTheLatestVersion": "Du er på den seneste version",
"warning": "Advarsel",
"exportWarningDesc": "Den eksporterede fil indeholder fortrolige oplysninger. Opbevar den sikkert.",
"iUnderStand": "Jeg forstår",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Bekræft din identitet for at eksportere dine koder",
"importSuccessTitle": "Yay!",
"importSuccessDesc": "Du har importeret {count} koder!",
"@importSuccessDesc": {
"placeholders": {
"count": {
"description": "The number of codes imported",
"type": "int",
"example": "1"
}
}
},
"sorry": "Beklager",
"importFailureDesc": "Kunne ikke afkode the valgte fil. Skriv venligst til support@ente.io hvis du har brug for hjælp!",
"pendingSyncs": "Advarsel",
"pendingSyncsWarningBody": "Nogle af dine koder er ikke sikkerhedskopieret.\n\nForsikr venligst at du har sikkerhedskopieret dine koder før du logger af.",
"checkInboxAndSpamFolder": "Tjek venligst din indboks (og spam) for at færdiggøre verificeringen",
"tapToEnterCode": "Tryk for at indtaste kode",
"resendEmail": "Send email igen",
"weHaveSendEmailTo": "Vi har sendt en email til <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": "Aktive sessioner",
"somethingWentWrongPleaseTryAgain": "Noget gik galt, forsøg venligst igen",
"thisWillLogYouOutOfThisDevice": "Dette vil logge dig ud af denne enhed!",
"thisWillLogYouOutOfTheFollowingDevice": "Dette vil logge dig ud af den følgende enhed:",
"terminateSession": "Afslut session?",
"terminate": "Afslut",
"thisDevice": "Denne enhed",
"toResetVerifyEmail": "For at nulstille din adgangskode, bekræft venligst din email adresse.",
"thisEmailIsAlreadyInUse": "Denne email adresse er allerede i brug",
"verificationFailedPleaseTryAgain": "Bekræftelse fejlede, forsøg venligst igen",
"yourVerificationCodeHasExpired": "Din bekræftelseskode er udløbet",
"incorrectCode": "Forkert kode",
"sorryTheCodeYouveEnteredIsIncorrect": "Beklager, den indtastede kode er forkert",
"emailChangedTo": "Email adresse ændret til {newEmail}",
"authenticationFailedPleaseTryAgain": "Bekræftelse af identitet fejlede, forsøg venligst igen",
"authenticationSuccessful": "Bekræftelse af identitet lykkedes!",
"twofactorAuthenticationSuccessfullyReset": "Tofaktorgodkendelse nulstillet",
"incorrectRecoveryKey": "Forkert gendannelsesnøgle",
"theRecoveryKeyYouEnteredIsIncorrect": "Den indtastede gendannelsesnøgle er ikke korrekt",
"enterPassword": "Indtast adgangskode",
"selectExportFormat": "Vælg eksportformat",
"exportDialogDesc": "Krypterede eksporter vil blive beskyttet med en adgangskode efter dit valg.",
"encrypted": "Krypteret",
"plainText": "Almindelig tekst",
"passwordToEncryptExport": "Adgangskode til krypteret eksport",
"export": "Eksporter",
"useOffline": "Brug uden sikkerhedskopier",
"signInToBackup": "Log på for at tage sikkerhedskopier af dine koder",
"singIn": "Log på",
"sigInBackupReminder": "Eksporter venligst dine koder for at sikre at du har en sikkerhedskopi du kan gendanne fra.",
"offlineModeWarning": "Du har valgt at fortsætte uden sikkerhedskopier. Tag venligst en manuel sikkerhedskopi for at sikre dine koders sikkerhed.",
"showLargeIcons": "Vis store ikoner",
"compactMode": "Kompakt tilstand",
"shouldHideCode": "Skjul koder",
"doubleTapToViewHiddenCode": "Du kan dobbelt-klikke på et felt for at se koden",
"focusOnSearchBar": "Fokus på søgning ved opstart",
"confirmUpdatingkey": "Er du sikker på at du vil opdatere den hemmelige nøgle?",
"minimizeAppOnCopy": "Minimer app ved kopiering",
"editCodeAuthMessage": "Bekræft identitet for at redigere kode",
"deleteCodeAuthMessage": "Bekræft identitet for at slette kode",
"showQRAuthMessage": "Bekræft identitet for at se QR kode",
"confirmAccountDeleteTitle": "Bekræft sletning af konto",
"confirmAccountDeleteMessage": "Denne konto er forbundet til andre Ente apps, hvis du benytter nogle.\n\nDine uploadede data for alle Ente apps vil blive slettet, og din konto vil blive slettet permanent.",
"androidBiometricHint": "Bekræft identitet",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Ikke genkendt. Forsøg igen.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Succes",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Afbryd",
"@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": "Godkendelse påkrævet",
"@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": "Biometri påkrævet",
"@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": "Enhedsoplysninger påkrævet",
"@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": "Enhedsoplysninger påkrævet",
"@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": "Gå til indstillinger",
"@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": "Biometrisk godkendelse er ikke indstillet på din enhed. Gå til \"Indstillinger > Sikkerhed\" for at indstille biometrisk godkendelse.",
"@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": "Biometrisk godkendelse er slået fra. Lås din skærm, og lås den derefter op for at aktivere det.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "Biometrisk godkendelse er ikke indstillet på din enhed. Indstil venligst enten Touch ID eller Face ID på din telefon.",
"@iOSGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
},
"iOSOkButton": "OK",
"@iOSOkButton": {
"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": "Ingen internetforbindelse",
"pleaseCheckYourInternetConnectionAndTryAgain": "Tjek venligst din internetforbindelse og forsøg igen.",
"signOutFromOtherDevices": "Log ud af andre enheder",
"signOutOtherBody": "Hvis du mistænker at nogen kender din adgangskode kan du tvinge alle enheder der benytter din konto til at logge ud.",
"signOutOtherDevices": "Log ud af andre enheder",
"doNotSignOut": "Log ikke ud",
"hearUsWhereTitle": "Hvordan hørte du om Ente? (valgfrit)",
"hearUsExplanation": "Vi tracker ikke app installeringer. Det ville hjælpe os at vide hvordan du fandt os!",
"recoveryKeySaved": "Gendannelsesnøgle gemt i din Downloads mappe!",
"waitingForBrowserRequest": "Venter på browser forespørgsel...",
"waitingForVerification": "Venter på bekræftelse...",
"passkey": "Passkey",
"passKeyPendingVerification": "Bekræftelse afventes stadig",
"loginSessionExpired": "Session udløbet",
"loginSessionExpiredDetails": "Din session er udløbet. Log venligst på igen.",
"developerSettingsWarning": "Er du sikker på at du vil redigere Udvikler-indstillinger?",
"developerSettings": "Udvikler-indstillinger",
"serverEndpoint": "Server endpoint",
"invalidEndpoint": "Ugyldigt endpoint",
"invalidEndpointMessage": "Beklager, det indtastede endpoint er ugyldigt. Indtast venligst et gyldigt endpoint og forsøg igen.",
"endpointUpdatedMessage": "Endpoint opdateret",
"customEndpoint": "Forbindelse oprettet til {endpoint}",
"pinText": "Fastgør",
"unpinText": "Frigør",
"pinnedCodeMessage": "{code} er blevet fastgjort",
"unpinnedCodeMessage": "{code} er blevet frigjort",
"tags": "Tags",
"createNewTag": "Opret nyt tag",
"tag": "Tag",
"create": "Opret",
"editTag": "Rediger tag",
"deleteTagTitle": "Slet tag?",
"deleteTagMessage": "Er du sikker på at du vil slette dette tag? Denne handling er irreversibel.",
"somethingWentWrongParsingCode": "Vi var ikke i stand til at afkode {x} koder.",
"updateNotAvailable": "Opdatering er ikke tilgængelig",
"viewRawCodes": "Vis rå koder",
"rawCodes": "Rå koder",
"rawCodeData": "Rå kode data",
"appLock": "Låsning af app",
"noSystemLockFound": "Ingen systemlås fundet",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "For at indstille låsning af app, indstil venligst en kode eller skærmlås i dine systemindstillinger.",
"autoLock": "Automatisk lås",
"immediately": "Med det samme",
"reEnterPassword": "Indtast adgangskode igen",
"reEnterPin": "Indtast pinkode igen",
"next": "Næste",
"tooManyIncorrectAttempts": "For mange forkerte forsøg",
"tapToUnlock": "Tryk for at låse op",
"setNewPassword": "Indstil ny adgangskode",
"deviceLock": "Enhedslås",
"hideContent": "Skjul indhold",
"hideContentDescriptionAndroid": "Skjul app indhold i app-vælger og deaktiver screenshots",
"hideContentDescriptioniOS": "Skjul app indhold i app-vælger",
"autoLockFeatureDescription": "Tid til låsning af app efter at være blevet placeret i baggrunden",
"appLockDescription": "Vælg mellem din enheds standard skærmlås eller skærmlås med pinkode eller adgangskode.",
"pinLock": "Låsning med pinkode",
"enterPin": "Indtast pinkode",
"setNewPin": "Indstil ny pinkode",
"importFailureDescNew": "Kunne ikke afkode den valgte fil.",
"appLockNotEnabled": "Låsning af app er ikke slået til",
"appLockNotEnabledDescription": "Slå venligst låsning af app til under \"Sikkerhed > Låsning af app\"",
"authToViewPasskey": "Bekræft venligst identitet for at se passkey"
}

View File

@@ -16,12 +16,26 @@
"secretCanNotBeEmpty": "Geheimnis darf nicht leer sein",
"bothIssuerAndAccountCanNotBeEmpty": "Sowohl Aussteller als auch Konto können nicht leer sein",
"incorrectDetails": "Falsche Angaben",
"pleaseVerifyDetails": "Überprüfe die Angaben und versuche es erneut",
"pleaseVerifyDetails": "Bitte überprüfen Sie die Details und versuchen Sie es erneut",
"codeIssuerHint": "Aussteller",
"codeSecretKeyHint": "Geheimer Schlüssel",
"secret": "Geheimnis",
"all": "Alle",
"notes": "Notizen",
"notesLengthLimit": "Notizen können maximal {count} Zeichen lang sein",
"@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": "Konto (you@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Art des Keys",
"accountKeyType": "Art des Schlüssels",
"sessionExpired": "Sitzung abgelaufen",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -34,6 +48,9 @@
"nextTotpTitle": "Nächster Code",
"deleteCodeTitle": "Code löschen?",
"deleteCodeMessage": "Sind Sie sicher, dass Sie diesen Code löschen wollen? Diese Aktion ist unumkehrbar.",
"trashCode": "Code löschen?",
"trashCodeMessage": "Sind Sie sicher, dass Sie den Code für {account} löschen wollen?",
"trash": "Papierkorb",
"viewLogsAction": "Protokolle anzeigen",
"sendLogsDescription": "Dadurch werden Protokolle übermittelt, die uns bei der Behebung Ihres Problems helfen. Obwohl wir Vorkehrungen treffen, um sicherzustellen, dass keine sensiblen Informationen protokolliert werden, empfehlen wir Ihnen, diese Protokolle anzusehen, bevor Sie sie weitergeben.",
"preparingLogsTitle": "Vorbereiten der Protokolle...",
@@ -48,9 +65,9 @@
},
"copyEmailAction": "E-Mail kopieren",
"exportLogsAction": "Protokolle exportieren",
"reportABug": "Fehlermelden",
"reportABug": "Einen Fehler melden",
"crashAndErrorReporting": "Absturz- und Fehlerberichte",
"reportBug": "Fehlermelden",
"reportBug": "Fehler melden",
"emailUsMessage": "Bitte senden Sie uns eine E-Mail an {email}",
"@emailUsMessage": {
"placeholders": {
@@ -60,7 +77,7 @@
}
},
"contactSupport": "Support kontaktieren",
"rateUsOnStore": "Bewerte uns auf {storeName}",
"rateUsOnStore": "Bewerten Sie uns auf {storeName}",
"blog": "Blog",
"merchandise": "Merchandise",
"verifyPassword": "Passwort überprüfen",
@@ -73,7 +90,7 @@
"welcomeBack": "Willkommen zurück!",
"madeWithLoveAtPrefix": "gemacht mit ❤️ bei ",
"supportDevs": "Bei <bold-green>ente</bold-green> registrieren, um das Projekt zu unterstützen",
"supportDiscount": "Benutze den Rabattcode \"AUTH\" für 10% Rabatt im ersten Jahr",
"supportDiscount": "Benutzen Sie den Rabattcode \"AUTH\" für 10 % Rabatt im ersten Jahr",
"changeEmail": "E-Mail ändern",
"changePassword": "Passwort ändern",
"data": "Datei",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "E-Mail-Verifizierung",
"emailVerificationEnableWarning": "Stellen Sie sicher, eine Kopie Ihrer Zwei-Faktor-Authentifizierung an anderer Stelle zu speichern, um zu vermeiden, dass Sie sich versehentlich aus Ihrem Account aussperren.",
"authToChangeEmailVerificationSetting": "Bitte Authentifizieren um die E-Mail Bestätigung zu ändern",
"authenticateGeneric": "Bitte authentifizieren",
"authToViewYourRecoveryKey": "Bitte authentifizieren um ihren Wiederherstellungscode anzuzeigen",
"authToChangeYourEmail": "Bitte authentifizieren um ihre Emailadresse zu ändern",
"authToChangeYourPassword": "Bitte authentifizieren um ihr Passwort zu ändern",
@@ -123,21 +141,10 @@
"oops": "Hopla",
"suggestFeatures": "Features vorschlagen",
"faq": "FAQ",
"faq_q_1": "Wie sicher ist Auth?",
"faq_a_1": "Alle Codes, die du über Auth sicherst, werden Ende-zu-Ende-verschlüsselt gespeichert. Das bedeutet, dass nur du auf deine Codes zugreifen kannst. Unsere Anwendungen sind quelloffen und unsere Kryptografie wurde extern geprüft.",
"faq_q_2": "Kann ich auf meine Codes auf dem Desktop zugreifen?",
"faq_a_2": "Sie können auf Ihre Codes im Web via auth.ente.io zugreifen.",
"faq_q_3": "Wie kann ich Codes löschen?",
"faq_a_3": "Sie können einen Code löschen, indem Sie auf dem Code nach links wischen.",
"faq_q_4": "Wie kann ich das Projekt unterstützen?",
"faq_a_4": "Sie können die Entwicklung dieses Projekts unterstützen, indem Sie unsere Fotos-App auf ente.io abonnieren.",
"faq_q_5": "Wie kann ich die FaceID-Sperre in Auth aktivieren",
"faq_a_5": "Sie können FaceID unter Einstellungen → Sicherheit → Sperrbildschirm aktivieren.",
"somethingWentWrongMessage": "Ein Fehler ist aufgetreten, bitte versuchen Sie es erneut",
"leaveFamily": "Familie verlassen",
"leaveFamilyMessage": "Sind Sie sicher, dass Sie den Familien-Plan verlassen wollen?",
"inFamilyPlanMessage": "Sie haben einen Familien-Plan!",
"swipeHint": "Wischen Sie nach links, um Codes zu bearbeiten oder zu entfernen",
"scan": "Scannen",
"scanACode": "Scan einen Code",
"verify": "Überprüfen Sie",
@@ -164,7 +171,7 @@
"invalidEmailTitle": "Ungültige E-Mail Adresse",
"invalidEmailMessage": "Bitte geben Sie eine gültige E-Mail Adresse ein.",
"deleteAccount": "Konto löschen",
"deleteAccountQuery": "Es wird uns leid tun, Sie gehen zu sehen. Haben Sie ein Problem?",
"deleteAccountQuery": "Es tut uns leid, dass Sie gehen. Haben Sie ein Problem?",
"yesSendFeedbackAction": "Ja, Feedback senden",
"noDeleteAccountAction": "Nein, Konto löschen",
"initiateAccountDeleteTitle": "Bitte authentifizieren Sie sich, um die Kontolöschung einzuleiten",
@@ -193,6 +200,10 @@
"scanAQrCode": "QR-Code scannen",
"enterDetailsManually": "Details manuell hinzufügen",
"edit": "Editieren",
"share": "Teilen",
"shareCodes": "Codes teilen",
"shareCodesDuration": "Wählen Sie die Dauer aus, für die Sie die Codes teilen möchten.",
"restore": "Wiederherstellen",
"copiedToClipboard": "In die Zwischenablage kopieren",
"copiedNextToClipboard": "Nächster Code wurde in die Zwischenablage kopiert",
"error": "Fehler",
@@ -346,6 +357,7 @@
"sigInBackupReminder": "Bitte exportieren Sie Ihre Codes, um sicherzustellen, dass Sie ein Backup haben, aus dem Sie wiederherstellen können.",
"offlineModeWarning": "Sie haben sich dafür entschieden, ohne Sicherungen fortzufahren. Bitte führen Sie manuelle Sicherungen durch, um sicherzustellen, dass Ihre Codes sicher sind.",
"showLargeIcons": "Große Symbole anzeigen",
"compactMode": "Kompaktmodus",
"shouldHideCode": "Codes ausblenden",
"doubleTapToViewHiddenCode": "Sie können auf einen Eintrag doppelt tippen, um den Code anzuzeigen",
"focusOnSearchBar": "Suche bei App-Start automatisch öffnen",
@@ -466,5 +478,7 @@
"pinLock": "PIN-Sperre",
"enterPin": "PIN eingeben",
"setNewPin": "Neue PIN festlegen",
"importFailureDescNew": "Die ausgewählte Datei konnte nicht verarbeitet werden."
"importFailureDescNew": "Die ausgewählte Datei konnte nicht verarbeitet werden.",
"appLockNotEnabled": "App-Sperre nicht aktiviert",
"appLockNotEnabledDescription": "Bitte aktivieren Sie die App-Sperre über Security > App-Sperre"
}

View File

@@ -7,18 +7,32 @@
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Δημιουργήστε αντίγραφο ασφαλείας των 2FA κωδικών σας",
"onBoardingGetStarted": "Ας Αρχίσουμε",
"onBoardingGetStarted": "Ξεκινήστε",
"setupFirstAccount": "Ρυθμίστε τον πρώτο σας λογαριασμό",
"importScanQrCode": "Σαρώστε έναν κωδικό QR",
"qrCode": "Κωδικός QR",
"importEnterSetupKey": "Εισάγετε ένα κλειδί ρύθμισης",
"importAccountPageTitle": "Εισαγωγή στοιχείων λογαριασμού",
"secretCanNotBeEmpty": "Το μυστικό δεν μπορεί να είναι κενό",
"bothIssuerAndAccountCanNotBeEmpty": "Τόσο ο εκδότης όσο και ο λογαριασμός δεν μπορούν να είναι κενά",
"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": "Λογαριασμός (you@domain.com)",
"codeTagHint": "Ετικέτα",
"accountKeyType": "Τύπος κλειδιού",
@@ -27,17 +41,20 @@
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Παρακαλούμε συνδεθείτε ξανά",
"loggingOut": "Αποσύνδεση...",
"loggingOut": "Αποσύνδεση",
"timeBasedKeyType": "Βασισμένο σε χρόνο (TOTP)",
"counterBasedKeyType": "Με βάση μετρητή (HOTP)",
"saveAction": "Αποθήκευση",
"nextTotpTitle": "επόμενο",
"deleteCodeTitle": "Διαγραφή κωδικού;",
"deleteCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον κωδικό; Αυτή η ενέργεια είναι μη αναστρέψιμη.",
"deleteCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον κωδικό; Αυτή η ενέργεια δεν είναι αναστρέψιμη.",
"trashCode": "Διαγραφή κώδικα;",
"trashCodeMessage": "Είστε σίγουροι ότι θέλετε να διαγράψετε τον κώδικα για το {account} σας;",
"trash": "Διαγραφή",
"viewLogsAction": "Προβολή αρχείων καταγραφής",
"sendLogsDescription": "Αυτό θα στείλει σε μας όλα τα αρχεία καταγραφής για να μας βοηθήσει να αποσφαλματώσουμε το πρόβλημά σας. Ενώ λαμβάνουμε προφυλάξεις για να διασφαλίσουμε ότι οι ευαίσθητες πληροφορίες δεν καταγράφονται, σας ενθαρρύνουμε να δείτε αυτά τα αρχεία καταγραφής πριν τα μοιραστείτε.",
"preparingLogsTitle": "Προετοιμασία αρχείων καταγραφής...",
"emailLogsTitle": "Αρχεία καταγραφής ηλ. ταχυδρομείου",
"sendLogsDescription": "Αυτό θα στείλει αρχεία καταγραφής για να μας βοηθήσει να εντοπίσουμε το πρόβλημά σας. Παρόλο που λαμβάνουμε προφυλάξεις για να διασφαλίσουμε ότι δεν καταγράφονται ευαίσθητες πληροφορίες, σας ενθαρρύνουμε να δείτε αυτά τα αρχεία καταγραφής πριν τα μοιραστείτε.",
"preparingLogsTitle": "Προετοιμασία αρχείων καταγραφής",
"emailLogsTitle": "Αρχεία καταγραφής email",
"emailLogsMessage": "Παρακαλώ στείλτε τα αρχεία καταγραφής στο {email}",
"@emailLogsMessage": {
"placeholders": {
@@ -46,12 +63,12 @@
}
}
},
"copyEmailAction": "Αντιγραφή διεύθυνσης ηλ. ταχυδρομείου",
"copyEmailAction": "Αντιγραφή email",
"exportLogsAction": "Εξαγωγή αρχείων καταγραφής",
"reportABug": "Αναφορά Σφάλματος",
"crashAndErrorReporting": "Αναφορά κατάρρευσης & σφάλματος",
"reportBug": "Αναφορά σφάλματος",
"emailUsMessage": "Παρακαλώ στείλτε μας μήνυμα ηλ. ταχυδρομείου στο {email}",
"emailUsMessage": "Παρακαλούμε στείλτε μας email στο {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
@@ -61,20 +78,20 @@
},
"contactSupport": "Επικοινωνήστε με την υποστήριξη",
"rateUsOnStore": "Αξιολογήστε μας στο {storeName}",
"blog": "Ιστολόγιο",
"blog": "Blog",
"merchandise": "Προϊόντα",
"verifyPassword": "Επαλήθευση κωδικού πρόσβασης",
"pleaseWait": "Παρακαλώ περιμένετε...",
"generatingEncryptionKeysTitle": "Δημιουργία κλειδιών κρυπτογράφησης...",
"recreatePassword": "Επαναδημιουργία κωδικού πρόσβασης",
"recreatePasswordMessage": "Η τρέχουσα συσκευή δεν είναι αρκετά ισχυρή για να επαληθεύσει τον κωδικό πρόσβασής σας, οπότε πρέπει να τον επαναδημιουργήσουμε με τέτοιο τρόπο ώστε να λειτουργεί με όλες τις συσκευές. \n\nΠαρακαλούμε συνδεθείτε χρησιμοποιώντας το κλειδί ανάκτησης σας και επαναδημιουργήστε τον κωδικό πρόσβασής σας (μπορείτε να χρησιμοποιήσετε ξανά τον ίδιο αν το επιθυμείτε).",
"pleaseWait": "Παρακαλώ περιμένετε",
"generatingEncryptionKeysTitle": "Δημιουργία κλειδιών κρυπτογράφησης",
"recreatePassword": "Αναδημιουργία κωδικού πρόσβασης",
"recreatePasswordMessage": "Η τρέχουσα συσκευή δεν είναι αρκετά ισχυρή για την επαλήθευση του κωδικού πρόσβασής σας, οπότε πρέπει να τον δημιουργήσουμε ξανά μια φορά με έναν τρόπο που να λειτουργεί με όλες τις συσκευές.\n\nΠαρακαλούμε συνδεθείτε χρησιμοποιώντας το κλειδί ανάκτησης και δημιουργήστε ξανά τον κωδικό πρόσβασής σας (μπορείτε να χρησιμοποιήσετε ξανά τον ίδιο αν επιθυμείτε).",
"useRecoveryKey": "Χρήση κλειδιού ανάκτησης",
"incorrectPasswordTitle": "Λάθος κωδικός πρόσβασης",
"welcomeBack": "Καλωσορίσατε και πάλι!",
"madeWithLoveAtPrefix": "γίνεται με ❤️ στο ",
"madeWithLoveAtPrefix": "φτιαγμένη με ❤️ στο ",
"supportDevs": "Εγγραφείτε στο <bold-green>ente</bold-green> για να μας υποστηρίξετε",
"supportDiscount": "Χρησιμοποιήστε τον κωδικό κουπονιού \"AUTH\" για να πάρετε 10% από το πρώτο έτος",
"changeEmail": "Αλλαγή διεύθυνσης ηλ. ταχυδρομείου",
"changeEmail": "Αλλαγή email",
"changePassword": "Αλλαγή κωδικού πρόσβασής",
"data": "Δεδομένα",
"importCodes": "Εισαγωγή κωδικών",
@@ -97,11 +114,12 @@
"importInstruction": "Παρακαλώ επιλέξτε ένα αρχείο που περιέχει μια λίστα των κωδικών σας με τον ακόλουθο τύπο",
"importCodeDelimiterInfo": "Οι κωδικοί μπορούν να διαχωριστούν με κόμμα ή με μία νέα γραμμή",
"selectFile": "Επιλέξτε αρχείο",
"emailVerificationToggle": "Επαλήθευση διεύθυνσης ηλ. ταχυδρομείου",
"emailVerificationEnableWarning": "Για να αποφύγετε να κλειδωθείτε έξω από τον λογαριασμό σας, φροντίστε να αποθηκεύσετε ένα αντίγραφο του 2FA του ηλ. ταχυδρομείου σας έξω από το Ente Auth πριν ενεργοποιήσετε την επαλήθευση μέσω ηλ. ταχυδρομείου.",
"authToChangeEmailVerificationSetting": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε την επαλήθευση ηλ. ταχυδρομείου",
"emailVerificationToggle": "Επαλήθευση email",
"emailVerificationEnableWarning": "Για να αποφύγετε να κλειδωθείτε έξω από τον λογαριασμό σας, φροντίστε να αποθηκεύσετε ένα αντίγραφο του 2FA του email σας εκτός του Ente Auth πριν ενεργοποιήσετε την επαλήθευση email.",
"authToChangeEmailVerificationSetting": "Παρακαλούμε πιστοποιηθείτε για να αλλάξετε την επαλήθευση email",
"authenticateGeneric": "Παρακαλώ πιστοποιήστε την ταυτότητά σας",
"authToViewYourRecoveryKey": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να δείτε το κλειδί ανάκτησης",
"authToChangeYourEmail": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε τη διεύθυνση ηλ. ταχυδρομείου σας",
"authToChangeYourEmail": "Παρακαλώ πιστοποιηθείτε για να αλλάξετε το email σας",
"authToChangeYourPassword": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να αλλάξετε τον κωδικό πρόσβασής σας",
"authToViewSecrets": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να δείτε τα μυστικά σας",
"authToInitiateSignIn": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να ξεκινήσετε την είσοδο για δημιουργία αντιγράφου ασφαλείας.",
@@ -109,7 +127,7 @@
"cancel": "Ακύρωση",
"yes": "Ναι",
"no": "Όχι",
"email": "Διεύθυνση ηλ. ταχυδρομείου",
"email": "Email",
"support": "Υποστήριξη",
"general": "Γενικά",
"settings": "Ρυθμίσεις",
@@ -123,25 +141,16 @@
"oops": "Ουπς",
"suggestFeatures": "Προτείνετε λειτουργίες",
"faq": "Συχνές Ερωτήσεις",
"faq_q_1": "Πόσο ασφαλής είναι το Auth;",
"faq_a_1": "Όλοι οι κωδικοί που δημιουργείτε μέσω του Auth αποθηκεύονται κρυπτογραφημένοι από άκρο σε άκρο. Αυτό σημαίνει ότι μόνο εσείς μπορείτε να έχετε πρόσβαση στους κωδικούς σας. Οι εφαρμογές μας είναι ανοικτού κώδικα και η κρυπτογραφία μας έχει ελεγχθεί εξωτερικά.",
"faq_q_2": "Μπορώ να έχω πρόσβαση στους κωδικούς μου στον υπολογιστή;",
"faq_a_2": "Μπορείτε να αποκτήσετε πρόσβαση στους κωδικούς σας στο ίντερνετ @ auth.ente.io.",
"faq_q_3": "Πώς μπορώ να διαγράψω κωδικούς;",
"faq_a_3": "Μπορείτε να διαγράψετε έναν κωδικό σύροντας αριστερά σε αυτό το αντικείμενο.",
"faq_q_4": "Πώς μπορώ να υποστηρίξω αυτό το πρότζεκτ;",
"faq_a_4": "Μπορείτε να υποστηρίξετε την ανάπτυξη αυτού του πρότζεκτ με την εγγραφή σας στην εφαρμογή Photos @ ente.io.",
"faq_q_5": "Πώς μπορώ να ενεργοποιήσω το Κλείδωμα FaceID στο Auth",
"faq_a_5": "Μπορείτε να ενεργοποιήσετε το κλείδωμα FaceID στις Ρυθμίσεις → Ασφάλεια → Οθόνη κλειδώματος.",
"somethingWentWrongMessage": "Κάτι πήγε στραβά, παρακαλώ προσπαθήστε ξανά",
"leaveFamily": "Αποχώρηση από οικογένεια",
"leaveFamilyMessage": "Είστε σίγουροι ότι θέλετε να φύγετε από το οικογενειακό πρόγραμμα;",
"inFamilyPlanMessage": "Είστε σε οικογενειακό πρόγραμμα!",
"swipeHint": "Σύρετε αριστερά για επεξεργασία ή αφαίρεση κωδικών",
"hintForMobile": "Πατήστε παρατεταμένα σε έναν κωδικό για να τον τροποποιήσετε ή να τον διαγράψετε.",
"hintForDesktop": "Κάντε δεξί κλικ σε έναν κωδικό για να τον τροποποιήσετε ή να τον διαγράψετε.",
"scan": "Σάρωση",
"scanACode": "Σάρωση κωδικού",
"verify": "Επαλήθευση",
"verifyEmail": "Επιβεβαίωση διεύθυνσης ηλ. ταχυδρομείου",
"verifyEmail": "Επαλήθευση email",
"enterCodeHint": "Εισάγετε τον 6ψήφιο κωδικό από \nτην εφαρμογή αυθεντικοποίησης",
"lostDeviceTitle": "Χαμένη συσκευή;",
"twoFactorAuthTitle": "Αυθεντικοποίηση δύο παραγόντων",
@@ -150,7 +159,7 @@
"recoverAccount": "Ανάκτηση λογαριασμού",
"enterRecoveryKeyHint": "Εισάγετε το κλειδί ανάκτησης σας",
"recover": "Ανάκτηση",
"contactSupportViaEmailMessage": "Παρακαλώ αφήστε ένα μήνυμα ηλ. ταχυδρομείου στο {email} από την καταχωρημένη διεύθυνση σας",
"contactSupportViaEmailMessage": "Παρακαλούμε στείλτε ένα email στο {email} από την καταχωρημένη διεύθυνση email σας",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
@@ -160,15 +169,15 @@
},
"invalidQRCode": "Μη έγκυρος κωδικός QR",
"noRecoveryKeyTitle": "Χωρίς κλειδί ανάκτησης;",
"enterEmailHint": "Εισάγετε την διεύθυνση του ηλ. ταχυδρομείου σας",
"invalidEmailTitle": "Μη έγκυρη διεύθυνση ηλ. ταχυδρομείου",
"invalidEmailMessage": "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου.",
"enterEmailHint": "Εισάγετε τη διεύθυνση email σας",
"invalidEmailTitle": "Μη έγκυρη διεύθυνση email",
"invalidEmailMessage": "Παρακαλούμε εισάγετε μια έγκυρη διεύθυνση email.",
"deleteAccount": "Διαγραφή λογαριασμού",
"deleteAccountQuery": "Λυπόμαστε που σας βλέπουμε να φεύγετε. Αντιμετωπίζετε κάποιο πρόβλημα;",
"yesSendFeedbackAction": "Ναι, αποστολή σχολίων",
"noDeleteAccountAction": "Όχι, διαγραφή λογαριασμού",
"initiateAccountDeleteTitle": "Παρακαλώ πραγματοποιήστε έλεγχο ταυτότητας για να ξεκινήσετε τη διαγραφή λογαριασμού",
"sendEmail": "Αποστολή μηνύματος ηλ. ταχυδρομείου",
"sendEmail": "Αποστολή email",
"createNewAccount": "Δημιουργία νέου λογαριασμού",
"weakStrength": "Αδύναμος",
"strongStrength": "Δυνατός",
@@ -193,6 +202,10 @@
"scanAQrCode": "Σαρώστε έναν κωδικό QR",
"enterDetailsManually": "Χειροκίνητη εισαγωγή στοιχείων",
"edit": "Επεξεργασία",
"share": "Κοινοποίηση",
"shareCodes": "Κοινοποίηση κωδικών",
"shareCodesDuration": "Επιλέξτε τη διάρκεια για την οποία θέλετε να μοιραστείτε τους κωδικούς.",
"restore": "Επαναφορά",
"copiedToClipboard": "Αντιγράφηκε στο πρόχειρο",
"copiedNextToClipboard": "Αντιγράφηκε ο επόμενος κωδικός στο πρόχειρο",
"error": "Σφάλμα",
@@ -257,9 +270,9 @@
"recoveryKeyVerifyReason": "Το κλειδί ανάκτησης σας είναι ο μόνος τρόπος για να ανακτήσετε τις φωτογραφίες σας εάν ξεχάσετε τον κωδικό πρόσβασής σας. Μπορείτε να βρείτε το κλειδί ανάκτησης σας στις Ρυθμίσεις > Λογαριασμός.\n\nΠαρακαλώ εισάγετε το κλειδί ανάκτησης σας εδώ για να βεβαιωθείτε ότι το έχετε αποθηκεύσει σωστά.",
"confirmYourRecoveryKey": "Επιβεβαίωση κλειδιού ανάκτησης",
"confirm": "Επιβεβαίωση",
"emailYourLogs": "Στείλτε με μήνυμα ηλ. ταχυδομείου τα αρχεία καταγραφής σας",
"emailYourLogs": "Στείλτε με email τα αρχεία καταγραφής σας",
"pleaseSendTheLogsTo": "Παρακαλώ στείλτε τα αρχεία καταγραφής σας στο \n{toEmail}",
"copyEmailAddress": "Αντιγραφή διεύθυνσης ηλ. ταχυδρομείου",
"copyEmailAddress": "Αντιγραφή διεύθυνσης email",
"exportLogs": "Εξαγωγή αρχείων καταγραφής",
"enterYourRecoveryKey": "Εισάγετε το κλειδί ανάκτησης σας",
"tempErrorContactSupportIfPersists": "Φαίνεται ότι κάτι πήγε στραβά. Παρακαλώ προσπαθήστε ξανά μετά από κάποιο χρονικό διάστημα. Αν το σφάλμα παραμένει, παρακαλούμε επικοινωνήστε με την ομάδα υποστήριξης μας.",
@@ -302,7 +315,7 @@
"pendingSyncsWarningBody": "Δεν έχουν γίνει αντίγραφα ασφαλείας για μερικούς από τους κωδικούς σας.\n\nΠαρακαλώ βεβαιωθείτε ότι έχετε ένα αντίγραφο ασφαλείας για αυτούς τους κωδικούς πριν αποσυνδεθείτε.",
"checkInboxAndSpamFolder": "Παρακαλώ ελέγξτε τα εισερχόμενά σας (και τα ανεπιθύμητα) για να ολοκληρώσετε την επαλήθευση",
"tapToEnterCode": "Πατήστε για να εισάγετε τον κωδικό",
"resendEmail": "Επαναποστολή μηνύματος ηλ. ταχυδρομείου",
"resendEmail": "Επανάληψη αποστολής email",
"weHaveSendEmailTo": "Έχουμε στείλει ένα μήνυμα στο <green>{email}</green>",
"@weHaveSendEmailTo": {
"description": "Text to indicate that we have sent a mail to the user",
@@ -321,13 +334,13 @@
"terminateSession": "Τερματισμός συνεδρίας;",
"terminate": "Τερματισμός",
"thisDevice": "Αυτή η συσκευή",
"toResetVerifyEmail": "Για να επαναφέρετε τον κωδικό πρόσβασής σας, επαληθεύστε πρώτα την διευθυνση ηλ. ταχυδρομείου σας.",
"thisEmailIsAlreadyInUse": "Αυτός ο λογαριασμός ηλεκτρονικού ταχυδρομείου χρησιμοποιείται ήδη",
"toResetVerifyEmail": "Για να επαναφέρετε τον κωδικό πρόσβασής σας, επαληθεύστε πρώτα το email σας.",
"thisEmailIsAlreadyInUse": "Αυτό το email είναι ήδη σε χρήση",
"verificationFailedPleaseTryAgain": "Η επαλήθευση απέτυχε, παρακαλώ προσπαθήστε ξανά",
"yourVerificationCodeHasExpired": "Ο κωδικός επαλήθευσης σας έχει λήξει",
"incorrectCode": "Εσφαλμένος κωδικός",
"sorryTheCodeYouveEnteredIsIncorrect": "Λυπούμαστε, ο κωδικός που εισαγάγατε είναι εσφαλμένος",
"emailChangedTo": "Η διεύθυνση ηλ. ταχυδρομείου άλλαξε σε {newEmail}",
"emailChangedTo": "Το email άλλαξε σε {newEmail}",
"authenticationFailedPleaseTryAgain": "Αποτυχία ελέγχου ταυτότητας, παρακαλώ προσπαθήστε ξανά",
"authenticationSuccessful": "Επιτυχής έλεγχος ταυτότητας!",
"twofactorAuthenticationSuccessfullyReset": "Η αυθεντικοποίηση δύο παραγόντων επαναφέρθηκε επιτυχώς",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Παρακαλώ εξάγετε τους κωδικούς σας για να βεβαιωθείτε ότι έχετε ένα αντίγραφο ασφαλείας από το οποίο μπορείτε να επαναφέρετε.",
"offlineModeWarning": "Επιλέξατε να προχωρήσετε χωρίς αντίγραφα ασφαλείας. Παρακαλώ κάντε χειροκίνητα αντίγραφα ασφαλείας για να βεβαιωθείτε ότι οι κωδικοί σας είναι ασφαλείς.",
"showLargeIcons": "Εμφάνιση μεγάλων εικονιδίων",
"compactMode": "Συμπαγής λειτουργία",
"shouldHideCode": "Απόκρυψη κωδικών",
"doubleTapToViewHiddenCode": "Μπορείτε να πατήσετε δύο φορές σε μια καταχώρηση για να δείτε τον κωδικό",
"focusOnSearchBar": "Εστίαση στην αναζήτηση κατά την εκκίνηση εφαρμογής",
@@ -466,5 +480,8 @@
"pinLock": "Κλείδωμα καρφιτσωμάτων",
"enterPin": "Εισαγωγή PIN",
"setNewPin": "Ορίστε νέο PIN",
"importFailureDescNew": "Αδυναμία ανάλυσης του επιλεγμένου αρχείου."
"importFailureDescNew": "Αδυναμία ανάλυσης του επιλεγμένου αρχείου.",
"appLockNotEnabled": "Το κλείδωμα εφαρμογής δεν είναι ενεργοποιημένο",
"appLockNotEnabledDescription": "Παρακαλώ ενεργοποιήστε το κλείδωμα εφαρμογής μέσω της επιλογής Ασφάλεια > Κλείδωμα εφαρμογής",
"authToViewPasskey": "Παρακαλώ πιστοποιηθείτε για να δείτε το κλειδί πρόσβασης"
}

View File

@@ -19,6 +19,20 @@
"pleaseVerifyDetails": "Please verify the details and try again",
"codeIssuerHint": "Issuer",
"codeSecretKeyHint": "Secret Key",
"secret": "Secret",
"all": "All",
"notes": "Notes",
"notesLengthLimit": "Notes can be at most {count} characters long",
"@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": "Account (you@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Type of key",
@@ -34,6 +48,9 @@
"nextTotpTitle": "next",
"deleteCodeTitle": "Delete code?",
"deleteCodeMessage": "Are you sure you want to delete this code? This action is irreversible.",
"trashCode": "Trash code?",
"trashCodeMessage": "Are you sure you want to trash code for {account}?",
"trash": "Trash",
"viewLogsAction": "View logs",
"sendLogsDescription": "This will send across logs to help us debug your issue. While we take precautions to ensure that sensitive information is not logged, we encourage you to view these logs before sharing them.",
"preparingLogsTitle": "Preparing logs...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Email verification",
"emailVerificationEnableWarning": "To avoid getting locked out of your account, be sure to store a copy of your email 2FA outside of Ente Auth before enabling email verification.",
"authToChangeEmailVerificationSetting": "Please authenticate to change email verification",
"authenticateGeneric": "Please authenticate",
"authToViewYourRecoveryKey": "Please authenticate to view your recovery key",
"authToChangeYourEmail": "Please authenticate to change your email",
"authToChangeYourPassword": "Please authenticate to change your password",
@@ -123,21 +141,12 @@
"oops": "Oops",
"suggestFeatures": "Suggest features",
"faq": "FAQ",
"faq_q_1": "How secure is Auth?",
"faq_a_1": "All codes you backup via Auth is stored end-to-end encrypted. This means only you can access your codes. Our apps are open source and our cryptography has been externally audited.",
"faq_q_2": "Can I access my codes on desktop?",
"faq_a_2": "You can access your codes on the web @ auth.ente.io.",
"faq_q_3": "How can I delete codes?",
"faq_a_3": "You can delete a code by swiping left on that item.",
"faq_q_4": "How can I support this project?",
"faq_a_4": "You can support the development of this project by subscribing to our Photos app @ ente.io.",
"faq_q_5": "How can I enable FaceID lock in Auth",
"faq_a_5": "You can enable FaceID lock under Settings → Security → Lockscreen.",
"somethingWentWrongMessage": "Something went wrong, please try again",
"leaveFamily": "Leave family",
"leaveFamilyMessage": "Are you sure that you want to leave the family plan?",
"inFamilyPlanMessage": "You are on a family plan!",
"swipeHint": "Swipe left to edit or remove codes",
"hintForMobile": "Long press on a code to edit or remove.",
"hintForDesktop": "Right click on a code to edit or remove.",
"scan": "Scan",
"scanACode": "Scan a code",
"verify": "Verify",
@@ -193,6 +202,10 @@
"scanAQrCode": "Scan a QR code",
"enterDetailsManually": "Enter details manually",
"edit": "Edit",
"share": "Share",
"shareCodes": "Share codes",
"shareCodesDuration": "Select the duration for which you want to share codes.",
"restore": "Restore",
"copiedToClipboard": "Copied to clipboard",
"copiedNextToClipboard": "Copied next code to clipboard",
"error": "Error",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Please export your codes to ensure that you have a backup you can restore from.",
"offlineModeWarning": "You have chosen to proceed without backups. Please take manual backups to make sure your codes are safe.",
"showLargeIcons": "Show large icons",
"compactMode": "Compact mode",
"shouldHideCode": "Hide codes",
"doubleTapToViewHiddenCode": "You can double tap on an entry to view code",
"focusOnSearchBar": "Focus search on app start",
@@ -466,5 +480,9 @@
"pinLock": "Pin lock",
"enterPin": "Enter PIN",
"setNewPin": "Set new PIN",
"importFailureDescNew": "Could not parse the selected file."
"importFailureDescNew": "Could not parse the selected file.",
"appLockNotEnabled": "App lock not enabled",
"appLockNotEnabledDescription": "Please enable app lock from Security > App Lock",
"authToViewPasskey": "Please authenticate to view passkey",
"appLockOfflineModeWarning": "You have chosen to proceed without backups. If you forget your applock, you will be locked out from accessing your data."
}

View File

@@ -123,21 +123,10 @@
"oops": "Ups",
"suggestFeatures": "Sugerir funcionalidades",
"faq": "Preguntas Frecuentes",
"faq_q_1": "¿Qué tan seguro es Auth?",
"faq_a_1": "Todos los códigos que copia de seguridad vía Ente se almacenan cifrados de extremo a extremo. Esto significa que solo usted puede acceder a sus códigos. Nuestras aplicaciones son de código abierto y nuestra criptografía ha sido auditada externamente.",
"faq_q_2": "¿Puedo acceder a mis códigos en el escritorio?",
"faq_a_2": "Puede acceder a tus códigos en la web en auth.ente.io.",
"faq_q_3": "¿Cómo puedo borrar códigos?",
"faq_a_3": "Puede eliminar un código deslizando a la izquierda en ese elemento.",
"faq_q_4": "¿Cómo puedo apoyar este proyecto?",
"faq_a_4": "Puedes apoyar el desarrollo de este proyecto suscribiéndote a nuestra app de Fotos en ente.io.",
"faq_q_5": "Cómo puedo habilitar bloqueo FaceID en Ente Auth",
"faq_a_5": "Puede activar el bloqueo FaceID en Ajustes → Seguridad → Pantalla de bloqueo.",
"somethingWentWrongMessage": "Algo ha ido mal, por favor, prueba otra vez",
"leaveFamily": "Dejar plan familiar",
"leaveFamilyMessage": "¿Está seguro de que desea abandonar el plan familiar?",
"inFamilyPlanMessage": "¡Estás en un plan familiar!",
"swipeHint": "Deslice a la izquierda para editar o eliminar códigos",
"scan": "Escanear",
"scanACode": "Escanear un código",
"verify": "Verificar",

View File

@@ -1,5 +1,6 @@
{
"account": "حساب کاربری",
"unlock": "بازکردن",
"recoveryKey": "کلید بازیابی",
"counterAppBarTitle": "شمارنده",
"@counterAppBarTitle": {
@@ -9,11 +10,31 @@
"onBoardingGetStarted": "شروع کنید",
"setupFirstAccount": "اولین حساب خود را راه‌اندازی کنید",
"importScanQrCode": "اسکن کردن کد QR",
"qrCode": "بارکد",
"importEnterSetupKey": "وارد کردن کلید تنظیم",
"importAccountPageTitle": "ورود اطلاعات حساب",
"secretCanNotBeEmpty": "سکرت نمیتواند خالی باشد",
"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": "حساب (you@domain.com)",
"codeTagHint": "برچسب",
"accountKeyType": "نوع کلید",
"sessionExpired": "نشست منقضی شده است",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -26,6 +47,7 @@
"nextTotpTitle": "بعدی",
"deleteCodeTitle": "کد حذف شود؟",
"deleteCodeMessage": "آیا مطمئن هستید که می خواهید این کد را حذف کنید؟ این کار غیرقابل تغییر است.",
"trash": "زباله",
"viewLogsAction": "نمایش لاگ‌ها",
"sendLogsDescription": "این باعث ارسال لاگ‌ها می‌شود تا به ما در رفع مشکل شما کمک کند. هرچند ما اقداماتی را جهت جلوگیری از ثبت اطلاعات حساس در لاگ انجام می‌دهیم، اما به شما توصیه می‌کنیم قبل از اشتراک گذاری لاگ‌ها آن‌ها را مشاهده کنید.",
"preparingLogsTitle": "در حال آماده‌سازی لاگ‌ها...",
@@ -52,6 +74,8 @@
}
},
"contactSupport": "ارتباط با پشتیبانی",
"rateUsOnStore": "به ما در {storeName} امتیاز دهید",
"blog": "وبلاگ",
"verifyPassword": "تایید رمز عبور",
"pleaseWait": "لطفا صبر کنید...",
"generatingEncryptionKeysTitle": "در حال تولید کلید‌های رمزگذاری...",
@@ -67,10 +91,15 @@
"changePassword": "تغییر رمز عبور",
"data": "داده ها",
"importCodes": "ورود کدها",
"importTypePlainText": "متن ساده",
"importTypeEnteEncrypted": "Ente Encrypted export",
"importSelectJsonFile": "انتخاب کنید فایل JSON",
"exportCodes": "صدور کدها",
"importLabel": "وارد کردن",
"importInstruction": "لطفا یک فایل که حاوی لیستی از کدهای شما در قالب زیر است، انتخاب کنید",
"importCodeDelimiterInfo": "کدها می‌توانند با کاما یا یک خط جدید از یکدیگر جدا شوند",
"selectFile": "انتخاب فایل",
"emailVerificationToggle": "تائید ایمیل",
"authToViewYourRecoveryKey": "لطفا جهت نمایش کلید بازیابی خود، اعتبارسنجی کنید",
"authToChangeYourEmail": "لطفا جهت تغییر ایمیل خود، اعتبارسنجی کنید",
"authToChangeYourPassword": "لطفا جهت تغییر رمز عبور خود، اعتبارسنجی کنید",
@@ -80,25 +109,31 @@
"no": "خیر",
"email": "ایمیل",
"support": "پشتیبانی",
"general": "عمومی",
"settings": "تنظیمات",
"copied": "کپی شد",
"pleaseTryAgain": "لطفا دوباره تلاش کنید",
"existingUser": "کاربر موجود",
"newUser": "کاربر جدید Ente",
"delete": "حذف",
"enterYourPasswordHint": "رمز عبور خود را وارد کنید",
"forgotPassword": "فراموشی رمز عبور",
"oops": "اوه",
"suggestFeatures": "پیشنهاد قابلیت ها",
"faq": "سوالات متداول",
"somethingWentWrongMessage": "مشکلی پیش آمده است، لطفا دوباره تلاش کنید",
"leaveFamily": "خروج از طرح خانواده",
"leaveFamilyMessage": "آیا مطمئنید که میخواهید از طرح خانواده خارج شوید؟",
"inFamilyPlanMessage": "طرح خانواده برای شما فعال است!",
"swipeHint": "برای ویرایش یا حذف کدها به چپ بکشید",
"scan": "اسکن",
"scanACode": "یک کد را اسکن کنید",
"verify": "تایید",
"verifyEmail": "تایید ایمیل",
"enterCodeHint": "کد تایید ۶ رقمی را از برنامه\nاحراز هویت خود وارد کنید",
"lostDeviceTitle": "دستگاه را گم کرده‌اید؟",
"twoFactorAuthTitle": "احراز هویت دو مرحله‌ای",
"passkeyAuthTitle": "تایید کردن پسکی",
"verifyPasskey": "تایید پسکی",
"recoverAccount": "بازیابی حساب کاربری",
"enterRecoveryKeyHint": "کلید بازیابی خود را وارد کنید",
"recover": "بازیابی",
@@ -110,6 +145,7 @@
}
}
},
"invalidQRCode": "بارکد نامعتبر",
"noRecoveryKeyTitle": "کلید بازیابی ندارید؟",
"enterEmailHint": "آدرس ایمیل خود را وارد کنید",
"invalidEmailTitle": "آدرس ایمیل نامعتبر است",
@@ -143,6 +179,8 @@
"scanAQrCode": "اسکن کردن کد QR",
"enterDetailsManually": "ورود دستی جزئیات",
"edit": "ویرایش",
"share": "اشتراک‌گذاری",
"restore": "بازگرداندن",
"copiedToClipboard": "به حافظه موقت کپی شد",
"error": "خطا",
"recoveryKeyCopiedToClipboard": "کلید بازیابی به حافظه موقت کپی شد",
@@ -150,6 +188,9 @@
"recoveryKeySaveDescription": "ما این کلید را ذخیره نمی‌کنیم، لطفا این کلید ۲۴ کلمه‌ای را در مکانی امن ذخیره کنید.",
"doThisLater": "بعداً انجام شود",
"saveKey": "ذخیره کلید",
"save": "ذخیره",
"send": "ارسال",
"back": "بازگشت",
"createAccount": "ایجاد حساب کاربری",
"passwordStrength": "قدرت رمز عبور: {passwordStrengthValue}",
"@passwordStrength": {
@@ -168,8 +209,14 @@
"privacyPolicyTitle": "سیاست حفظ حریم خصوصی",
"termsOfServicesTitle": "شرایط و ضوابط",
"encryption": "رمزگذاری",
"setPasswordTitle": "تنظیم پسورد",
"changePasswordTitle": "تغییر رمز عبور",
"resetPasswordTitle": "بازنشانی رمز عبور",
"encryptionKeys": "کلیدهای رمزنگاری",
"passwordChangedSuccessfully": "رمز عبور با موفقیت تغییر کرد",
"continueLabel": "ادامه",
"insecureDevice": "دستگاه ناامن",
"howItWorks": "چگونه کار می‌کند",
"ackPasswordLostWarning": "می‌دانم که اگر رمز عبور خود را گم کنم، از آنجایی که اطلاعات من <underline>رمزگذاری سرتاسری</underline> شده است، ممکن است اطلاعاتم را از دست بدهم.",
"loginTerms": "با کلیک روی ورود، با <u-terms>شرایط استفاده از خدمات</u-terms> و <u-policy>سیاست حفظ حریم خصوصی</u-policy> موافقت می‌کنم",
"logInLabel": "ورود",
@@ -202,6 +249,11 @@
"privacy": "حریم خصوصی",
"terms": "شرایط و ضوابط",
"checkForUpdates": "بررسی بروزرسانی",
"checkStatus": "بررسی وضعیت",
"downloadUpdate": "دانلود",
"criticalUpdateAvailable": "به‌روزرسانی مهم در دسترس است",
"updateAvailable": "به‌رورزرسانی در دسترس است",
"update": "به‌روزرسانی",
"checking": "در حال بررسی...",
"youAreOnTheLatestVersion": "شما در حال اجرای آخرین نسخه هستید",
"warning": "اخطار",
@@ -226,7 +278,43 @@
"importFailureDesc": "نتوانستیم فایل انتخابی را تجزیه و تحلیل کنیم.\nاگر به کمک نیاز دارید، لطفا به support@ente.io ایمیل بزنید!",
"pendingSyncs": "اخطار",
"pendingSyncsWarningBody": "برخی از کدهای شما پشتیبان گیری نشده اند.\n\nلطفا قبل از خروج، مطمئن شوید که یک نسخه پشتیبان برای این کدها دارید.",
"checkInboxAndSpamFolder": "لطفا صندوق ورودی (و هرزنامه) خود را برای تایید کامل بررسی کنید",
"tapToEnterCode": "برای وارد کردن کد ضربه بزنید",
"resendEmail": "ارسال مجدد ایمیل",
"weHaveSendEmailTo": "ما یک ایمیل به <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": "نشست های فعال",
"terminate": "خروج",
"thisDevice": "این دستگاه",
"toResetVerifyEmail": "برای تنظیم مجدد رمز عبور، لطفا ابتدا ایمیل خود را تایید کنید.",
"thisEmailIsAlreadyInUse": "این ایمیل درحال استفاده است",
"verificationFailedPleaseTryAgain": "تایید ناموفق بود، لطفا مجددا تلاش کنید",
"yourVerificationCodeHasExpired": "کد تایید شما باطل شد",
"incorrectCode": "کد اشتباه",
"sorryTheCodeYouveEnteredIsIncorrect": "معظرت میخوام، کدی که شما وارد کردید اشتباه است",
"emailChangedTo": "ایمیل عوض شد به {newEmail}",
"authenticationFailedPleaseTryAgain": "احراز هویت ناموفق بود، لطفا دوباره تلاش کنید",
"enterPassword": "رمز عبور را وارد کنید",
"selectExportFormat": "انتخاب فرمت استخراج",
"encrypted": "رمزنگاری شده",
"plainText": "متن ساده",
"export": "صدور",
"useOffline": "استفاده بدون پشتیبان گیری",
"singIn": "ورود",
"showLargeIcons": "نشان دادن ایکون های بزرگ",
"compactMode": "حالت فشرده",
"shouldHideCode": "کد هارا مخفی کردن",
"doubleTapToViewHiddenCode": "شما میتونید با دوبار فشردن یه گزینه تا کد آنرا ببینید",
"focusOnSearchBar": "در زمان شروع برنامه، در حالت جستجو باش",
"editCodeAuthMessage": "احراز هویت برای ویرایش کد",
"deleteCodeAuthMessage": "احراز هویت برای حذف کد",
"showQRAuthMessage": "احراز هویت برای نمایش کد QR",

View File

@@ -97,16 +97,10 @@
"oops": "Hupsista",
"suggestFeatures": "Ehdota parannuksia",
"faq": "Usein kysyttyä",
"faq_q_1": "Kuinka turvallinen Auth on?",
"faq_q_3": "Kuinka voin poistaa koodeja?",
"faq_q_4": "Kuinka voin tukea tätä projektia?",
"faq_q_5": "Miten voin ottaa käyttöön FaceID-lukituksen Authissa",
"faq_a_5": "Voit ottaa FaceID-lukituksen käyttöön kohdassa Asetukset → Turvallisuus → Lukitusnäyttö.",
"somethingWentWrongMessage": "Jokin meni pieleen, yritä uudelleen",
"leaveFamily": "Poistu perheestä",
"leaveFamilyMessage": "Oletko varma että haluat jättää tämän perhemallin?",
"inFamilyPlanMessage": "Olet perhemallissa!",
"swipeHint": "Pyyhkäise vasemmalle muokataksesi tai poistaaksesi koodeja",
"scan": "Lue",
"scanACode": "Lue koodi",
"verify": "Vahvista",

View File

@@ -19,6 +19,19 @@
"pleaseVerifyDetails": "Veuillez vérifier vos informations et réessayez",
"codeIssuerHint": "Émetteur",
"codeSecretKeyHint": "Clé secrète",
"secret": "Confidentiel",
"notes": "Notes",
"notesLengthLimit": "Les notes peuvent contenir au maximum {count} caractères",
"@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 (nom@exemple.com)",
"codeTagHint": "Tag",
"accountKeyType": "Type de clé",
@@ -34,6 +47,9 @@
"nextTotpTitle": "suivant",
"deleteCodeTitle": "Supprimer le code ?",
"deleteCodeMessage": "Êtes-vous sûr de vouloir supprimer ce code ? Cette action est irréversible.",
"trashCode": "Supprimer le code?",
"trashCodeMessage": "Êtes-vous sûr de vouloir supprimer le code pour {account}?",
"trash": "Corbeille",
"viewLogsAction": "Afficher les journaux",
"sendLogsDescription": "Cela enverra des logs pour nous aider à déboguer votre problème. Bien que nous prenions des précautions pour nous assurer que les informations sensibles ne sont pas enregistrées, nous vous encourageons à consulter ces journaux avant de les partager.",
"preparingLogsTitle": "Préparation des journaux...",
@@ -100,6 +116,7 @@
"emailVerificationToggle": "Vérification de l'adresse e-mail",
"emailVerificationEnableWarning": "Si vous stockez le 2FA dans votre e-mail avec nous, l'activation de la vérification d'e-mail pourrait entraîner un blocage. Si vous êtes exclu d'un service, il se peut que vous ne puissiez pas vous connecter à l'autre.",
"authToChangeEmailVerificationSetting": "Veuillez vous authentifier pour modifier votre adresse e-mail",
"authenticateGeneric": "Veuillez vous authentifier",
"authToViewYourRecoveryKey": "Veuillez vous authentifier pour afficher votre clé de récupération",
"authToChangeYourEmail": "Veuillez vous authentifier pour modifier votre adresse e-mail",
"authToChangeYourPassword": "Veuillez vous authentifier pour modifier votre mot de passe",
@@ -123,21 +140,12 @@
"oops": "Oups",
"suggestFeatures": "Suggérer des fonctionnalités",
"faq": "FAQ",
"faq_q_1": "Quelle est la sécurité de Auth?",
"faq_a_1": "Tous les codes que vous sauvegardez via ente sont chiffrés de bout en bout. Cela signifie que vous seul pouvez accéder à vos codes. Nos applications sont open source et notre cryptographie ont fait l'objet d'un audit externe.",
"faq_q_2": "Puis-je accéder à mes codes sur mon ordinateur ?",
"faq_a_2": "Vous pouvez accéder à vos codes sur le web via auth.ente.io.",
"faq_q_3": "Comment puis-je supprimer des codes ?",
"faq_a_3": "Vous pouvez supprimer un code en glissant vers la gauche.",
"faq_q_4": "Comment puis-je soutenir le projet ?",
"faq_a_4": "Vous pouvez soutenir le développement de ce projet en vous abonnant à notre application Photos, ente.io.",
"faq_q_5": "Comment puis-je activer le verrouillage FaceID dans Auth",
"faq_a_5": "Vous pouvez activer le verrouillage FaceID dans Paramètres → Sécurité → Écran de verrouillage.",
"somethingWentWrongMessage": "Quelque chose s'est mal passé, veuillez recommencer",
"leaveFamily": "Quitter le plan familial",
"leaveFamilyMessage": "Êtes-vous sûr de vouloir quitter le plan familial ?",
"inFamilyPlanMessage": "Vous êtes sur un plan familial !",
"swipeHint": "Glisser vers la gauche pour modifier ou supprimer des codes",
"hintForMobile": "Appuyez longuement sur un code pour modifier ou supprimer.",
"hintForDesktop": "Clic droit sur un code à modifier ou à supprimer.",
"scan": "Analyser",
"scanACode": "Scanner un code",
"verify": "Vérifier",
@@ -193,6 +201,10 @@
"scanAQrCode": "Scanner un QR Code",
"enterDetailsManually": "Saisir les détails manuellement",
"edit": "Éditer",
"share": "Partager",
"shareCodes": "Partager les codes",
"shareCodesDuration": "Sélectionnez la durée pour laquelle vous souhaitez partager les codes.",
"restore": "Restaurer",
"copiedToClipboard": "Copié dans le presse-papiers",
"copiedNextToClipboard": "Code suivant copié dans le presse-papiers",
"error": "Erreur",
@@ -346,6 +358,7 @@
"sigInBackupReminder": "Veuillez exporter vos codes pour vous assurer que vous avez une sauvegarde à partir de laquelle vous pouvez restaurer.",
"offlineModeWarning": "Vous avez choisi de procéder sans sauvegarde. Veuillez prendre des sauvegardes manuelles pour vous assurer que vos codes sont sûrs.",
"showLargeIcons": "Afficher les grandes icônes",
"compactMode": "Mode compact",
"shouldHideCode": "Cacher les codes",
"doubleTapToViewHiddenCode": "Vous pouvez appuyer deux fois sur une entrée pour afficher le code",
"focusOnSearchBar": "Cibler le champ de recherche au démarrage de l'application",
@@ -464,5 +477,7 @@
"pinLock": "Verrouillage par code PIN",
"enterPin": "Saisir le code PIN",
"setNewPin": "Définir un nouveau code PIN",
"importFailureDescNew": "Impossible de lire le fichier sélectionné."
"importFailureDescNew": "Impossible de lire le fichier sélectionné.",
"authToViewPasskey": "Veuillez vous authentifier pour afficher la clé d'accès",
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données."
}

View File

@@ -113,20 +113,10 @@
"oops": "אופס",
"suggestFeatures": "הציעו מאפיינים",
"faq": "שאלות נפוצות",
"faq_q_1": "כמה מאובטח ente Auth?",
"faq_a_1": "כל הקודים שאתה מגבה דרך ente מאוחסנים מקצה לקצה בהצפנה. הכוונה שרק אתה יכול לגשת לקודים שלך. האפליקציות שלנו הם מפותחות דרך קוד פתוח והקריפטוגרפיה שלנו מבוקרת חיצונית.",
"faq_q_2": "האם ישנה אפשרות להשתמש בקודים שלי במחשב?",
"faq_a_2": "אתה יכול לגשת לקודים שלך ברשת ב- auth.ente.io.",
"faq_q_3": "איך אפשר למחוק קודים?",
"faq_a_3": "אתה יכול למחוק את הקוד על-ידי החלקה שמאלה על הפריט הזה.",
"faq_q_4": "איך אפשר לתמוך בפרויקט זה?",
"faq_a_4": "אתה יכול לתמוך בפיתוח של הפרויקט הזה על ידי שתירשם לאפליקצית תמונות שלנו ב-ente.io.",
"faq_a_5": "אתה יכול להפעיל מנעול FaceID תחת הגדרות -> אבטחה -> מסך נעילה.",
"somethingWentWrongMessage": "משהו השתבש, אנא נסה שנית",
"leaveFamily": "עזוב משפחה",
"leaveFamilyMessage": "האם אתה בטוח שאתה רוצה לעזוב את התוכנית המשפחתית?",
"inFamilyPlanMessage": "אתה על תוכנית משפחתית!",
"swipeHint": "החלק שמאלה כדי לערוך או להסיר קודים",
"scan": "סרוק",
"scanACode": "סרוק קוד",
"verify": "אמת",

View File

@@ -2,6 +2,10 @@
"account": "Akun",
"unlock": "Buka",
"recoveryKey": "Kunci pemulihan",
"counterAppBarTitle": "Penghitung",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Cadangkan kode 2FA kamu dengan aman",
"onBoardingGetStarted": "Mulai",
"setupFirstAccount": "Siapkan akun pertama kamu",
@@ -9,12 +13,29 @@
"qrCode": "Kode QR",
"importEnterSetupKey": "Masukkan kunci penyiapan",
"importAccountPageTitle": "Masukkan detail akun",
"secretCanNotBeEmpty": "Rahasia tidak boleh kosong",
"bothIssuerAndAccountCanNotBeEmpty": "Nama penerbit dan akun tidak boleh kosong",
"incorrectDetails": "Rincian salah",
"pleaseVerifyDetails": "Periksa kembali data kamu dan coba lagi",
"codeIssuerHint": "Penerbit",
"codeSecretKeyHint": "Kunci Rahasia",
"secret": "Rahasia",
"all": "Semua",
"notes": "Catatan",
"notesLengthLimit": "Catatan diperbolehkan sebanyak maksimal {count} karakter",
"@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": "Akun (kamu@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Tipe kunci",
"sessionExpired": "Sesi berakhir",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -26,16 +47,38 @@
"nextTotpTitle": "berikutnya",
"deleteCodeTitle": "Hapus kode?",
"deleteCodeMessage": "Apakah kamu yakin ingin menghapus kode ini? Tindakan ini tidak dapat dikembalikan ke semula.",
"trashCode": "Hapus kode?",
"trashCodeMessage": "Apakah anda yakin ingin menghapus kode untuk {account}?",
"trash": "Hapus",
"viewLogsAction": "Lihat log",
"sendLogsDescription": "Langkah ini akan mengirimkan log untuk membantu kami menganalisa masalah kamu. Meskipun kami melakukan tindakan pencegahan untuk memastikan bahwa informasi sensitif tidak dicatat, kami menganjurkan kamu untuk melihat log ini sebelum membagikannya.",
"preparingLogsTitle": "Menyiapkan log...",
"emailLogsTitle": "Log email",
"emailLogsMessage": "Harap kirim log ke {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Salin email",
"exportLogsAction": "Ekspor log",
"reportABug": "Laporkan bug",
"crashAndErrorReporting": "Pelaporan Error dan Crash",
"reportBug": "Laporkan bug",
"emailUsMessage": "Harap email kami di {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Hubungi dukungan",
"rateUsOnStore": "Nilai kami di {storeName}",
"blog": "Blog",
"merchandise": "Merchandise",
"verifyPassword": "Verifikasi sandi",
"pleaseWait": "Harap tunggu...",
"generatingEncryptionKeysTitle": "Membuat kunci enkripsi...",
@@ -52,11 +95,16 @@
"data": "Data",
"importCodes": "Impor kode",
"importTypePlainText": "Teks biasa",
"importTypeEnteEncrypted": "Eksport enkripsi ente",
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi ekspor",
"passwordEmptyError": "Kata sandi tidak boleh kosong",
"importFromApp": "Impor kode dari {appName}",
"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.",
"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.",
@@ -71,10 +119,6 @@
"enterYourPasswordHint": "Masukkan sandi kamu",
"suggestFeatures": "Sarankan fitur",
"faq": "Tanya Jawab Umum",
"faq_q_1": "Seberapa aman Auth itu?",
"faq_a_1": "Semua kode yang kamu cadangkan melalui Auth disimpan menggunakan enkripsi end-to-end. Jadi hanya kamu yang dapat mengaksesnya. Aplikasi kami bersifat open source dan kriptografi kami telah diaudit oleh eksternal.",
"faq_q_2": "Bisakah saya mengakses kode saya di desktop?",
"faq_a_2": "Kamu dapat mengakses kodenya melalui web auth.ente.io.",
"scan": "Pindai",
"scanACode": "Pindai kode",
"verify": "Verifikasi",

View File

@@ -19,6 +19,20 @@
"pleaseVerifyDetails": "Verifica i dettagli e riprova",
"codeIssuerHint": "Emittente",
"codeSecretKeyHint": "Codice segreto",
"secret": "Segreto",
"all": "Tutto",
"notes": "Note",
"notesLengthLimit": "Le note possono essere al massimo {count} caratteri",
"@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": "Account (username@dominio.it)",
"codeTagHint": "Tag",
"accountKeyType": "Tipo di chiave",
@@ -34,6 +48,9 @@
"nextTotpTitle": "successivo",
"deleteCodeTitle": "Eliminare il codice?",
"deleteCodeMessage": "Sei sicuro di voler rimuovere questo codice? L'azione è irreversibile.",
"trashCode": "Codice del cestino?",
"trashCodeMessage": "Sei sicuro di voler cestinare il codice per {account}?",
"trash": "Cestino",
"viewLogsAction": "Visualizza i log",
"sendLogsDescription": "Invierai i tuoi log per aiutarci a risolvere il tuo problema. Prendiamo precauzioni per garantire che le informazioni sensibili non siano registrate, tuttavia ti invitiamo a leggerli prima di condividerli con noi.",
"preparingLogsTitle": "Preparando i log...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Verifica email",
"emailVerificationEnableWarning": "Se memorizzate il 2FA per accedere alla vostra email con noi, l'attivazione della verifica dell'email potrebbe provocare dei problemi. Se siete rimasti bloccati fuori da un servizio, potreste non essere in grado di accedere anche all'altro.",
"authToChangeEmailVerificationSetting": "Autenticati per cambiare la verifica email",
"authenticateGeneric": "Si prega di autenticarsi",
"authToViewYourRecoveryKey": "Autenticati per visualizzare la tua chiave di recupero",
"authToChangeYourEmail": "Autenticati per cambiare la tua email",
"authToChangeYourPassword": "Autenticati per cambiare la tua password",
@@ -123,21 +141,12 @@
"oops": "Oops",
"suggestFeatures": "Suggerisci funzionalità",
"faq": "FAQ",
"faq_q_1": "Quanto è sicuro Auth?",
"faq_a_1": "Tutti i codici di cui fai il backup tramite Auth sono memorizzati con crittografia end-to-end. Ciò significa che solo tu puoi accedere ai tuoi codici. Le nostre app sono open source e la nostra crittografia è stata verificata esternamente.",
"faq_q_2": "Posso accedere ai miei codici sul desktop?",
"faq_a_2": "Puoi accedere ai tuoi codici sul web @ auth.ente.io.",
"faq_q_3": "Come posso cancellare i codici?",
"faq_a_3": "Puoi eliminare un codice scorrendo il dito a sinistra sul codice in questione.",
"faq_q_4": "Come posso supportare questo progetto?",
"faq_a_4": "Puoi supportare lo sviluppo di questo progetto abbonandoti alla nostra app Photos @ ente.io.",
"faq_q_5": "Come posso abilitare il blocco FaceID in Auth",
"faq_a_5": "Puoi abilitare il blocco FaceID in Impostazioni → Sicurezza → Schermata di blocco.",
"somethingWentWrongMessage": "Qualcosa è andato storto, per favore riprova",
"leaveFamily": "Abbandona il piano famiglia",
"leaveFamilyMessage": "Sei sicuro di voler uscire dal piano famiglia?",
"inFamilyPlanMessage": "Sei un utente con piano famiglia!",
"swipeHint": "Scorri a sinistra per modificare o rimuovere i codici",
"hintForMobile": "Premi a lungo su un codice per modificare o rimuovere.",
"hintForDesktop": "Fare clic con il tasto destro su un codice per modificare o rimuovere.",
"scan": "Scansiona",
"scanACode": "Scansiona un codice",
"verify": "Verifica",
@@ -193,6 +202,10 @@
"scanAQrCode": "Scansiona un codice QR",
"enterDetailsManually": "Inserisci i dettagli manualmente",
"edit": "Modifica",
"share": "Condividi",
"shareCodes": "Condividi codice",
"shareCodesDuration": "Seleziona la durata per la quale vuoi condividere i codici.",
"restore": "Ripristina",
"copiedToClipboard": "Copiato negli appunti",
"copiedNextToClipboard": "Copiato il codice successivo negli appunti",
"error": "Errore",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Si prega di esportare i codici per assicurarsi di avere un backup da cui è possibile ripristinare.",
"offlineModeWarning": "Hai scelto di procedere senza backup. Si prega di eseguire backup manuali per assicurarsi che i codici siano al sicuro.",
"showLargeIcons": "Mostra icone grandi",
"compactMode": "Modalità compatta",
"shouldHideCode": "Nascondi i codici",
"doubleTapToViewHiddenCode": "Puoi toccare due volte una voce per visualizzare il codice",
"focusOnSearchBar": "Apri ricerca all'avvio dell'app",
@@ -466,5 +480,9 @@
"pinLock": "Blocco con PIN",
"enterPin": "Inserisci PIN",
"setNewPin": "Imposta un nuovo PIN",
"importFailureDescNew": "Impossibile elaborare il file selezionato."
"importFailureDescNew": "Impossibile elaborare il file selezionato.",
"appLockNotEnabled": "Blocco app non abilitato",
"appLockNotEnabledDescription": "Si prega di abilitare il blocco dell'app da Sicurezza > Blocco App",
"authToViewPasskey": "Autenticati per visualizzare le tue passkey",
"appLockOfflineModeWarning": "Hai scelto di procedere senza backup. Se dimentichi il tuo codice di blocco dell'app, non potrai più accedere ai tuoi dati."
}

View File

@@ -19,6 +19,20 @@
"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": "アカウント (you@domain.com)",
"codeTagHint": "タグ",
"accountKeyType": "鍵の種類",
@@ -34,6 +48,9 @@
"nextTotpTitle": "次のコード",
"deleteCodeTitle": "コードを削除しますか?",
"deleteCodeMessage": "本当にこのコードを削除してもよろしいですか?この決定は元に戻せません。",
"trashCode": "コードを削除しますか?",
"trashCodeMessage": "{account} のコードをゴミ箱に入れてもよろしいですか?",
"trash": "ゴミ箱",
"viewLogsAction": "ログの表示",
"sendLogsDescription": "問題のデバッグに役立つログが送信されます。機密情報が記録されないように予防措置を講じていますが、共有する前にこれらのログを確認することをお勧めします。",
"preparingLogsTitle": "ログを準備中...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "メール認証",
"emailVerificationEnableWarning": "アカウントから閉め出されるのを防ぐために、メール認証を有効にする前にメール 2FA のコピーが ente Auth 外に保管されていることを確認してください。",
"authToChangeEmailVerificationSetting": "メール認証を変更するためには認証が必要です",
"authenticateGeneric": "認証してください",
"authToViewYourRecoveryKey": "回復キーを表示するためには認証が必要です",
"authToChangeYourEmail": "メールアドレスを変更するためには認証が必要です",
"authToChangeYourPassword": "パスワードを変更するためには認証が必要です",
@@ -123,21 +141,12 @@
"oops": "おっと",
"suggestFeatures": "機能を提案",
"faq": "FAQ",
"faq_q_1": "Authはどのくらい安全ですか",
"faq_a_1": "Ente Authでバックアップされたコードはすべてエンドツーエンドで暗号化されて保存されます。つまり、コードにアクセスできるのはあなただけです。当社のアプリはオープンソースであり、暗号化技術は外部監査を受けています。",
"faq_q_2": "パソコンから私のコードにアクセスできますか?",
"faq_a_2": "auth.ente.io で Web からコードにアクセス可能です。",
"faq_q_3": "コードを削除するにはどうすればいいですか?",
"faq_a_3": "その項目を左にスワイプすることでコードを削除できます。",
"faq_q_4": "このプロジェクトを支援するにはどうすればいいですか?",
"faq_a_4": "ente.io で私たちの写真アプリを購読することでこのプロジェクトの開発を支援できます。",
"faq_q_5": "AuthでFaceIDロックを有効にするにはどうすればいいですか",
"faq_a_5": "設定→セキュリティ→画面のロックから FaceID ロックを有効にできます。",
"somethingWentWrongMessage": "問題が発生しました、再試行してください",
"leaveFamily": "ファミリープランから退会",
"leaveFamilyMessage": "本当にファミリープランを退会しますか?",
"inFamilyPlanMessage": "ファミリープランに入会しています!",
"swipeHint": "左にスワイプしてコードを編集、削除します",
"hintForMobile": "コードを長押しすると、編集または削除できます",
"hintForDesktop": "コードを右クリックすると、編集または削除できます。",
"scan": "読み取り",
"scanACode": "コードを読み取り",
"verify": "認証",
@@ -193,6 +202,10 @@
"scanAQrCode": "QRコードを読み取り",
"enterDetailsManually": "手動で詳細を入力する",
"edit": "編集",
"share": "共有",
"shareCodes": "コードを共有",
"shareCodesDuration": "コードを共有したい期間を選択してください。",
"restore": "復元",
"copiedToClipboard": "クリップボードにコピーしました",
"copiedNextToClipboard": "次のコードをクリップボードにコピーしました",
"error": "エラー",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "コードをエクスポートして、復元するためのバックアップがあることを確認してください。",
"offlineModeWarning": "あなたはバックアップなしに続行することを選択しました。コードを安全に保つために手動でのバックアップを行ってください。",
"showLargeIcons": "大きなアイコンを表示",
"compactMode": "コンパクトモード",
"shouldHideCode": "コードを隠す",
"doubleTapToViewHiddenCode": "項目をダブルタップしてコードを閲覧できます",
"focusOnSearchBar": "アプリの起動時、検索欄にフォーカスする",
@@ -466,5 +480,9 @@
"pinLock": "PIN",
"enterPin": "PINを入力してください",
"setNewPin": "新しいPINを設定",
"importFailureDescNew": "選択されたファイルを解析できませんでした。"
"importFailureDescNew": "選択されたファイルを解析できませんでした。",
"appLockNotEnabled": "アプリロックが有効になっていません",
"appLockNotEnabledDescription": "セキュリティ > アプリロック からアプリロックを有効化してください",
"authToViewPasskey": "パスキーを見るには認証してください",
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。"
}

View File

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

View File

@@ -123,21 +123,10 @@
"oops": "Oeps",
"suggestFeatures": "Features voorstellen",
"faq": "Veelgestelde vragen",
"faq_q_1": "Hoe veilig is Ente Auth?",
"faq_a_1": "Alle codes in Auth zijn versleuteld opgeslagen met end-to-end encryptie. Dit betekent dat alleen jij toegang hebt tot je codes. Onze apps zijn open source en onze cryptografie is extern gecontroleerd.",
"faq_q_2": "Kan ik toegang krijgen tot mijn codes op desktop?",
"faq_a_2": "U heeft toegang tot uw codes op het web @ auth.ente.io.",
"faq_q_3": "Hoe kan ik codes verwijderen?",
"faq_a_3": "Je kunt een code verwijderen door naar links te vegen op dat item.",
"faq_q_4": "Hoe kan ik dit project steunen?",
"faq_a_4": "U kunt de ontwikkeling van dit project steunen door u te abonneren op onze Photos app @ ente.io.",
"faq_q_5": "Hoe kan ik FaceID lock inschakelen in ente Auth",
"faq_a_5": "Je kunt FaceID vergrendelen onder Instellingen → Beveiliging → Lockscreen.",
"somethingWentWrongMessage": "Er is iets fout gegaan, probeer het opnieuw",
"leaveFamily": "Familie verlaten",
"leaveFamilyMessage": "Weet je zeker dat je het familie-plan wil verlaten?",
"inFamilyPlanMessage": "Je hebt een familie-plan!",
"swipeHint": "Veeg naar links om codes te bewerken of te verwijderen",
"scan": "Scannen",
"scanACode": "Scan een code",
"verify": "Verifiëren",

View File

@@ -18,7 +18,21 @@
"incorrectDetails": "Nieprawidłowe szczegóły",
"pleaseVerifyDetails": "Prosimy zweryfikować szczegóły i spróbować ponownie",
"codeIssuerHint": "Wydawca",
"codeSecretKeyHint": "Tajny Klucz",
"codeSecretKeyHint": "Tajny klucz",
"secret": "Sekret",
"all": "Wszystko",
"notes": "Notatki",
"notesLengthLimit": "Notatki mogą mieć maksymalnie {count} znaków",
"@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": "Konto (ty@domena.com)",
"codeTagHint": "Oznacz",
"accountKeyType": "Rodzaj klucza",
@@ -34,6 +48,9 @@
"nextTotpTitle": "dalej",
"deleteCodeTitle": "Usunąć kod?",
"deleteCodeMessage": "Czy na pewno chcesz usunąć ten kod? Ta akcja jest nieodwracalna.",
"trashCode": "Przenieść kod do kosza?",
"trashCodeMessage": "Czy na pewno chcesz przenieść do kosza kod dla {account}?",
"trash": "Kosz",
"viewLogsAction": "Wyświetl logi",
"sendLogsDescription": "Spowoduje to przesłanie logów, które pomogą nam rozwiązać Twój problem. Chociaż podejmujemy środki ostrożności, aby zapewnić, że wrażliwe informacje nie są rejestrowane, zachęcamy do obejrzenia tych dzienników przed ich udostępnieniem.",
"preparingLogsTitle": "Przygotowywanie logów...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Weryfikacja e-mail",
"emailVerificationEnableWarning": "Aby uniknąć zablokowania się z konta, upewnij się, że przed włączeniem weryfikacji e-mail przechowujesz kopię 2FA dla swojego adresu e-mail poza Ente Auth.",
"authToChangeEmailVerificationSetting": "Prosimy uwierzytelnić się, aby zmienić weryfikację e-mail",
"authenticateGeneric": "Prosimy się uwierzytelnić",
"authToViewYourRecoveryKey": "Prosimy uwierzytelnić się, aby wyświetlić swój klucz odzyskiwania",
"authToChangeYourEmail": "Prosimy uwierzytelnić się, aby zmienić swój adres e-mail",
"authToChangeYourPassword": "Prosimy uwierzytelnić się, aby zmienić hasło",
@@ -115,7 +133,7 @@
"settings": "Ustawienia",
"copied": "Skopiowano",
"pleaseTryAgain": "Prosimy spróbować ponownie",
"existingUser": "Istniejący Użytkownik",
"existingUser": "Istniejący użytkownik",
"newUser": "Nowy/a do Ente",
"delete": "Usuń",
"enterYourPasswordHint": "Wprowadź swoje hasło",
@@ -123,21 +141,12 @@
"oops": "Ups",
"suggestFeatures": "Zaproponuj funkcje",
"faq": "Najczęściej zadawane pytania (FAQ)",
"faq_q_1": "Jak bezpieczny jest Auth?",
"faq_a_1": "Wszystkie kody, których tworzysz kopię zapasową za pomocą Ente są przechowywane zaszyfrowane end-to-end. Oznacza to, że tylko Ty możesz uzyskać dostęp do swoich kodów. Nasze aplikacje są otwarto-źródłowe, a nasza kryptografia została poddana zewnętrznemu audytowi.",
"faq_q_2": "Czy mogę uzyskać dostęp do moich kodów na komputerze?",
"faq_a_2": "Możesz uzyskać dostęp do swoich kodów na stronie auth.ente.io.",
"faq_q_3": "Jak mogę usunąć kody?",
"faq_a_3": "Możesz usunąć kod, przesuwając go w lewo.",
"faq_q_4": "Jak mogę wesprzeć ten projekt?",
"faq_a_4": "Możesz wspierać rozwój tego projektu, subskrybując do naszej aplikacji Zdjęcia na ente.io.",
"faq_q_5": "Jak mogę włączyć blokadę FaceID w Ente Auth",
"faq_a_5": "Możesz włączyć blokadę FaceID w Ustawienia → Bezpieczeństwo→ Ekran blokady.",
"somethingWentWrongMessage": "Coś poszło nie tak, prosimy spróbować ponownie",
"leaveFamily": "Opuść rodzinę",
"leaveFamilyMessage": "Czy jesteś pewien/pewna, że chcesz opuścić plan rodzinny?",
"inFamilyPlanMessage": "Jesteś w planie rodzinnym!",
"swipeHint": "Przesuń palcem w lewo, aby edytować lub usunąć kody",
"hintForMobile": "Przytrzymaj kod, aby edytować lub usunąć.",
"hintForDesktop": "Kliknij prawym przyciskiem myszy na kod, aby edytować lub usunąć.",
"scan": "Skanuj",
"scanACode": "Skanuj kod",
"verify": "Zweryfikuj",
@@ -193,6 +202,10 @@
"scanAQrCode": "Zeskanuj kod QR",
"enterDetailsManually": "Wprowadź dane ręcznie",
"edit": "Edytuj",
"share": "Udostępnij",
"shareCodes": "Udostępnij kody",
"shareCodesDuration": "Wybierz okres, przez który chcesz udostępniać kody.",
"restore": "Przywróć",
"copiedToClipboard": "Skopiowano do schowka",
"copiedNextToClipboard": "Skopiowano następny kod do schowka",
"error": "Błąd",
@@ -221,7 +234,7 @@
},
"password": "Hasło",
"signUpTerms": "Akceptuję <u-terms>warunki korzystania z usługi</u-terms> i <u-policy>politykę prywatności</u-policy>",
"privacyPolicyTitle": "Polityka Prywatności",
"privacyPolicyTitle": "Polityka prywatności",
"termsOfServicesTitle": "Regulamin",
"encryption": "Szyfrowanie",
"setPasswordTitle": "Ustaw hasło",
@@ -270,7 +283,7 @@
"weAreOpenSource": "Posiadamy otwarte źródło!",
"privacy": "Prywatność",
"terms": "Warunki",
"checkForUpdates": "Sprawdź czy są dostępne nowe aktualizacje",
"checkForUpdates": "Sprawdź, czy są dostępne nowe aktualizacje",
"checkStatus": "Sprawdź stan",
"downloadUpdate": "Pobierz",
"criticalUpdateAvailable": "Dostępna jest krytyczna aktualizacja",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Prosimy wyeksportować swoje kody, aby upewnić się, że masz kopię zapasową, z której możesz przywrócić swoje kody.",
"offlineModeWarning": "Zdecydowano się kontynuować bez kopii zapasowych. Prosimy wykonywać ręczne kopie zapasowe, aby upewnić się, że Twoje kody są bezpieczne.",
"showLargeIcons": "Pokaż duże ikony",
"compactMode": "Tryb kompaktowy",
"shouldHideCode": "Ukryj kody",
"doubleTapToViewHiddenCode": "Możesz kliknąć dwukrotnie na wpis, aby wyświetlić kod",
"focusOnSearchBar": "Uaktywnij wyszukiwanie przy uruchamianiu aplikacji",
@@ -435,10 +449,10 @@
"pinnedCodeMessage": "Przypięto {code}",
"unpinnedCodeMessage": "Odpięto {code}",
"tags": "Etykiety",
"createNewTag": "Utwórz Nową Etykietę",
"createNewTag": "Utwórz nową etykietę",
"tag": "Etykieta",
"create": "Utwórz",
"editTag": "Edytuj Etykietę",
"editTag": "Edytuj etykietę",
"deleteTagTitle": "Usunąć etykietę?",
"deleteTagMessage": "Czy na pewno chcesz usunąć tę etykietę? Ta akcja jest nieodwracalna.",
"somethingWentWrongParsingCode": "Nie udało się przetworzyć {x} kodów.",
@@ -446,7 +460,7 @@
"viewRawCodes": "Zobacz surowe kody",
"rawCodes": "Surowe kody",
"rawCodeData": "Dane surowego kodu",
"appLock": "Blokada dostępu do aplikacji",
"appLock": "Blokada aplikacji",
"noSystemLockFound": "Nie znaleziono blokady systemowej",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Aby włączyć blokadę aplikacji, należy skonfigurować hasło urządzenia lub blokadę ekranu w ustawieniach systemu.",
"autoLock": "Automatyczna blokada",
@@ -466,5 +480,9 @@
"pinLock": "Blokada PIN",
"enterPin": "Wprowadź kod PIN",
"setNewPin": "Ustaw nowy kod PIN",
"importFailureDescNew": "Nie udało się przetworzyć wybranego pliku."
"importFailureDescNew": "Nie udało się przetworzyć wybranego pliku.",
"appLockNotEnabled": "Blokada aplikacji nie jest włączona",
"appLockNotEnabledDescription": "Prosimy włączyć blokadę aplikacji z Zabezpieczenia > Blokada aplikacji",
"authToViewPasskey": "Prosimy uwierzytelnić się, aby wyświetlić klucz dostępu",
"appLockOfflineModeWarning": "Wybrano kontynuowanie bez kopii zapasowych. Jeśli zapomnisz blokady aplikacji, utracisz dostęp do swoich danych."
}

View File

@@ -6,20 +6,34 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Proteja os seus códigos 2FA",
"onBoardingBody": "Copie com segurança seus códigos 2FA",
"onBoardingGetStarted": "Introdução",
"setupFirstAccount": "Configure sua primeira conta",
"importScanQrCode": "Escanear QR code",
"qrCode": "QR Code",
"importEnterSetupKey": "Insira uma chave de configuração",
"importAccountPageTitle": "Inserir dados da conta",
"secretCanNotBeEmpty": "A chave secreta não pode ser vazia",
"importAccountPageTitle": "Inserir detalhes da conta",
"secretCanNotBeEmpty": "A chave secreta não pode estar vazia",
"bothIssuerAndAccountCanNotBeEmpty": "O emissor e a conta não podem estar vazios",
"incorrectDetails": "Detalhes incorretos",
"pleaseVerifyDetails": "Por favor, verifique os detalhes e tente novamente",
"pleaseVerifyDetails": "Verifique os detalhes e tente novamente",
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Chave secreta",
"codeAccountHint": "Conta (você@domínio.com)",
"secret": "Segredo",
"all": "Todos",
"notes": "Notas",
"notesLengthLimit": "Notas tem um limite de até {count} caracteres",
"@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": "Conta (voce@dominio.com)",
"codeTagHint": "Etiqueta",
"accountKeyType": "Tipo de chave",
"sessionExpired": "Sessão expirada",
@@ -29,16 +43,19 @@
"pleaseLoginAgain": "Entre novamente",
"loggingOut": "Saindo...",
"timeBasedKeyType": "Baseado no horário (TOTP)",
"counterBasedKeyType": "Baseado num contador (HOTP)",
"counterBasedKeyType": "Baseado no contador (HOTP)",
"saveAction": "Salvar",
"nextTotpTitle": "avançar",
"deleteCodeTitle": "Apagar código?",
"deleteCodeTitle": "Excluir código?",
"deleteCodeMessage": "Deseja mesmo excluir este código? Esta ação é irreversível.",
"viewLogsAction": "Ver logs",
"sendLogsDescription": "Isto compartilhará seus dados para nos ajudarmos a resolver seu problema. Enquanto tomamos precauções para ter certeza que as informações sensíveis não estejam registradas, nós encorajamos você a visualizar esses dados antes de compartilhá-los.",
"preparingLogsTitle": "Preparando logs...",
"emailLogsTitle": "Logs (e-mail)",
"emailLogsMessage": "Envie os logs para {email}",
"trashCode": "Excluir código?",
"trashCodeMessage": "Você tem certeza de que quer excluir o código para {account}?",
"trash": "Excluir",
"viewLogsAction": "Ver registros",
"sendLogsDescription": "Isso compartilhará seus dados para lhe ajudarmos a resolver seu problema. Enquanto tomamos precauções para ter certeza que as informações sensíveis não estejam registradas, nós encorajamos você a visualizar esses dados antes de compartilhá-los.",
"preparingLogsTitle": "Preparando registros...",
"emailLogsTitle": "Registros (e-mail)",
"emailLogsMessage": "Envie os registros para {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
@@ -47,9 +64,9 @@
}
},
"copyEmailAction": "Copiar e-mail",
"exportLogsAction": "Exportar logs",
"exportLogsAction": "Exportar registros",
"reportABug": "Informe um erro",
"crashAndErrorReporting": "Relatórios de erros",
"crashAndErrorReporting": "Relatórios de erros e falhas",
"reportBug": "Informar erro",
"emailUsMessage": "Envie um e-mail para {email}",
"@emailUsMessage": {
@@ -59,8 +76,8 @@
}
}
},
"contactSupport": "Falar com o Suporte",
"rateUsOnStore": "Avalie-nos na {storeName}",
"contactSupport": "Contatar suporte",
"rateUsOnStore": "Avalies na {storeName}",
"blog": "Blog",
"merchandise": "Produtos",
"verifyPassword": "Verificar senha",
@@ -79,32 +96,33 @@
"data": "Dados",
"importCodes": "Importar códigos",
"importTypePlainText": "Texto simples",
"importTypeEnteEncrypted": "Exportação do Ente criptografada",
"importTypeEnteEncrypted": "Exportação criptografada do Ente",
"passwordForDecryptingExport": "Senha para descriptografar a exportação",
"passwordEmptyError": "A senha não pode estar vazia",
"importFromApp": "Importar códigos do {appName}",
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir contas\". Então, usando outro dispositivo, escaneie o QR code.\n\nDica: você pode usar a câmera do notebook para fotografar o QR code.",
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir Contas\". Então, usando outro dispositivo, escaneie o código.\n\nDica: Você pode usar a câmera do seu notebook para fotografar o QR code.",
"importSelectJsonFile": "Selecionar arquivo JSON",
"importSelectAppExport": "Selecione o arquivo de exportação do aplicativo {appName}",
"importEnteEncGuide": "Selecione o arquivo JSON criptografado exportado do Ente",
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo Zip\" nas configurações do Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
"importBitwardenGuide": "Use a opção \"Exportar cofre\" nas configurações do Bitwarden e importe o arquivo JSON não criptografado.",
"importAegisGuide": "Use a opção \"Exportar cofre\" nas Configurações do Aegis.\n\nSe o seu cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
"import2FasGuide": "Use a opção \"Configurações->Exportar cópia de segurança\" no aplicativo 2FAS.\n\nSe a cópia de segurança estiver criptografada, será necessário inserir a senha para descriptografá-la",
"importLastpassGuide": "Use a opção \"Transferir contas\" nas configurações do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo zip\" nas opções de Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
"importBitwardenGuide": "Use a opção \"Exportar cofre\" nas ferramentas do Bitwarden e importe o arquivo JSON não criptografado.",
"importAegisGuide": "Use a opção \"Exportar cofre\" nas opções de Aegis\n\nSe o cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
"import2FasGuide": "Use a opção \"Opções-> Exportar cópia de segurança\" em 2FAS.\n\nSe a cópia de segurança estiver criptografada, você precisará inserir a senha para descriptografá-la",
"importLastpassGuide": "Use a opção \"Transferir contas\" nas opções do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
"exportCodes": "Exportar códigos",
"importLabel": "Importar",
"importInstruction": "Por favor, selecione um arquivo que contenha uma lista de códigos no seguinte formato",
"importInstruction": "Selecione um arquivo que contenha uma lista de códigos no formato a seguir",
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
"selectFile": "Selecionar arquivo",
"emailVerificationToggle": "Verificação por e-mail",
"emailVerificationEnableWarning": "Para evitar ficar bloqueado do acesso a sua conta, certifique-se de armazenar uma cópia do código 2FA do seu e-mail fora do Ente Auth antes de habilitar a verificação por e-mail.",
"authToChangeEmailVerificationSetting": "Por favor, autentique-se para alterar a verificação por e-mail",
"authToViewYourRecoveryKey": "Por favor, autentique-se para visualizar sua chave de recuperação",
"authToChangeYourEmail": "Por favor, autentique-se para alterar o seu e-mail",
"authToChangeYourPassword": "Por favor, autentique-se para alterar sua senha",
"authToViewSecrets": "Por favor, autentique-se para ver as suas chaves secretas",
"authToInitiateSignIn": "Por favor, autentique-se para iniciar o login para um backup.",
"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",
"authenticateGeneric": "Autentique",
"authToViewYourRecoveryKey": "Autentique para ver sua chave de recuperação",
"authToChangeYourEmail": "Autentique para alterar o seu e-mail",
"authToChangeYourPassword": "Autentique para alterar sua senha",
"authToViewSecrets": "Autentique para ver suas chaves secretas",
"authToInitiateSignIn": "Autentique para iniciar sessão para fazer uma cópia de segurança.",
"ok": "OK",
"cancel": "Cancelar",
"yes": "Sim",
@@ -123,21 +141,12 @@
"oops": "Opa",
"suggestFeatures": "Sugerir recursos",
"faq": "Perguntas frequentes",
"faq_q_1": "Quão seguro é o Auth?",
"faq_a_1": "Todos os backups de códigos via Auth são armazenados com criptografia de ponta-a-ponta. Isso significa que só você pode acessar os códigos. Nossos apps são de código-aberto e nossa criptografia é auditada por terceiros.",
"faq_q_2": "Posso acessar meus códigos no computador?",
"faq_a_2": "Você pode acessar seus códigos na web em auth.ente.io.",
"faq_q_3": "Como posso excluir códigos?",
"faq_a_3": "Você pode excluir um código deslizando para a esquerda sobre esse item.",
"faq_q_4": "Como posso apoiar este projeto?",
"faq_a_4": "Você pode apoiar o desenvolvimento do projeto com a assinatura do nosso app Photos @ ente.io.",
"faq_q_5": "Como ativar o bloqueio facial no Auth",
"faq_a_5": "Você pode ativar o bloqueio facial em Configurações → Segurança → Tela de bloqueio.",
"somethingWentWrongMessage": "Algo deu errado. Tente outra vez",
"leaveFamily": "Sair da família",
"leaveFamilyMessage": "Deseja mesmo sair do plano familiar?",
"inFamilyPlanMessage": "Você está em um plano familiar!",
"swipeHint": "Deslize para a esquerda para editar ou remover os códigos",
"hintForMobile": "Pressione em um código para editar ou excluir.",
"hintForDesktop": "Clique esquerdo em um código para editar ou excluir.",
"scan": "Escanear",
"scanACode": "Escanear código",
"verify": "Verificar",
@@ -150,7 +159,7 @@
"recoverAccount": "Recuperar conta",
"enterRecoveryKeyHint": "Digite a chave de recuperação",
"recover": "Recuperar",
"contactSupportViaEmailMessage": "Por favor, envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
"contactSupportViaEmailMessage": "Envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
@@ -167,7 +176,7 @@
"deleteAccountQuery": "Estamos tristes com sua decisão. Você encontrou algum problema?",
"yesSendFeedbackAction": "Sim, enviar feedback",
"noDeleteAccountAction": "Não, excluir conta",
"initiateAccountDeleteTitle": "Por favor, autentique-se para iniciar a exclusão de conta",
"initiateAccountDeleteTitle": "Autentique para iniciar a exclusão de conta",
"sendEmail": "Enviar e-mail",
"createNewAccount": "Criar nova conta",
"weakStrength": "Fraca",
@@ -181,10 +190,10 @@
"social": "Redes sociais",
"security": "Segurança",
"lockscreen": "Tela de bloqueio",
"authToChangeLockscreenSetting": "Por favor, autentique-se para alterar a configuração da tela de bloqueio",
"authToChangeLockscreenSetting": "Autentique para alterar a opção de tela de bloqueio",
"deviceLockEnablePreSteps": "Para ativar o bloqueio do dispositivo, configure a senha do dispositivo ou o bloqueio de tela nas configurações do seu sistema.",
"viewActiveSessions": "Ver sessões ativas",
"authToViewYourActiveSessions": "Por favor, autentique-se para ver as sessões ativas",
"authToViewYourActiveSessions": "Autentique para ver suas sessões ativas",
"searchHint": "Buscar...",
"search": "Buscar",
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
@@ -193,6 +202,10 @@
"scanAQrCode": "Escanear QR code",
"enterDetailsManually": "Inserir dados manualmente",
"edit": "Editar",
"share": "Compartilhar",
"shareCodes": "Compartilhar códigos",
"shareCodesDuration": "Selecione a duração em que você queira compartilhar os códigos.",
"restore": "Restaurar",
"copiedToClipboard": "Copiado para a área de transferência",
"copiedNextToClipboard": "Próximo código copiado para a área de transferência",
"error": "Erro",
@@ -229,16 +242,16 @@
"resetPasswordTitle": "Redefinir senha",
"encryptionKeys": "Chaves de criptografia",
"passwordWarning": "Não salvamos esta senha, então se você esquecê-la, <underline>não podemos descriptografar seus dados</underline>",
"enterPasswordToEncrypt": "Digite uma senha que podemos usar para criptografar seus dados",
"enterPasswordToEncrypt": "Insira uma senha que podemos usar para criptografar seus dados",
"enterNewPasswordToEncrypt": "Insira uma nova senha para criptografar seus dados",
"passwordChangedSuccessfully": "A senha foi alterada",
"generatingEncryptionKeys": "Gerando chaves de criptografia...",
"continueLabel": "Continuar",
"insecureDevice": "Dispositivo inseguro",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves seguras neste dispositivo.\n\npor favor, faça o login com um dispositivo diferente.",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves de segurança nesse dispositivo.\n\ninicie sessão em um dispositivo diferente.",
"howItWorks": "Como funciona",
"ackPasswordLostWarning": "Eu entendo que se eu perder minha senha, posso perder meus dados, já que meus dados são <underline>criptografados de ponta a ponta</underline>.",
"loginTerms": "Ao clicar em login, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
"loginTerms": "Ao clicar em iniciar sessão, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
"logInLabel": "Entrar",
"logout": "Sair",
"areYouSureYouWantToLogout": "Deseja mesmo sair?",
@@ -246,15 +259,15 @@
"exit": "Sair",
"verifyingRecoveryKey": "Verificando chave de recuperação...",
"recoveryKeyVerified": "Chave de recuperação verificada",
"recoveryKeySuccessBody": "Ótimo! Sua chave de recuperação é válida. Obrigado por verificar.\n\nLembre-se de manter o backup seguro de sua chave de recuperação.",
"invalidRecoveryKey": "A chave de recuperação que você digitou não é válida. Certifique-se de que contém 24 palavras e verifique a ortografia de cada uma.\n\nSe você inseriu um código de recuperação mais antigo, verifique se ele tem 64 caracteres e verifique cada um deles.",
"recoveryKeySuccessBody": "Ótimo! Sua chave de recuperação é válida. Obrigada por verificar.\n\nLembre-se de manter sua chave de recuperação copiada com segurança.",
"invalidRecoveryKey": "A chave de recuperação que você inseriu não é válida. Certifique-se de conter 24 caracteres, e verifique a ortografia de cada um deles.\n\nSe você inseriu um código de recuperação mais antigo, verifique se ele tem 64 caracteres e verifique cada um deles.",
"recreatePasswordTitle": "Redefinir senha",
"recreatePasswordBody": "Não é possível verificar a sua senha no dispositivo atual, mas podemos regenerá-la para que funcione em todos os dispositivos. \n\nEntre com a sua chave de recuperação e regenere sua senha (você pode usar a mesma se quiser).",
"invalidKey": "Chave inválida",
"tryAgain": "Tente novamente",
"viewRecoveryKey": "Ver chave de recuperação",
"confirmRecoveryKey": "Confirme a chave de recuperação",
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esquecer sua senha. Você pode encontrar sua chave de recuperação em Configurações > Conta.\n\nDigite sua chave de recuperação aqui para verificar se você a salvou corretamente.",
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esqueceu sua senha. Você pode encontrar sua chave de recuperação em Opções > Conta.\n\nInsira sua chave de recuperação aqui para verificar se você a salvou corretamente.",
"confirmYourRecoveryKey": "Confirme sua chave de recuperação",
"confirm": "Confirmar",
"emailYourLogs": "Enviar logs por e-mail",
@@ -262,10 +275,10 @@
"copyEmailAddress": "Copiar endereço de e-mail",
"exportLogs": "Exportar logs",
"enterYourRecoveryKey": "Digite a chave de recuperação",
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de ajuda.",
"networkHostLookUpErr": "Não foi possível conectar-se ao Ente, verifique suas configurações de rede e entre em contato com o suporte se o erro persistir.",
"networkConnectionRefusedErr": "Não foi possível conectar ao Ente, tente novamente após algum tempo. Se o erro persistir, entre em contato com o suporte.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de ajuda.",
"about": "Sobre",
"weAreOpenSource": "Nosso código é aberto!",
"privacy": "Privacidade",
@@ -279,12 +292,12 @@
"checking": "Verificando...",
"youAreOnTheLatestVersion": "Você está na versão mais recente",
"warning": "Atenção",
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Por favor, armazene-o com segurança.",
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Armazene-o com segurança.",
"iUnderStand": "Entendo",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Por favor, autentique-se para exportar seus códigos",
"authToExportCodes": "Autentique para exportar seus códigos",
"importSuccessTitle": "Oba!",
"importSuccessDesc": "Você importou {count} códigos!",
"@importSuccessDesc": {
@@ -297,9 +310,9 @@
}
},
"sorry": "Desculpe",
"importFailureDesc": "Não foi possível analisar o arquivo selecionado.\nPor favor, escreva para support@ente.io se precisar de ajuda!",
"importFailureDesc": "Não foi possível analisar o arquivo selecionado. Escreva para support@ente.io se precisar de ajuda!",
"pendingSyncs": "Atenção",
"pendingSyncsWarningBody": "Alguns de seus códigos não foram salvos.\n\nPor favor, certifique-se que você possui um backup para esses códigos antes de sair.",
"pendingSyncsWarningBody": "Alguns de seus códigos não foram salvos.\n\nCertifique-se que você possui uma cópia desses códigos antes de sair.",
"checkInboxAndSpamFolder": "Verifique sua caixa de entrada (e spam) para concluir a verificação",
"tapToEnterCode": "Toque para inserir código",
"resendEmail": "Reenviar e-mail",
@@ -315,20 +328,20 @@
}
},
"activeSessions": "Sessões ativas",
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Por favor, tente outra vez",
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Tente outra vez",
"thisWillLogYouOutOfThisDevice": "Isso fará com que você saia deste dispositivo!",
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará você sair do dispositivo a seguir:",
"terminateSession": "Sair?",
"terminate": "Encerrar",
"thisDevice": "Esse dispositivo",
"toResetVerifyEmail": "Para redefinir a sua senha, por favor verifique o seu email primeiro.",
"toResetVerifyEmail": "Para redefinir sua senha, verifique seu e-mail primeiramente.",
"thisEmailIsAlreadyInUse": "Este e-mail já está em uso",
"verificationFailedPleaseTryAgain": "Falha na verificação. Tente novamente",
"yourVerificationCodeHasExpired": "Seu código de verificação expirou",
"incorrectCode": "Código incorreto",
"sorryTheCodeYouveEnteredIsIncorrect": "Desculpe, o código que você inseriu está incorreto",
"sorryTheCodeYouveEnteredIsIncorrect": "O código inserido está incorreto",
"emailChangedTo": "E-mail alterado para {newEmail}",
"authenticationFailedPleaseTryAgain": "Falha na autenticação. Por favor, tente novamente",
"authenticationFailedPleaseTryAgain": "A autenticação falhou. Tente novamente",
"authenticationSuccessful": "Autenticado!",
"twofactorAuthenticationSuccessfullyReset": "Autenticação de dois fatores redefinida com sucesso",
"incorrectRecoveryKey": "Chave de recuperação incorreta",
@@ -343,9 +356,10 @@
"useOffline": "Usar sem backups",
"signInToBackup": "Entre para fazer backup de seus códigos",
"singIn": "Entrar",
"sigInBackupReminder": "Por favor, exporte seus códigos para garantir que você tenha um backup do qual você possa restaurar.",
"offlineModeWarning": "Você escolheu prosseguir sem backups. Por favor, faça backups manuais para ter certeza de que seus códigos estão seguros.",
"sigInBackupReminder": "Exporte seus códigos para garantir que você tenha uma cópia para restaurar.",
"offlineModeWarning": "Você decidiu prosseguir sem cópias. Faça cópias manuais para garantir que seus códigos estejam seguros.",
"showLargeIcons": "Mostrar ícones grandes",
"compactMode": "Modo compacto",
"shouldHideCode": "Ocultar códigos",
"doubleTapToViewHiddenCode": "Você pode tocar duas vezes em uma entrada para ver o código",
"focusOnSearchBar": "Foco na busca ao iniciar o app",
@@ -392,15 +406,15 @@
"@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": "A autenticação biométrica não está configurada no seu dispositivo. Vá em 'Configurações > Segurança' para adicionar autenticação biométrica.",
"androidGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Vá em 'Configurações > Segurança' para adicionar a autenticação 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": "A Autenticação Biométrica está desativada. Por favor, bloqueie e desbloqueie sua tela para ativá-la.",
"iOSLockOut": "A autenticação biométrica está desativada. Bloqueie e desbloqueie sua tela para ativá-la.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Por favor, ative o Touch ID ou o Face ID no seu telefone.",
"iOSGoToSettingsDescription": "A autenticação biométrica não está configurada no seu dispositivo. Ative o ID de toque ou ID de rosto em seu celular.",
"@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."
},
@@ -411,10 +425,10 @@
"noInternetConnection": "Não conectado à internet",
"pleaseCheckYourInternetConnectionAndTryAgain": "Verifique sua conexão com a internet e tente novamente.",
"signOutFromOtherDevices": "Sair da conta em outros dispositivos",
"signOutOtherBody": "Se você acha que alguém pode saber sua senha, você pode forçar todos os outros dispositivos que estão com sua conta a desconectar.",
"signOutOtherBody": "Se você acha que alguém possa saber da sua senha, você pode forçar desconectar sua conta de outros dispositivos.",
"signOutOtherDevices": "Sair em outros dispositivos",
"doNotSignOut": "Não sair",
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
"hearUsWhereTitle": "Como você descobriu o Ente? (opcional)",
"hearUsExplanation": "Não sabemos como você encontrou nosso app. Seria útil se você nos contasse!",
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
@@ -422,12 +436,12 @@
"passkey": "Chave de acesso",
"passKeyPendingVerification": "A verificação ainda está pendente",
"loginSessionExpired": "Sessão expirada",
"loginSessionExpiredDetails": "Sua sessão expirou. Por favor, entre novamente.",
"loginSessionExpiredDetails": "Sua sessão expirou. Registre-se novamente.",
"developerSettingsWarning": "Deseja mesmo alterar os ajustes de Desenvolvedor?",
"developerSettings": "Ajustes de Desenvolvedor",
"serverEndpoint": "Endpoint do servidor",
"invalidEndpoint": "Endpoint inválido",
"invalidEndpointMessage": "Desculpe, o endpoint que você inseriu é inválido. Por favor, insira um endpoint válido e tente novamente.",
"invalidEndpointMessage": "Desculpe, o ponto de acesso inserido é inválido. Insira um ponto de acesso válido e tente novamente.",
"endpointUpdatedMessage": "O endpoint foi atualizado",
"customEndpoint": "Conectado a {endpoint}",
"pinText": "Fixar",
@@ -466,5 +480,9 @@
"pinLock": "Bloqueio PIN",
"enterPin": "Insira o PIN",
"setNewPin": "Definir novo PIN",
"importFailureDescNew": "Não foi possível analisar o arquivo selecionado."
"importFailureDescNew": "Não foi possível analisar o arquivo selecionado.",
"appLockNotEnabled": "Bloqueio de aplicativo não ativado",
"appLockNotEnabledDescription": "Ative o bloqueio de aplicativo em Segurança > Bloqueio de aplicativo",
"authToViewPasskey": "Autentique para ver a sua chave de acesso",
"appLockOfflineModeWarning": "Você prosseguiu sem cópias de segurança. Caso, se esqueça de seu aplicativo de bloqueio, você não poderá mais acessar seus dados."
}

View File

@@ -101,13 +101,6 @@
"oops": "Ups",
"suggestFeatures": "Sugerează funcționalități",
"faq": "Întrebări frecvente",
"faq_q_1": "Cât de sigur este Auth?",
"faq_q_2": "Pot accesa codurile de pe desktop?",
"faq_q_3": "Cum pot șterge codurile?",
"faq_q_4": "Cum pot susţine acest proiect?",
"faq_a_4": "Poți susține dezvoltarea acestui proiect prin cumpărarea unui abonament la aplicația noastră de fotografii @ ente.io.",
"faq_q_5": "Cum pot activa blocarea cu FaceID în Auth",
"faq_a_5": "Poți activa blocarea FaceID din Setări → Securitate → Ecran de blocare.",
"somethingWentWrongMessage": "Ceva n-a mers bine, te rog încearcă din nou",
"leaveFamily": "Părăsește familia",
"verifyEmail": "Verifică e-mail",

View File

@@ -19,6 +19,20 @@
"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": "Аккаунт (you@domain.com)",
"codeTagHint": "Метка",
"accountKeyType": "Тип ключа",
@@ -34,6 +48,9 @@
"nextTotpTitle": "далее",
"deleteCodeTitle": "Удалить код?",
"deleteCodeMessage": "Вы уверены, что хотите удалить этот код? Это действие необратимо.",
"trashCode": "Удалить код?",
"trashCodeMessage": "Вы уверены, что хотите удалить код для {account}?",
"trash": "Удалить",
"viewLogsAction": "Посмотреть журнал",
"sendLogsDescription": "Это отправит все журналы, чтобы помочь нам отладить вашу проблему. Хотя мы принимаем меры предосторожности, чтобы конфиденциальная информация не регистрировалась, мы рекомендуем вам просмотреть эти журналы, прежде чем делиться ими.",
"preparingLogsTitle": "Подготовка журналов...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Подтверждение электронной почты",
"emailVerificationEnableWarning": "Если вы храните у нас двухфакторную аутентификацию в своей электронной почте, включение проверки электронной почты может привести к тупиковой ситуации. Если у вас заблокирован доступ к одной службе, возможно, вы не сможете войти в другую.",
"authToChangeEmailVerificationSetting": "Авторизуйтесь, чтобы изменить подтверждение электронной почты",
"authenticateGeneric": "Пожалуйста, авторизуйтесь",
"authToViewYourRecoveryKey": "Пожалуйста, авторизуйтесь для просмотра вашего ключа восстановления",
"authToChangeYourEmail": "Пожалуйста, авторизуйтесь, чтобы изменить адрес электронной почты",
"authToChangeYourPassword": "Пожалуйста, авторизуйтесь, чтобы изменить пароль",
@@ -123,21 +141,12 @@
"oops": "Ой",
"suggestFeatures": "Предложить идеи",
"faq": "FAQ",
"faq_q_1": "Насколько безопасен Auth?",
"faq_a_1": "Все коды, которые вы резервируете с помощью Auth, хранятся в зашифрованном виде. Это означает, что только вы можете получить доступ к своим кодам. Наши приложения имеют открытый исходный код, а наша криптография прошла внешний аудит.",
"faq_q_2": "Могу ли я получить доступ к моим кодам на компьютере?",
"faq_a_2": "Вы можете получить доступ к своим кодам на сайте @ auth.ente.io.",
"faq_q_3": "Как я могу удалить коды?",
"faq_a_3": "Вы можете удалить код, проведя пальцем влево по этому элементу.",
"faq_q_4": "Как я могу поддержать этот проект?",
"faq_a_4": "Вы можете поддержать развитие этого проекта, подписавшись на наше приложение Photos @ ente.io.",
"faq_q_5": "Как мне включить FaceID в Auth",
"faq_a_5": "Вы можете включить блокировку FaceID в Настройки → Безопасность → Экран блокировки.",
"somethingWentWrongMessage": "Что-то пошло не так. Попробуйте еще раз",
"leaveFamily": "Покинуть семью",
"leaveFamilyMessage": "Вы уверены, что хотите отказаться от семейного плана?",
"inFamilyPlanMessage": "Вы на семейном плане!",
"swipeHint": "Проведите пальцем влево, чтобы отредактировать или удалить коды",
"hintForMobile": "Длительное нажмите на код для редактирования или удаления.",
"hintForDesktop": "Щелкните правой кнопкой мыши по коду, чтобы изменить или удалить.",
"scan": "Сканировать",
"scanACode": "Сканировать QR-код",
"verify": "Подтвердить",
@@ -182,6 +191,7 @@
"security": "Безопасность",
"lockscreen": "Экран блокировки",
"authToChangeLockscreenSetting": "Пожалуйста, авторизуйтесь, чтобы изменить настройки экрана блокировки",
"deviceLockEnablePreSteps": "Чтобы включить блокировку устройства, пожалуйста, настройте пароль или блокировку экрана в настройках системы.",
"viewActiveSessions": "Просмотр активных сессий",
"authToViewYourActiveSessions": "Пожалуйста, авторизуйтесь для просмотра активных сессий",
"searchHint": "Поиск...",
@@ -192,6 +202,10 @@
"scanAQrCode": "Сканировать QR-код",
"enterDetailsManually": "Ввести детали вручную",
"edit": "Редактировать",
"share": "Поделиться",
"shareCodes": "Поделиться кодами",
"shareCodesDuration": "Выберите продолжительность, на которую вы хотите поделиться кодами.",
"restore": "Восстановить",
"copiedToClipboard": "Скопировано",
"copiedNextToClipboard": "Следующий код скопирован в буфер обмена",
"error": "Ошибка",
@@ -345,6 +359,7 @@
"sigInBackupReminder": "Экспортируйте свои коды, чтобы убедиться, что у вас есть резервная копия, из которой можно восстановить.",
"offlineModeWarning": "Вы решили продолжить без резервных копий. Пожалуйста, создайте резервные копии вручную, чтобы убедиться, что ваши коды в безопасности.",
"showLargeIcons": "Использовать большие значки",
"compactMode": "Компактный режим",
"shouldHideCode": "Скрыть коды",
"doubleTapToViewHiddenCode": "Вы можете нажать дважды на запись для просмотра кода",
"focusOnSearchBar": "Фокусировать поиск при запуске приложения",
@@ -465,5 +480,9 @@
"pinLock": "Pin Замок",
"enterPin": "Введите PIN",
"setNewPin": "Установите новый PIN",
"importFailureDescNew": "Не удалось обработать выбранный файл."
"importFailureDescNew": "Не удалось обработать выбранный файл.",
"appLockNotEnabled": "Блокировка приложения отключена",
"appLockNotEnabledDescription": "Пожалуйста, включите блокировку приложения в безопасности > Блокировка приложений",
"authToViewPasskey": "Пожалуйста, авторизуйтесь, чтобы просмотреть пароль",
"appLockOfflineModeWarning": "Вы решили продолжить работу без резервного копирования. Если вы забудете свой пароль, доступ к вашим данным будет заблокирован."
}

View File

@@ -1,5 +1,5 @@
{
"account": "Konto",
"account": "Účet",
"unlock": "Odomknúť",
"recoveryKey": "Kľúč pre obnovenie",
"counterAppBarTitle": "Počítadlo",
@@ -8,18 +8,18 @@
},
"onBoardingBody": "Zabezpečte svoje kódy 2FA",
"onBoardingGetStarted": "Poďme na to",
"setupFirstAccount": "Vytvorte svoj prvý účet",
"setupFirstAccount": "Nastav si svoj prvý účet",
"importScanQrCode": "Naskenovať QR kód",
"qrCode": "QR kód",
"importEnterSetupKey": "Vložte kľúč nastavenia",
"importAccountPageTitle": "Vložte detaily o konte",
"importAccountPageTitle": "Zadaj údaje o účte",
"secretCanNotBeEmpty": "Tajný kľúč nemôže ostať prázdny",
"bothIssuerAndAccountCanNotBeEmpty": "Buď vydavateľ alebo účet nemôže ostať prázdny",
"bothIssuerAndAccountCanNotBeEmpty": "Vydavateľ aj účet nemôžu byť prázdne",
"incorrectDetails": "Chybné údaje",
"pleaseVerifyDetails": "Prosím, skontrolujte svoje údaje a skúste to znova",
"codeIssuerHint": "Vydavateľ",
"codeSecretKeyHint": "Tajný kľúč",
"codeAccountHint": "Konto (ucet@domena.com)",
"codeAccountHint": "Účet (ty@domena.sk)",
"codeTagHint": "Tag",
"accountKeyType": "Typ kľúča",
"sessionExpired": "Relácia vypršala",
@@ -123,21 +123,10 @@
"oops": "Ups",
"suggestFeatures": "Navrhnúť funkcionalitu",
"faq": "Často kladené otázky",
"faq_q_1": "Ako bezpečné je Auth?",
"faq_a_1": "Všetky kódy, ktoré zálohujete cez Auth, sú ukladané zabezpečené end-to-end šifrovaním. To znamená, že k svojim kódom máte prístup iba vy. Naše aplikácie sú open source a na nami používanej kryptografii prebehol externý audit.",
"faq_q_2": "Môžem pristupovať k svojim kódom cez počítač?",
"faq_a_2": "K svojim kódom sa môžete dostať cez web auth.ente.io.",
"faq_q_3": "Ako môžem odstrániť svoje kódy?",
"faq_a_3": "Kód môžete odstrániť potiahnutím prsta doľava na danej položke.",
"faq_q_4": "Ako môžem podporiť tento projekt?",
"faq_a_4": "Vývoj tohto projektu môžete podporiť zakúpením predplatného našej aplikácie Photos na ente.io.",
"faq_q_5": "Ako môžem nastaviť FaceID v Auth?",
"faq_a_5": "Zámok FaceID môžete povoliť v sekcii Nastavenia → Zabezpečenie → Uzamknutie obrazovky.",
"somethingWentWrongMessage": "Niečo sa pokazilo, skúste to prosím znova",
"leaveFamily": "Opustiť rodinku",
"leaveFamilyMessage": "Ste si istý, že chcete opustiť rodinku?",
"inFamilyPlanMessage": "Ste prihlásený k rodinke!",
"swipeHint": "Potiahnite doľava pre upravenie alebo vymazanie kódov",
"scan": "Skenovať",
"scanACode": "Skenovať kód",
"verify": "Overiť",
@@ -147,7 +136,7 @@
"twoFactorAuthTitle": "Dvojfaktorové overovanie",
"passkeyAuthTitle": "Overenie pomocou passkey",
"verifyPasskey": "Overiť passkey",
"recoverAccount": "Obnoviť konto",
"recoverAccount": "Obnoviť účet",
"enterRecoveryKeyHint": "Vložte váš kód pre obnovenie",
"recover": "Obnoviť",
"contactSupportViaEmailMessage": "Pošlite e-mail na adresu {email} z vašej registrovanej e-mailovej adresy",
@@ -163,13 +152,13 @@
"enterEmailHint": "Zadajte vašu emailovú adresu",
"invalidEmailTitle": "Neplatná emailová adresa",
"invalidEmailMessage": "Zadajte platnú e-mailovú adresu.",
"deleteAccount": "Odstrániť konto",
"deleteAccountQuery": "Bude nám tu bez vás smutno. Vyskytol sa nejaký problém?",
"deleteAccount": "Odstrániť účet",
"deleteAccountQuery": "Bude nám ľúto ak odídeš. Máš nejaký problém?",
"yesSendFeedbackAction": "Áno, odoslať spätnú väzbu",
"noDeleteAccountAction": "Nie, odstrániť účet",
"initiateAccountDeleteTitle": "Pre odstránenie účtu sa musíte overiť",
"initiateAccountDeleteTitle": "Je potrebné overenie pre spustenie odstránenia účtu",
"sendEmail": "Odoslať email",
"createNewAccount": "Vytvoriť nové konto",
"createNewAccount": "Vytvoriť nový účet",
"weakStrength": "Slabé",
"strongStrength": "Silné",
"moderateStrength": "Mierne",
@@ -353,8 +342,8 @@
"editCodeAuthMessage": "Overte sa pre zmenu kódu",
"deleteCodeAuthMessage": "Overte sa pre vymazanie kódu",
"showQRAuthMessage": "Overte sa pre zobrazenie QR kódu",
"confirmAccountDeleteTitle": "Potvrdiť odstránenie účtu",
"confirmAccountDeleteMessage": "Tento účet je prepojený s inými aplikáciami Ente, ak nejaké používate.\n\nVšetky nahrané údaje v aplikáciách od Ente budú naplánované na výmaz a váš účet bude natrvalo odstránený.",
"confirmAccountDeleteTitle": "Potvrď odstránenie účtu",
"confirmAccountDeleteMessage": "Tento účet je prepojený s inými aplikáciami Ente, ak nejaké používaš.\n\nTvoje nahrané údaje vo všetkých Ente aplikáciách budú naplánované na odstránenie a tvoj účet bude natrvalo odstránený.",
"androidBiometricHint": "Overiť identitu",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -410,7 +399,7 @@
"noInternetConnection": "Žiadne internetové pripojenie",
"pleaseCheckYourInternetConnectionAndTryAgain": "Skontrolujte svoje internetové pripojenie a skúste to znova.",
"signOutFromOtherDevices": "Odhlásiť sa z iných zariadení",
"signOutOtherBody": "Ak si myslíte, že niekto môže vedieť vaše heslo, môžete vynútiť odhlásenie všetkých ostatných zariadení vo vašom účte.",
"signOutOtherBody": "Ak si myslíš, že by niekto mohol poznať tvoje heslo, môžeš vynútiť odhlásenie všetkých ostatných zariadení používajúcich tvoj účet.",
"signOutOtherDevices": "Odhlásiť iné zariadenie",
"doNotSignOut": "Neodhlasovať",
"hearUsWhereTitle": "Ako ste sa dozvedeli o Ente? (voliteľné)",

View File

@@ -0,0 +1,488 @@
{
"account": "Račun",
"unlock": "Odkleni",
"recoveryKey": "Ključ za obnovitev",
"counterAppBarTitle": "Števec",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Varno varnostno kopirajte vaše kode 2FA",
"onBoardingGetStarted": "Začnite",
"setupFirstAccount": "Ustvarite svoj prvi račun",
"importScanQrCode": "Skenirajte QR kodo",
"qrCode": "QR koda",
"importEnterSetupKey": "Vnesite namestitveni ključ",
"importAccountPageTitle": "Vnesite podatke o računu",
"secretCanNotBeEmpty": "Skrivni ključ ne more biti prazen",
"bothIssuerAndAccountCanNotBeEmpty": "Izdajatelj in račun ne moreta biti prazna",
"incorrectDetails": "Nepravilni podatki",
"pleaseVerifyDetails": "Prosimo preverite vaše podatke in poizkusite ponovno",
"codeIssuerHint": "Izdajatelj",
"codeSecretKeyHint": "Skrivni ključ",
"secret": "Skrivni ključ",
"all": "Vsi",
"notes": "Opombe",
"notesLengthLimit": "Opombe so lahko dolge največ {count} znakov",
"@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": "Račun (vi@domena.com)",
"codeTagHint": "Oznaka",
"accountKeyType": "Tip ključa",
"sessionExpired": "Seja je potekla",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Prosimo, ponovno se prijavite",
"loggingOut": "Odjavljanje...",
"timeBasedKeyType": "Na osnovi časa (TOTP)",
"counterBasedKeyType": "Na osnovi števca (HOTP)",
"saveAction": "Shrani",
"nextTotpTitle": "naslednja",
"deleteCodeTitle": "Izbriši kodo?",
"deleteCodeMessage": "Ali ste prepričani, da želite izbrisati to kodo? To dejanje je nepovratno.",
"trashCode": "Premakni v smetnjak?",
"trashCodeMessage": "Ste prepričani da želite premakniti kodo za {account} v smetnjak?",
"trash": "V smetnjak",
"viewLogsAction": "Poglej loge",
"sendLogsDescription": "To nam bo poslalo vaše loge, da vam lahko pomagamo rešiti vašo težavo. Kljub temu, da se trudimo, da vaših zasebnih podatkov ne zapišemo v loge, vam priporočamo, da si jih pred deljenjem ogledate.",
"preparingLogsTitle": "Pripravljamo loge...",
"emailLogsTitle": "Pošlji loge po e-pošti",
"emailLogsMessage": "Prosim pošljite loge na {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Kopiraj e-pošto",
"exportLogsAction": "Izvozi loge",
"reportABug": "Prijavite napako",
"crashAndErrorReporting": "Poročanje o nesrečah in napakah",
"reportBug": "Prijavi napako",
"emailUsMessage": "Prosim, pišite nam na {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Stik s podporo",
"rateUsOnStore": "Ocenite nas na {storeName}",
"blog": "Blog",
"merchandise": "Trgovina",
"verifyPassword": "Potrdite geslo",
"pleaseWait": "Prosim počakajte...",
"generatingEncryptionKeysTitle": "Generiramo ključe za šifriranje",
"recreatePassword": "Ponovno ustvarite geslo",
"recreatePasswordMessage": "Trenutna naprava, ni dovolj zmogljiva za preverjanje vašega gesla, zato ga moramo generirati na način, ki deluje z vsemi napravami.\n\nProsimo, prijavite se z vašim ključem za obnovo in ponovno ustvarite geslo (če želite lahko uporabite enako kot prej).",
"useRecoveryKey": "Uporabi ključ za obnovo",
"incorrectPasswordTitle": "Nepravilno geslo",
"welcomeBack": "Dobrodošli nazaj!",
"madeWithLoveAtPrefix": "ustvarjeno s ❤pri ",
"supportDevs": "Naročite se na <bold-green>ente</bold-green>, da nas podprete",
"supportDiscount": "Uporabite kupon \"AUTH\" za 10% popusta za prvo leto",
"changeEmail": "Sprememba e-poštnega naslova",
"changePassword": "Sprememba gesla",
"data": "Podatki",
"importCodes": "Uvozi kode",
"importTypePlainText": "Navadno besedilo",
"importTypeEnteEncrypted": "Ente šifriran izvoz",
"passwordForDecryptingExport": "Geslo za dešifriranje izvoza",
"passwordEmptyError": "Geslo ne sme biti prazno",
"importFromApp": "Uvozi kode iz {appName}",
"importGoogleAuthGuide": "Svoje račune iz Google Authenticatorja izvozite v kodo QR z možnostjo \"Prenos računov\" (en.: \"Transfer Accounts\"). Nato z drugo napravo preberite kodo QR.\n\nNasvet: Za slikanje kode QR lahko uporabite spletno kamero prenosnega računalnika.",
"importSelectJsonFile": "Izberi datoteko JSON",
"importSelectAppExport": "Izberi {appName} izvozno datoteko",
"importEnteEncGuide": "Izberi šifrirano JSON datoteko izvoženo iz Ente",
"importRaivoGuide": "Uporabite možnost \"Izvozi OTP v arhiv Zip\" (\"Export OTPs to Zip archive\") v nastavitvah Raivo.\n\nRazširite datoteko zip in uvozite datoteko JSON.",
"importBitwardenGuide": "V orodjih Bitwarden Tools uporabite možnost \"Izvozi trezor\" (\"Export vault\") in uvozite nešifrirano datoteko JSON.",
"importAegisGuide": "Uporabite možnost \"Izvozi trezor\" (\"Export the vault\") v nastavitvah aplikacije Aegis.\n\nČe je vaš trezor šifriran, boste morali vnesti geslo za dešifriranje trezorja.",
"import2FasGuide": "V programu 2FAS uporabite možnost \"Nastavitve ->Zaščitno kopiranje - Izvoz\" (\"Settings->Backup -Export\").\n\nČe je varnostna kopija šifrirana, boste morali vnesti geslo za dešifriranje varnostne kopije.",
"importLastpassGuide": "Uporabite možnost \"Prenos računov\" (\"Transfer accounts\") v nastavitvah Lastpass Authenticatorja in pritisnite \"Izvozi račune v datoteko\" (\"Export accounts to file\"). Nato uvozite preneseno datoteko JSON.",
"exportCodes": "Izvozi kode",
"importLabel": "Uvoz",
"importInstruction": "Izberite datoteko, ki vsebuje seznam vaših kod v naslednji obliki",
"importCodeDelimiterInfo": "Kode so lahko ločene z vejico ali novo vrstico.",
"selectFile": "Izberi datoteko",
"emailVerificationToggle": "Verifikacija e-pošte",
"emailVerificationEnableWarning": "Če se želite izogniti zaklepanju računa, pred omogočanjem preverjanja e-pošte shranite kopijo e-poštnega potrdila 2FA zunaj storitve Ente Auth.",
"authToChangeEmailVerificationSetting": "Za spremembo potrjevanja vašega naslova e-pošte, se overite",
"authenticateGeneric": "Prosimo. overite se",
"authToViewYourRecoveryKey": "Če si želite ogledati svoje ključ za obnovo, se overite",
"authToChangeYourEmail": "Za spremembo vašega naslova e-pošte, se overite",
"authToChangeYourPassword": "Za spremembo gesla, se overite",
"authToViewSecrets": "Če si želite ogledati svoje skrivne ključe, se overite",
"authToInitiateSignIn": "Za začetek prijave za varnostno kopiranje, se overite",
"ok": "V redu",
"cancel": "Prekliči",
"yes": "Da",
"no": "Ne",
"email": "E-pošta",
"support": "Podpora",
"general": "Splošno",
"settings": "Nastavitve",
"copied": "Kopirano",
"pleaseTryAgain": "Prosimo, poskusite ponovno",
"existingUser": "Obstoječ uporabnik",
"newUser": "Nov pri Ente",
"delete": "",
"enterYourPasswordHint": "Vnesite svoje geslo",
"forgotPassword": "Pozabljeno geslo",
"oops": "Ups",
"suggestFeatures": "Predlagaj funkcije",
"faq": "Pogosta vprašanja",
"somethingWentWrongMessage": "Nekaj je šlo narobe, prosimo poizkusite znova.",
"leaveFamily": "Zapusti družino",
"leaveFamilyMessage": "Ste prepričani, da želite zapustiti družinski paket?",
"inFamilyPlanMessage": "Ste na družinskem paketu!",
"hintForMobile": "Uredite ali izbrišite kodo z držanjem na njej.",
"hintForDesktop": "Uredite ali izbrišite kodo z desnim klikom na njo.",
"scan": "Skeniraj",
"scanACode": "Skeniraj kodo",
"verify": "Preveri",
"verifyEmail": "Potrdite e-pošto",
"enterCodeHint": "Vnesite 6 mestno kodo iz vaše aplikacije za preverjanje pristnosti",
"lostDeviceTitle": "Izgubljena naprava?",
"twoFactorAuthTitle": "Dvojno preverjanja pristnosti",
"passkeyAuthTitle": "Potrditev ključa za dostop (passkey)",
"verifyPasskey": "Potrdite ključ za dostop (passkey)",
"recoverAccount": "Obnovi račun",
"enterRecoveryKeyHint": "Vnesite vaš ključ za obnovitev",
"recover": "Obnovi",
"contactSupportViaEmailMessage": "Prosimo, pošljite e-pošto na {email} iz naslova s katerim ste registrirani",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Neveljavna QR koda",
"noRecoveryKeyTitle": "Nimate ključa za obnovo?",
"enterEmailHint": "Vnesite svoj e-poštni naslov",
"invalidEmailTitle": "Neveljaven e-poštni naslov",
"invalidEmailMessage": "Prosimo vnesite veljaven e-poštni naslov.",
"deleteAccount": "Izbriši račun",
"deleteAccountQuery": "Žal nam je, da odhajate. Imate kakšne težave?",
"yesSendFeedbackAction": "Ja, pošlji povratne informacije",
"noDeleteAccountAction": "Ne, izbriši račun",
"initiateAccountDeleteTitle": "Za izbris računa, se overite",
"sendEmail": "Pošlji e-pošto",
"createNewAccount": "Ustvari nov račun",
"weakStrength": "Šibko",
"strongStrength": "Močno",
"moderateStrength": "Zmerno",
"confirmPassword": "Potrdi geslo",
"close": "Zapri",
"oopsSomethingWentWrong": "Ups, nekaj je šlo narobe.",
"selectLanguage": "Izberi jezik",
"language": "Jezik",
"social": "Družabno",
"security": "Varnost",
"lockscreen": "Zaklenjen zaslon",
"authToChangeLockscreenSetting": "Za spremembo nastavitev zaklenjenega zaslona, se overite",
"deviceLockEnablePreSteps": "Da omogočite zaklepanje naprave, prosimo nastavite kodo ali zaklepanje zaslona v sistemskih nastavitvah.",
"viewActiveSessions": "Preglej aktivne seje",
"authToViewYourActiveSessions": "Če si želite ogledati svoje aktivne seje, se overite",
"searchHint": "Iskanje...",
"search": "Iskanje",
"sorryUnableToGenCode": "Oprostite, ni možno ustvariti kode za {issuerName}",
"noResult": "Ni rezultatov",
"addCode": "Dodaj kodo",
"scanAQrCode": "Skeniraj QR kodo",
"enterDetailsManually": "Vnesi podatke ročno",
"edit": "Uredi",
"share": "Deli",
"shareCodes": "Deli kode",
"shareCodesDuration": "Izberite trajanje, za katero želite deliti kode",
"restore": "Povrni",
"copiedToClipboard": "Kopirano v odložišče",
"copiedNextToClipboard": "Naslednja koda kopirana v odložišče",
"error": "Napaka",
"recoveryKeyCopiedToClipboard": "Ključ za obnovo kopiran v odložišče",
"recoveryKeyOnForgotPassword": "Če pozabite svoje geslo, je edini način da obnovite svoje podatke s tem ključem",
"recoveryKeySaveDescription": "Tega ključa ne hranimo, prosimo shranite teh 24 besed na varnem",
"doThisLater": "Stori to kasneje",
"saveKey": "Shrani ključ",
"save": "Shrani",
"send": "Pošlji",
"saveOrSendDescription": "Želite to shraniti v shrambo (privzeto: mapa Prenosi) ali poslati drugim aplikacijam?",
"saveOnlyDescription": "Želite to shraniti v shrambo (privzeto: mapa Prenosi)?",
"back": "Nazaj",
"createAccount": "Ustvari račun",
"passwordStrength": "Moč gesla: {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": "Geslo",
"signUpTerms": "Strinjam se s <u-terms>pogoji uporabe</u-terms> in <u-policy>politiko zasebnosti</u-policy>",
"privacyPolicyTitle": "Politika zasebnosti",
"termsOfServicesTitle": "Pogoji uporabe",
"encryption": "Šifriranje",
"setPasswordTitle": "Nastavite geslo",
"changePasswordTitle": "Sprememba gesla",
"resetPasswordTitle": "Ponastavitev gesla",
"encryptionKeys": "Šifrirni ključi",
"passwordWarning": "Tega gesla ne shranjujemo, zato v primeru, da ga pozabite, <underline>ne moremo dešifrirati vaših podatkov</underline>.",
"enterPasswordToEncrypt": "Vnesite geslo, ki ga lahko uporabimo za šifriranje vaših podatkov",
"enterNewPasswordToEncrypt": "Vnesite novo geslo, ki ga lahko uporabimo za šifriranje vaših podatkov",
"passwordChangedSuccessfully": "Geslo je bilo uspešno spremenjeno",
"generatingEncryptionKeys": "Ustvarjanje ključe za šifriranje",
"continueLabel": "Nadaljuj",
"insecureDevice": "Nezanesljiva naprava",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Žal v tej napravi nismo mogli ustvariti varnih ključev.\n\nProsimo, prijavite se iz druge naprave.",
"howItWorks": "Kako deluje? ",
"ackPasswordLostWarning": "Razumem, da lahko z izgubo gesla, izgubim svoje podatke, saj so <underline>end-to-end šifrirani</underline>",
"loginTerms": "S klikom na prijava, se strinjam s <u-terms>pogoji uporabe</u-terms> in <u-policy>politiko zasebnosti</u-policy>",
"logInLabel": "Prijava",
"logout": "Odjava",
"areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?",
"yesLogout": "Ja, odjavi se",
"exit": "Izhod",
"verifyingRecoveryKey": "Preverjanje ključa za obnovitev",
"recoveryKeyVerified": "Ključ za obnovitev preverjen",
"recoveryKeySuccessBody": "Odlično! Vaš ključ za obnovitev je veljaven. Hvala za preverjanje.\n\nNe pozabite shraniti varnostno kopijo obnovitvenega ključa.",
"invalidRecoveryKey": "Vneseni obnovitveni ključ ni veljaven. Prepričajte se, da vsebuje 24 besed, in preverite črkovanje vsake od njih.\n\nČe ste vnesli starejšo obnovitveno kodo, se prepričajte, da je dolga 64 znakov, in preverite vsakega od njih.",
"recreatePasswordTitle": "Ponovno ustvarite geslo",
"recreatePasswordBody": "Trenutna naprava, ni dovolj zmogljiva za preverjanje vašega gesla, a ga lahko generiramo na način, ki deluje z vsemi napravami.\n\nProsimo, prijavite se z vašim ključem za obnovo in ponovno ustvarite geslo (če želite lahko uporabite enako kot prej).",
"invalidKey": "Neveljaven ključ",
"tryAgain": "Poskusite ponovno",
"viewRecoveryKey": "Poglej ključ za obnovitev",
"confirmRecoveryKey": "Potrdi ključ za obnovitev",
"recoveryKeyVerifyReason": "Ključ za obnovitev je edini način za obnovitev fotografij, če pozabite geslo. Ključ za obnovitev najdete v razdelku Nastavitve > Račun.\n\nTukaj vnesite svoj obnovitveni ključ, da preverite, ali ste ga pravilno shranili.",
"confirmYourRecoveryKey": "Potrdite vaš ključ za obnovitev",
"confirm": "Potrdi",
"emailYourLogs": "Pošlji loge po e-pošti",
"pleaseSendTheLogsTo": "Loge pošljite na naslov \n{toEmail}",
"copyEmailAddress": "Kopiraj e-poštni naslov",
"exportLogs": "Izvozi loge",
"enterYourRecoveryKey": "Vnesite vaš ključ za obnovitev",
"tempErrorContactSupportIfPersists": "Zdi se, da je šlo nekaj narobe. Po določenem času poskusite znova. Če se napaka nadaljuje, se obrnite na našo ekipo za podporo.",
"networkHostLookUpErr": "Ne morete se povezati z Ente, preverite omrežne nastavitve in se obrnite na podporo, če se napaka nadaljuje.",
"networkConnectionRefusedErr": "Ne morete se povezati z Ente, poskusite znova čez nekaj časa. Če se napaka nadaljuje, se obrnite na podporo.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Zdi se, da je šlo nekaj narobe. Po določenem času poskusite znova. Če se napaka nadaljuje, se obrnite na našo ekipo za podporo.",
"about": "O nas",
"weAreOpenSource": "Smo odprto kodni!",
"privacy": "Zasebnost",
"terms": "Pogoji uporabe",
"checkForUpdates": "Preveri za posodobitve",
"checkStatus": "Preveri status",
"downloadUpdate": "Prenesi",
"criticalUpdateAvailable": "Nujna posodobitev je na voljo",
"updateAvailable": "Posodobitev je na voljo",
"update": "Posodobi",
"checking": "Preverjanje...",
"youAreOnTheLatestVersion": "Imate najnovejšo verzijo",
"warning": "Opozorilo",
"exportWarningDesc": "Izvožena datoteka vsebuje zasebne informacije. Prosimo, hranite jo na varnem.",
"iUnderStand": "Razumem",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Za izvoz kod, se overite",
"importSuccessTitle": "Juhu!",
"importSuccessDesc": "Uvozili ste {count} kod!",
"@importSuccessDesc": {
"placeholders": {
"count": {
"description": "The number of codes imported",
"type": "int",
"example": "1"
}
}
},
"sorry": "Oprostite",
"importFailureDesc": "Izbrane datoteke ni bilo možno prebrati. Če potrebujete pomoč, nam pišite na support@ente.io",
"pendingSyncs": "Opozorilo",
"pendingSyncsWarningBody": "Nekatere vaše kode niso varnostno kopirane.\n\nProsimo, prepričajte se, da so te kode varnostno kopirane preden se odjavite.",
"checkInboxAndSpamFolder": "Prosimo, preverite svoj e-poštni predal (in nezaželeno pošto), da končate verifikacijo",
"tapToEnterCode": "Pritisni za vnos kode",
"resendEmail": "Ponovno pošlji e-pošto",
"weHaveSendEmailTo": "Poslali smo e-pošto na <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": "Aktivne seje",
"somethingWentWrongPleaseTryAgain": "Nekaj je šlo narobe, prosimo poizkusite znova.",
"thisWillLogYouOutOfThisDevice": "To vas bo odjavilo iz te naprave!",
"thisWillLogYouOutOfTheFollowingDevice": "To vas bo odjavilo iz naslednje naprave:",
"terminateSession": "Končaj sejo",
"terminate": "Končaj",
"thisDevice": "Ta naprava",
"toResetVerifyEmail": "Če želite ponastaviti geslo, najprej potrdite svoj e-poštni naslov.",
"thisEmailIsAlreadyInUse": "Ta e-poštni naslove je že v uporabi.",
"verificationFailedPleaseTryAgain": "Potrjevanje ni bilo uspešno, prosimo poskusite znova.",
"yourVerificationCodeHasExpired": "Vaša koda za potrditev je potekla.",
"incorrectCode": "Nepravilna koda",
"sorryTheCodeYouveEnteredIsIncorrect": "Oprostite, koda ki ste jo vnesli ni pravilna",
"emailChangedTo": "E-poštni naslove je bil spremenjen na {newEmail}",
"authenticationFailedPleaseTryAgain": "Overitev ni uspela, prosimo poskusite znova",
"authenticationSuccessful": "Overitev uspešna!",
"twofactorAuthenticationSuccessfullyReset": "Uspešna ponastavitev dvostopenjske avtentikacije",
"incorrectRecoveryKey": "Nepravilen ključ za obnovitev",
"theRecoveryKeyYouEnteredIsIncorrect": "Ključ za obnovitev, ki ste ga vnesli ni pravilen",
"enterPassword": "Vnesite geslo",
"selectExportFormat": "Izberite obliko izvoza",
"exportDialogDesc": "Šifrirani izvozi bodo varovani z geslom po vaši izbiri.",
"encrypted": "Šifrirano",
"plainText": "Navadno besedilo",
"passwordToEncryptExport": "Geslo za šifriranje izvoza",
"export": "Izvoz",
"useOffline": "Uporabljal brez varnostnih kopij",
"signInToBackup": "Prijavite se za varnostno kopiranje kod",
"singIn": "Prijava",
"sigInBackupReminder": "Izvozite svoje kode in si zagotovite varnostno kopijo, iz katere lahko obnovite.",
"offlineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Prosimo, da naredite ročne varnostne kopije in se prepričajte, da so vaše kode varne.",
"showLargeIcons": "Prikaži velike ikone",
"compactMode": "Kompaktni način",
"shouldHideCode": "Skrij kode",
"doubleTapToViewHiddenCode": "Dvakrat kliknite vnos, da si ogledate kodo.",
"focusOnSearchBar": "Osredotočite iskanje ob zagonu aplikacije",
"confirmUpdatingkey": "Ali ste prepričani, da želite posodobiti skrivni ključ?",
"minimizeAppOnCopy": "Ob kopiranju, minimiziraj aplikacijo",
"editCodeAuthMessage": "Za urejanje kod, se overite",
"deleteCodeAuthMessage": "Za brisanje kod, se overite",
"showQRAuthMessage": "Da prikažete QR kodo, se overite",
"confirmAccountDeleteTitle": "Potrdi brisanje računa",
"confirmAccountDeleteMessage": "Ta račun je povezan z drugimi aplikacijami Ente, če jih uporabljate.\n\nVaši naloženi podatki v vseh aplikacijah Ente bodo načrtovane za izbris, vaš račun pa bo trajno izbrisan.",
"androidBiometricHint": "Potrdite identiteto",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Ni prepoznano. Poskusite znova.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Uspešno",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Prekliči",
"@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": "Potrebna je overitev",
"@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": "Zahtevani biometrični podatki",
"@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": "Zahtevani podatki za vpis v napravo",
"@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": "Zahtevani podatki za vpis v napravo",
"@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": "Pojdi v nastavitve",
"@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": "Biometrično overjanje v vaši napravi ni nastavljeno. Pojdite v \"Nastavitve > Varnost\" in dodajte biometrično overjanje.",
"@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": "Biometrično overjanje je onemogočeno. Če ga želite omogočiti, zaklenite in odklenite zaslon.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "Biometrično overjanje v vaši napravi ni nastavljeno. V telefonu omogočite funkcijo Touch ID ali 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": "V redu",
"@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": "Ni internetne povezave",
"pleaseCheckYourInternetConnectionAndTryAgain": "Preverite internetno povezavo in poskusite znova.",
"signOutFromOtherDevices": "Odjavi se iz ostalih naprav",
"signOutOtherBody": "Če menite, da bi lahko kdo poznal vaše geslo, lahko vse druge naprave, ki uporabljajo vaš račun, prisilite, da se odjavijo.",
"signOutOtherDevices": "Odjavi ostale naprave",
"doNotSignOut": "Ne odjavi se",
"hearUsWhereTitle": "Kako ste slišali o Ente? (izbirno)",
"hearUsExplanation": "Namestitvam aplikacij ne sledimo. Pomagalo bi, če bi nam povedali, kje ste nas našli!",
"recoveryKeySaved": "Ključ za obnovitev je shranjen v mapi Prenosi!",
"waitingForBrowserRequest": "Čakanje na zahtevo brskalnika...",
"waitingForVerification": "Čakanje na potrditev...",
"passkey": "Passkey",
"passKeyPendingVerification": "Preverjanje še ni zaključeno",
"loginSessionExpired": "Seja je potekla",
"loginSessionExpiredDetails": "Vaša seja je potekla. Prosimo ponovno se prijavite.",
"developerSettingsWarning": "Ste prepričani, da želite spremeniti nastavitve za razvijalce.",
"developerSettings": "Nastavitve za razvijalce",
"serverEndpoint": "Endpoint strežnika",
"invalidEndpoint": "Nepravilen endpoint",
"invalidEndpointMessage": "Oprostite endpoint, ki ste ga vnesli ni bil pravilen. Prosimo, vnesite pravilen endpoint in poskusite znova.",
"endpointUpdatedMessage": "Endpoint posodobljen uspešno",
"customEndpoint": "Povezano na {endpoint}",
"pinText": "Pripni",
"unpinText": "Odpni",
"pinnedCodeMessage": "{code} je bila pripeta",
"unpinnedCodeMessage": "{code} je bila odpeta",
"tags": "Oznake",
"createNewTag": "Ustvari novo oznako",
"tag": "Oznaka",
"create": "Ustvari",
"editTag": "Uredi oznako",
"deleteTagTitle": "Izbriši oznako?",
"deleteTagMessage": "Ali ste prepričani, da želite izbrisati to oznako? To dejanje je nepovratno.",
"somethingWentWrongParsingCode": "Nismo mogli prebrati {x} kod.",
"updateNotAvailable": "Posodobitev ni na voljo",
"viewRawCodes": "Poglej neobdelane kode",
"rawCodes": "Neobdelane kode",
"rawCodeData": "Podatki neobdelanih kod",
"appLock": "Zaklep aplikacije",
"noSystemLockFound": "Nobeno zaklepanje sistema ni bilo najdeno",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Da omogočite zaklepanje aplikacije, prosimo nastavite kodo ali zaklepanje zaslona v sistemskih nastavitvah.",
"autoLock": "Samodejno zaklepanje",
"immediately": "Takoj",
"reEnterPassword": "Ponovno vnesite geslo",
"reEnterPin": "Ponovno vnesite PIN",
"next": "Naprej",
"tooManyIncorrectAttempts": "Preveč nepravilnih poskusov",
"tapToUnlock": "Kliknite za odklepanje",
"setNewPassword": "Nastavi novo geslo",
"deviceLock": "Zaklepanje naprave",
"hideContent": "Skrij vsebino",
"hideContentDescriptionAndroid": "Skrije vsebino aplikacije v menjalniku opravil in onemogoči posnetke zaslona",
"hideContentDescriptioniOS": "Skrije vsebino aplikacije v menjalniku opravil",
"autoLockFeatureDescription": "Čas po katerem se aplikacije zaklene, ko jo enkrat zapustite.",
"appLockDescription": "Izbirate lahko med privzetim zaklenjenim zaslonom naprave in zaklenjenim zaslonom po meri s kodo PIN ali geslom.",
"pinLock": "Zaklepanje s PIN",
"enterPin": "Vnesi PIN",
"setNewPin": "Nastavi nov PIN",
"importFailureDescNew": "Izbrane datoteke ni bilo mogoče prebrati",
"appLockNotEnabled": "Zaklepanje aplikacije ni omogočeno",
"appLockNotEnabledDescription": "Prosimo, omogočite zaklepanje aplikacije v Nastavitve > Zaklepanje Aplikacije (Security > App Lock)",
"authToViewPasskey": "Da vidite passkey, se overite",
"appLockOfflineModeWarning": "Odločili ste se, da boste nadaljevali brez varnostnih kopij. Če boste pozabili geslo za odklepanje aplikacije, bo dostop do vaših podatkov onemogočen."
}

View File

@@ -15,7 +15,10 @@
"pleaseVerifyDetails": "Kontrollera dina detaljer och försök igen",
"codeIssuerHint": "Utfärdare",
"codeSecretKeyHint": "Secret Key",
"all": "Alla",
"notes": "Anteckningar",
"codeAccountHint": "Konto (du@domän.com)",
"codeTagHint": "Tagg",
"sessionExpired": "Sessionen har gått ut",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -26,6 +29,7 @@
"nextTotpTitle": "nästa",
"deleteCodeTitle": "Radera kod?",
"deleteCodeMessage": "Vill du ta bort den här koden? Det går inte att ångra den här åtgärden.",
"trash": "Papperskorg",
"viewLogsAction": "Visa loggar",
"emailLogsTitle": "E-posta loggar",
"emailLogsMessage": "Skicka loggarna till {email}",
@@ -62,12 +66,19 @@
"welcomeBack": "Välkommen tillbaka!",
"changePassword": "Ändra lösenord",
"importCodes": "Importera koder",
"importFromApp": "Importera koder från {appName}",
"importSelectJsonFile": "Välj JSON-fil",
"exportCodes": "Exportera koder",
"importLabel": "Importera",
"selectFile": "Välj fil",
"authToViewYourRecoveryKey": "Autentisera för att visa din återställningsnyckel",
"authToChangeYourEmail": "Autentisera för att ändra din e-postadress",
"authToChangeYourPassword": "Autentisera för att ändra ditt lösenord",
"ok": "OK",
"cancel": "Avbryt",
"yes": "Ja",
"no": "Nej",
"support": "Support",
"settings": "Inställningar",
"pleaseTryAgain": "Försök igen",
"existingUser": "Befintlig användare",
@@ -79,6 +90,7 @@
"faq": "FAQ",
"scan": "Skanna",
"twoFactorAuthTitle": "Tvåfaktorsautentisering",
"verifyPasskey": "Verifiera nyckel",
"enterRecoveryKeyHint": "Ange din återställningsnyckel",
"invalidQRCode": "Ogiltig QR-kod",
"noRecoveryKeyTitle": "Ingen återställningsnyckel?",
@@ -96,6 +108,10 @@
"close": "Stäng",
"selectLanguage": "Välj språk",
"language": "Språk",
"security": "Säkerhet",
"lockscreen": "Låsskärm",
"viewActiveSessions": "Visa aktiva sessioner",
"authToViewYourActiveSessions": "Autentisera för att visa dina aktiva sessioner",
"searchHint": "Sök...",
"search": "Sök",
"sorryUnableToGenCode": "Tyvärr, det gick inte att generera en kod för {issuerName}",
@@ -104,6 +120,9 @@
"scanAQrCode": "Skanna en QR-kod",
"enterDetailsManually": "Ange uppgifter manuellt",
"edit": "Redigera",
"share": "Dela",
"shareCodes": "Dela koder",
"restore": "Återställ",
"copiedToClipboard": "Kopierat till urklipp",
"copiedNextToClipboard": "Kopierade nästa kod till urklipp",
"error": "Fel",
@@ -130,6 +149,7 @@
"privacyPolicyTitle": "Integritetspolicy",
"termsOfServicesTitle": "Villkor",
"encryption": "Kryptering",
"setPasswordTitle": "Ställ in lösenord",
"changePasswordTitle": "Ändra lösenord",
"resetPasswordTitle": "Återställ lösenord",
"encryptionKeys": "Krypteringsnycklar",
@@ -150,6 +170,7 @@
"about": "Om",
"terms": "Villkor",
"warning": "Varning",
"authToExportCodes": "Autentisera för att exportera dina koder",
"importSuccessDesc": "Du har importerat {count} koder!",
"@importSuccessDesc": {
"placeholders": {
@@ -165,10 +186,15 @@
"incorrectCode": "Felaktig kod",
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
"enterPassword": "Ange lösenord",
"selectExportFormat": "Välj exportformat",
"export": "Exportera",
"signInToBackup": "Logga in för att säkerhetskopiera dina koder",
"singIn": "Logga in",
"showLargeIcons": "Visa stora ikoner",
"shouldHideCode": "Dölj koder",
"editCodeAuthMessage": "Autentisera för att redigera kod",
"deleteCodeAuthMessage": "Autentisera för att radera kod",
"showQRAuthMessage": "Autentisera för att visa QR-kod",
"androidCancelButton": "Avbryt",
"@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."
@@ -180,7 +206,12 @@
"noInternetConnection": "Ingen internetanslutning",
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen.",
"signOutOtherDevices": "Logga ut andra enheter",
"passkey": "Nyckel",
"loginSessionExpiredDetails": "Din session har upphört. Logga in igen.",
"developerSettings": "Utvecklarinställningar",
"tags": "Taggar",
"createNewTag": "Skapa ny tagg",
"tag": "Tagg",
"create": "Skapa",
"editTag": "Redigera tagg",
"deleteTagTitle": "Radera tagg?",
@@ -190,9 +221,10 @@
"next": "Nästa",
"tooManyIncorrectAttempts": "För många felaktiga försök",
"tapToUnlock": "Tryck för att låsa upp",
"setNewPassword": "Ange nytt lösenord",
"setNewPassword": "Ställ in nytt lösenord",
"deviceLock": "Enhetslås",
"hideContent": "Dölj innehåll",
"enterPin": "Ange PIN-kod",
"setNewPin": "Ange ny PIN-kod"
"setNewPin": "Ställ in ny PIN-kod",
"authToViewPasskey": "Autentisera för att visa nyckel"
}

View File

@@ -120,19 +120,10 @@
"oops": "ዉዉኡ",
"suggestFeatures": "Suggest features",
"faq": "FAQ",
"faq_q_1": "Auth ክሳብ ክንደይ ውሑስ እዩ፧",
"faq_q_2": "Can I access my codes on desktop?",
"faq_a_2": "You can access your codes on the web @ auth.ente.io.",
"faq_q_3": "How can I delete codes?",
"faq_a_3": "You can delete a code by swiping left on that item.",
"faq_q_4": "How can I support this project?",
"faq_a_4": "You can support the development of this project by subscribing to our Photos app @ ente.io.",
"faq_a_5": "You can enable FaceID lock under Settings → Security → Lockscreen.",
"somethingWentWrongMessage": "Something went wrong, please try again",
"leaveFamily": "Leave family",
"leaveFamilyMessage": "Are you sure that you want to leave the family plan?",
"inFamilyPlanMessage": "You are on a family plan!",
"swipeHint": "Swipe left to edit or remove codes",
"scan": "Scan",
"scanACode": "Scan a code",
"verify": "Verify",

View File

@@ -19,6 +19,20 @@
"pleaseVerifyDetails": "Lütfen bilgileri doğrulayın ve tekrar deneyin",
"codeIssuerHint": "Yayınlayan",
"codeSecretKeyHint": "Gizli Anahtar",
"secret": "Gizli",
"all": "Tümü",
"notes": "Notlar",
"notesLengthLimit": "Notlar en fazla {count} karakter uzunluğunda olabilir",
"@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": "Hesap (ornek@domain.com)",
"codeTagHint": "Etiket",
"accountKeyType": "Anahtar türü",
@@ -34,6 +48,9 @@
"nextTotpTitle": "sonraki",
"deleteCodeTitle": "Kodu silmek istiyor musunuz?",
"deleteCodeMessage": "Bu kodu silmek istediğinize emin misiniz? Bu geri alınamaz bir işlemdir.",
"trashCode": "Kod çöpe atılsın mı?",
"trashCodeMessage": "{account} için kodu çöpe atmak istediğinize emin misiniz?",
"trash": "Çöp",
"viewLogsAction": "Günlüğü görüntüle",
"sendLogsDescription": "Günlüğünüz hatanızı çözmemize yardımcı olacaktır. Hassas bilginin kaydedilmediğine dikkat etsek de bu günlükleri paylaşmadan önce kontrol etmenizi isteriz.",
"preparingLogsTitle": "Günlük hazırlanıyor...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "E-posta doğrulama",
"emailVerificationEnableWarning": "E-postanız için 2FA'yı bizde saklıyorsanız, e-posta doğrulamasını açmak bir kilitlenmeye neden olabilir. Bir hizmetin dışında kalırsanız, diğerine giriş yapamayabilirsiniz.",
"authToChangeEmailVerificationSetting": "E-posta doğrulamasını değiştirmek için lütfen kimlik doğrulaması yapın",
"authenticateGeneric": "Lütfen doğrulama yapın",
"authToViewYourRecoveryKey": "Kurtarma anahtarınızı görmek için lütfen kimliğinizi doğrulayın",
"authToChangeYourEmail": "Epostanızı değiştirmek için lütfen kimliğinizi doğrulayın",
"authToChangeYourPassword": "Şifrenizi değiştirmek için lütfen kimliğinizi doğrulayın",
@@ -123,21 +141,12 @@
"oops": "Hay aksi",
"suggestFeatures": "Özellik önerin",
"faq": "SSS",
"faq_q_1": "Kimlik doğrulayıcı ne kadar güvenli?",
"faq_a_1": "Auth aracılığıyla yedeklediğiniz tüm kodlar uçtan uca şifrelenmiş olarak saklanır. Böylece kodlarınıza yalnızca siz erişebilirsiniz. Uygulamalarımız açık kaynaklıdır ve şifrelememiz dış denetimden geçmiştir.",
"faq_q_2": "Kodlarıma masaüstünden erişebilir miyim?",
"faq_a_2": "Kodlarınıza internet üzerinden @ auth.ente.io adresinden erişebilirsiniz.",
"faq_q_3": "Kodları nasıl silebilirim?",
"faq_a_3": "Bir kodu, o öğenin üzerinde sola kaydırarak silebilirsiniz.",
"faq_q_4": "Bu projeye nasıl destek olabilirim?",
"faq_a_4": "Fotoğraflar uygulamamıza @ ente.io abone olarak bu projenin geliştirilmesine destek olabilirsiniz.",
"faq_q_5": "Auth'ta FaceID kilidini nasıl etkinleştirebilirim",
"faq_a_5": "FaceID kilidini Ayarlar → Güvenlik → Kilit Ekranı altında etkinleştirebilirsiniz.",
"somethingWentWrongMessage": "Bir şeyler ters gitti, lütfen tekrar deneyin",
"leaveFamily": "Aile planından ayrıl",
"leaveFamilyMessage": "Aile planından ayrılmak istediğinize emin misiniz?",
"inFamilyPlanMessage": "Aile planı kullanıyorsunuz!",
"swipeHint": "Kodları düzenlemek ya da kaldırmak için sola kaydırın",
"hintForMobile": "Bir koda uzun basarak düzenleyin veya silin.",
"hintForDesktop": "Bir koda sağ tıklayıp düzenleyin veya silin.",
"scan": "Tara",
"scanACode": "Bir kodu tarayın",
"verify": "Doğrula",
@@ -193,6 +202,10 @@
"scanAQrCode": "Bir QR kod tarayın",
"enterDetailsManually": "Bilgileri elle girin",
"edit": "Düzenle",
"share": "Paylaş",
"shareCodes": "Kodları paylaş",
"shareCodesDuration": "Kodları paylaşma süresini seçin.",
"restore": "Geri yükle",
"copiedToClipboard": "Panoya kopyalandı",
"copiedNextToClipboard": "Sonraki kod panoya kopyalandı",
"error": "Hata",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "Geri yükleyebileceğiniz bir yedeğiniz olduğundan emin olmak için lütfen kodlarınızı dışa aktarın.",
"offlineModeWarning": "Yedekleme yapmadan devam etmeyi seçtiniz. Kodlarınızın güvende olduğundan emin olmak için lütfen manuel yedekleme yapın.",
"showLargeIcons": "Büyük simgeler göster",
"compactMode": "Sıkıştırılmış mod",
"shouldHideCode": "Kodları gizle",
"doubleTapToViewHiddenCode": "Kodu görüntülemek için bir girdiye çift dokunabilirsiniz",
"focusOnSearchBar": "Uygulama başladığında arama bölümüne odaklan",
@@ -466,5 +480,7 @@
"pinLock": "Pin kilidi",
"enterPin": "PIN Girin",
"setNewPin": "Yeni PIN belirleyin",
"importFailureDescNew": "Seçilen dosya ayrıştırılamadı."
"importFailureDescNew": "Seçilen dosya ayrıştırılamadı.",
"appLockNotEnabled": "Uygulama kilidi etkin değil",
"appLockNotEnabledDescription": "Uygulama kilidini Güvenlik -> Uygulama Kilidi üzerinden etkinleştirin"
}

View File

@@ -19,6 +19,20 @@
"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": "Обліковий запис (you@domain.com)",
"codeTagHint": "Мітка",
"accountKeyType": "Тип ключа",
@@ -34,6 +48,9 @@
"nextTotpTitle": "далі",
"deleteCodeTitle": "Видалити код?",
"deleteCodeMessage": "Ви впевнені, що хочете видалити цей код? Ця дія є незворотною.",
"trashCode": "Смітник?",
"trashCodeMessage": "Ви дійсно бажаєте смітити для {account}?",
"trash": "Кошик",
"viewLogsAction": "Переглянути журнали",
"sendLogsDescription": "Це надішле журнали, щоб допомогти нам зневадити проблему. Хоча ми вживаємо запобіжні заходи для того, щоб ніяка чутлива інформація не була переслана, ми рекомендуємо вам переглянути ці журнали, перш ніж поділитися ними.",
"preparingLogsTitle": "Підготовка журналів...",
@@ -100,6 +117,7 @@
"emailVerificationToggle": "Підтвердження адреси електронної пошти",
"emailVerificationEnableWarning": "Щоб уникнути блокування доступу до свого облікового запису, обов’язково збережіть копію двофакторної аутентифікації до своєї електронної пошти за межами Ente Auth, перш ніж увімкнути перевірку електронної пошти.",
"authToChangeEmailVerificationSetting": "Будь ласка, пройдіть аутентифікацію, щоб змінити перевірку адреси електронної пошти",
"authenticateGeneric": "Будь ласка, авторизуйтеся",
"authToViewYourRecoveryKey": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваш ключ відновлення",
"authToChangeYourEmail": "Будь ласка, пройдіть аутентифікацію, щоб змінити адресу електронної пошти",
"authToChangeYourPassword": "Будь ласка, пройдіть аутентифікацію, щоб змінити ваш пароль",
@@ -123,21 +141,12 @@
"oops": "От халепа",
"suggestFeatures": "Запропонувати нові функції",
"faq": "Часто Запитувані Питання",
"faq_q_1": "Наскільки безпечним є Auth?",
"faq_a_1": "Всі коди, які ви зберігаєте в Auth, кодуються наскрізним захистом. Це означає, що тільки ви можете отримати доступ до ваших кодів. Наші програми мають відкритий вихідний код, і наша криптографія була перевірена зовнішніми аудиторами.",
"faq_q_2": "Чи я можу отримати доступ до своїх кодів на настільному комп'ютері?",
"faq_a_2": "Ви можете отримати доступ до ваших кодів у веб на auth.ente.io.",
"faq_q_3": "Як я можу видалити коди?",
"faq_a_3": "Ви можете видалити код, провівши пальцем вліво на цьому елементі.",
"faq_q_4": "Як я можу підтримати цей проект?",
"faq_a_4": "Ви можете підтримати розробку цього проекту, підписавшись на наш додаток Photos на ente.io.",
"faq_q_5": "Як я можу активувати розблокування за допомогою FaceID в Auth",
"faq_a_5": "Ви можете активувати розблокування за допомогою FaceID у Налаштування → Безпека → Блокування екрану.",
"somethingWentWrongMessage": "Щось пішло не так, спробуйте, будь ласка, знову",
"leaveFamily": "Залишити сімейний план",
"leaveFamilyMessage": "Ви впевнені, що хочете залишити сімейний план?",
"inFamilyPlanMessage": "Ви знаходитесь на сімейному плані!",
"swipeHint": "Проведіть пальцем вліво, щоб редагувати або видаляти коди",
"hintForMobile": "Натисніть і утримуйте код для редагування чи видалення.",
"hintForDesktop": "Клікніть правою кнопкою миші по коду для редагування чи видалення.",
"scan": "Сканувати",
"scanACode": "Сканувати код",
"verify": "Перевірити",
@@ -182,6 +191,7 @@
"security": "Безпека",
"lockscreen": "Екран блокування",
"authToChangeLockscreenSetting": "Будь ласка, авторизуйтесь для зміни налаштувань екрану блокування",
"deviceLockEnablePreSteps": "Для увімкнення блокування програми, будь ласка, налаштуйте пароль пристрою або блокування екрана в системних налаштуваннях.",
"viewActiveSessions": "Показати активні сеанси",
"authToViewYourActiveSessions": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваші активні сеанси",
"searchHint": "Пошук...",
@@ -192,6 +202,10 @@
"scanAQrCode": "Сканувати QR-код",
"enterDetailsManually": "Введіть дані вручну",
"edit": "Редагувати",
"share": "Поділитись",
"shareCodes": "Поділитися кодами",
"shareCodesDuration": "Виберіть тривалість, протягом якої ви хочете поділитися кодом.",
"restore": "Відновити",
"copiedToClipboard": "Скопійовано до буфера обміну",
"copiedNextToClipboard": "Наступний код скопійовано до буфера обміну",
"error": "Помилка",
@@ -202,7 +216,7 @@
"saveKey": "Зберегти ключ",
"save": "Зберегти",
"send": "Надіслати",
"saveOrSendDescription": "Чи хочете Ви зберегти це до свого сховища (тека Downloads за замовчуванням), чи надіслати його в інші додатки?",
"saveOrSendDescription": "Чи хочете ви зберегти це до свого сховища (типово тека Downloads), чи надіслати його в інші застосунки?",
"saveOnlyDescription": "Чи хочете Ви зберегти це до свого сховища (тека Downloads за замовчуванням)?",
"back": "Назад",
"createAccount": "Створити обліковий запис",
@@ -265,8 +279,8 @@
"networkHostLookUpErr": "Не вдалося приєднатися до Ente. Будь ласка, перевірте налаштування мережі. Зверніться до нашої команди підтримки, якщо помилка залишиться.",
"networkConnectionRefusedErr": "Не вдалося приєднатися до Ente. Будь ласка, спробуйте ще раз через деякий час. Якщо помилка не зникне, зв'яжіться з нашою командою підтримки.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Схоже, що щось пішло не так. Будь ласка, спробуйте ще раз через деякий час. Якщо помилка не зникне, зв'яжіться з нашою командою підтримки.",
"about": "Про додаток",
"weAreOpenSource": "Наш додаток має відкритий код!",
"about": "Про застосунок",
"weAreOpenSource": "Наш застосунок має відкритий код!",
"privacy": "Конфіденційність",
"terms": "Умови",
"checkForUpdates": "Перевiрити наявнiсть оновлень",
@@ -345,6 +359,7 @@
"sigInBackupReminder": "Будь ласка, експортуйте свої коди, щоб зберегти резервну копію, з якої ви зможете їх відновити.",
"offlineModeWarning": "Ви збираєтеся продовжити без резервних копій. Будь ласка, зробіть ручну резервну копію, щоб переконатися, що ваші коди в безпеці.",
"showLargeIcons": "Показувати великі іконки",
"compactMode": "Стислий режим",
"shouldHideCode": "Приховати коди",
"doubleTapToViewHiddenCode": "Ви можете двічі натиснути на запис для перегляду коду",
"focusOnSearchBar": "Сфокусуватися на пошуку після запуску програми",
@@ -414,7 +429,7 @@
"signOutOtherDevices": "Вийти на інших пристроях",
"doNotSignOut": "Не виходити",
"hearUsWhereTitle": "Як ви дізналися про Ente? (опціонально)",
"hearUsExplanation": "Ми не відстежуємо встановлення додатків. Але, якщо ви скажете нам, де ви нас знайшли, це допоможе!",
"hearUsExplanation": "Ми не відстежуємо встановлення застосунків. Але, якщо ви скажете нам, де ви нас знайшли, це допоможе!",
"recoveryKeySaved": "Ключ відновлення збережений у теці Downloads!",
"waitingForBrowserRequest": "Очікування запиту браузера...",
"waitingForVerification": "Очікується підтвердження...",
@@ -457,13 +472,17 @@
"tapToUnlock": "Доторкніться, щоб розблокувати",
"setNewPassword": "Встановити новий пароль",
"deviceLock": "Блокування пристрою",
"hideContent": "Приховати зміст",
"hideContentDescriptionAndroid": "Приховує зміст програми в перемикачі програм і вимикає скриншоти",
"hideContentDescriptioniOS": "Приховує зміст в перемикачі додатків",
"autoLockFeatureDescription": "Час, через який додаток буде заблоковано після розміщення у фоновому режимі",
"hideContent": "Приховати вміст",
"hideContentDescriptionAndroid": "Приховує вміст програми у перемикачі застосунків і вимикає знімки екрану",
"hideContentDescriptioniOS": "Приховує вміст у перемикачі застосунків",
"autoLockFeatureDescription": "Час, через який застосунок буде заблоковано після розміщення у фоновому режимі",
"appLockDescription": "Виберіть між типовим екраном блокування вашого пристрою та власним екраном блокування з PIN-кодом або паролем.",
"pinLock": "PIN-код",
"enterPin": "Введіть PIN-код",
"setNewPin": "Встановити новий PIN-код",
"importFailureDescNew": "Не вдалося обробити вибраний файл."
"importFailureDescNew": "Не вдалося обробити вибраний файл.",
"appLockNotEnabled": "Блокування програм не увімкнено",
"appLockNotEnabledDescription": "Увімкніть блокування програм від безпеки > Блокування програм",
"authToViewPasskey": "Будь ласка, авторизуйтеся для перегляду ключа доступу",
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано."
}

View File

@@ -122,21 +122,10 @@
"oops": "Rất tiếc",
"suggestFeatures": "Tính năng đề nghị",
"faq": "Câu hỏi thường gặp",
"faq_q_1": "Mức độ an toàn của ente như thế nào?",
"faq_a_1": "Tất cả các mã bạn sao lưu qua ente đều được lưu trữ dưới dạng mã hóa đầu cuối. Điều này có nghĩa là chỉ bạn mới có thể truy cập mã của mình. Ứng dụng của chúng tôi là mã nguồn mở và data của chúng tôi đã được bảo mật hoàn toàn.",
"faq_q_2": "Tôi có thể truy cập mã của mình trên máy tính không?",
"faq_a_2": "Bạn có thể truy cập mã của mình trên web @ auth.ente.io.",
"faq_q_3": "Làm cách nào để xóa mã?",
"faq_a_3": "Bạn có thể xóa mã bằng cách vuốt sang trái vào mục đó.",
"faq_q_4": "Tôi có thể hỗ trợ dự án này như thế nào?",
"faq_a_4": "Bạn có thể hỗ trợ sự phát triển của dự án này bằng cách đăng ký ứng dụng Ảnh @ ente.io của chúng tôi.",
"faq_q_5": "Làm sao để tôi bật FaceID trong ente",
"faq_a_5": "Bạn có thể bật khóa FaceID trong Cài đặt → Bảo mật → Màn hình khóa.",
"somethingWentWrongMessage": "Đã xảy ra lỗi, xin thử lại",
"leaveFamily": "Rời khỏi gia đình",
"leaveFamilyMessage": "Bạn có chắc chắn muốn thoát khỏi gói dành cho gia đình không?",
"inFamilyPlanMessage": "Bạn đang sử dụng gói dành cho gia đình!",
"swipeHint": "Vuốt sang trái để chỉnh sửa hoặc xóa mã",
"scan": "Quét",
"scanACode": "Quét mã",
"verify": "Xác minh",
@@ -200,6 +189,8 @@
"saveKey": "Lưu khóa",
"save": "Lưu",
"send": "Gửi",
"saveOrSendDescription": "Bạn có muốn lưu vào bộ nhớ (Mặc định lưu vào thư mục Tải về) hoặc chuyển qua ứng dụng khác?",
"saveOnlyDescription": "Bạn có muốn lưu vào bộ nhớ không (Mặc định lưu vào thư mục Tải về)?",
"back": "Quay lại",
"createAccount": "Tạo tài khoản",
"passwordStrength": "Độ mạnh mật khẩu: {passwordStrengthValue}",
@@ -266,6 +257,7 @@
"privacy": "Riêng tư",
"terms": "Điều khoản",
"checkForUpdates": "Kiểm tra cập nhật",
"checkStatus": "Kiểm tra trạng thái",
"downloadUpdate": "Tải xuống",
"criticalUpdateAvailable": "Đã có bản cập nhật quan trọng",
"updateAvailable": "Đã có bản cập nhật",
@@ -411,13 +403,20 @@
"hearUsWhereTitle": "Bạn biết đến Ente bằng cách nào? (không bắt buộc)",
"hearUsExplanation": "Chúng tôi không theo dõi lượt cài đặt ứng dụng. Sẽ rất hữu ích nếu bạn cho chúng tôi biết nơi bạn tìm thấy chúng tôi!",
"recoveryKeySaved": "Đã lưu khoá dự phòng vào thư mục Tải về!",
"waitingForBrowserRequest": "Đang chờ yêu cầu từ trình duyệt...",
"waitingForVerification": "Đang chờ xác thực",
"passKeyPendingVerification": "Đang chờ xác thực",
"loginSessionExpired": "Phiên làm việc hết hạn",
"loginSessionExpiredDetails": "Phiên làm việc hết hạn. Vui lòng đăng nhập lại.",
"developerSettingsWarning": "Bạn có chắc chắn muốn thay đổi Tuỳ chọn cho nhà phát triển không?",
"developerSettings": "Cài đặt cho nhà phát triển",
"invalidEndpoint": "Điểm cuối không hợp lệ",
"endpointUpdatedMessage": "Cập nhật điểm cuối thành công",
"customEndpoint": "Đã kết nối đến",
"pinText": "Ghim",
"unpinText": "Bỏ ghim",
"pinnedCodeMessage": "{code} đã được ghim",
"unpinnedCodeMessage": "{code} đã được bỏ ghim",
"tags": "Thẻ",
"createNewTag": "Tạo thẻ mới",
"tag": "Thẻ",
@@ -428,7 +427,10 @@
"updateNotAvailable": "Cập nhật không khả dụng",
"viewRawCodes": "Xem mã nguồn",
"rawCodes": "Mã nguồn",
"rawCodeData": "Dữ liệu thô",
"appLock": "Khóa ứng dụng",
"noSystemLockFound": "Không thấy khoá hệ thống",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Để bật khoá ứng dụng, vui lòng thiết lập mật khẩu thiết bị hoặc khóa màn hình trong cài đặt hệ thống của bạn.",
"autoLock": "Tự động khóa",
"immediately": "Tức thì",
"reEnterPassword": "Nhập lại mật khẩu",
@@ -441,7 +443,10 @@
"hideContent": "Ẩn nội dung",
"hideContentDescriptionAndroid": "Ẩn nội dung khi chuyển ứng dụng và chặn chụp màn hình",
"hideContentDescriptioniOS": "Ẩn nội dung khi chuyển ứng dụng",
"autoLockFeatureDescription": "Thời gian ứng dụng tự khoá sau khi ở trạng thái nền",
"appLockDescription": "Chọn giữa màn hình khoá mặc định của thiết bị và màn hình khoá tự chọn dùng mã PIN hoặc mật khẩu.",
"pinLock": "Mã PIN",
"enterPin": "Nhập mã PIN",
"setNewPin": "Đổi mã PIN"
"setNewPin": "Đổi mã PIN",
"importFailureDescNew": "Không thể phân tích file đã chọn."
}

View File

@@ -6,7 +6,7 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "妥善保管您的 2FA代码",
"onBoardingBody": "妥善保管您的两步验证码",
"onBoardingGetStarted": "开始",
"setupFirstAccount": "设置您的第一个账户",
"importScanQrCode": "扫描二维码",
@@ -18,7 +18,21 @@
"incorrectDetails": "详细信息不正确",
"pleaseVerifyDetails": "请验证详细信息并重试",
"codeIssuerHint": "发行人",
"codeSecretKeyHint": "钥",
"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": "账户 (you@domain.com)",
"codeTagHint": "标签",
"accountKeyType": "密钥类型",
@@ -34,6 +48,9 @@
"nextTotpTitle": "下一个",
"deleteCodeTitle": "要删除代码吗?",
"deleteCodeMessage": "您确定要删除此代码吗?此操作不可逆。",
"trashCode": "要删除代码吗?",
"trashCodeMessage": "您确定要删除 {account} 的代码吗?",
"trash": "删除",
"viewLogsAction": "查看日志",
"sendLogsDescription": "这将发送日志以帮助我们调试您的问题。虽然我们采取预防措施确保不记录敏感信息,但我们建议您在共享这些日志之前先查看它们。",
"preparingLogsTitle": "正在准备日志...",
@@ -71,8 +88,8 @@
"useRecoveryKey": "使用恢复密钥",
"incorrectPasswordTitle": "密码错误",
"welcomeBack": "欢迎回来!",
"madeWithLoveAtPrefix": "用❤️制 ",
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持此项目。",
"madeWithLoveAtPrefix": "用❤️制 ",
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持我们",
"supportDiscount": "使用优惠码“AUTH”可享受首年 10% 折扣",
"changeEmail": "修改邮箱",
"changePassword": "修改密码",
@@ -95,11 +112,12 @@
"exportCodes": "导出代码",
"importLabel": "导入",
"importInstruction": "请选择一个包含以下格式的代码列表的文件",
"importCodeDelimiterInfo": "代码可以用逗号或新行分隔",
"importCodeDelimiterInfo": "代码可以用逗号或换行符分隔",
"selectFile": "选择文件",
"emailVerificationToggle": "电子邮件验证",
"emailVerificationEnableWarning": "为避免被锁在您的账户之外,请在启用电子邮件验证之前确保在 Ente Auth 之外存储电子邮件双重验证的副本。",
"emailVerificationEnableWarning": "为避免被锁在您的账户之外,请在启用电子邮件验证之前确保在 Ente Auth 之外存储电子邮件两步验证的副本。",
"authToChangeEmailVerificationSetting": "请进行身份验证以更改电子邮件验证",
"authenticateGeneric": "请验证",
"authToViewYourRecoveryKey": "请验证以查看您的恢复密钥",
"authToChangeYourEmail": "请验证以更改您的电子邮件",
"authToChangeYourPassword": "请验证以更改密码",
@@ -123,29 +141,20 @@
"oops": "哎呀",
"suggestFeatures": "建议新功能",
"faq": "常见问题",
"faq_q_1": "Auth 的安全性如何?",
"faq_a_1": "您通过 Auth 备份的所有代码均以端到端加密方式存储。这意味着只有您可以访问您的代码。我们的应用程序是开源的并且我们的加密技术已经过外部审计。",
"faq_q_2": "我可以在桌面设备上访问我的代码吗?",
"faq_a_2": "您可以在网页 auth.ente.io 上访问您的代码。",
"faq_q_3": "我如何删除代码?",
"faq_a_3": "您可以通过向左滑动该项目来删除该代码。",
"faq_q_4": "我该如何支持该项目?",
"faq_a_4": "您可以通过订阅我们的照片应用程序@ente.io来支持该项目的开发。",
"faq_q_5": "我如何启用 Auth 中的面容 ID 锁",
"faq_a_5": "您可以在“设置”→“安全”→“锁屏”下启用 FaceID 锁定。",
"somethingWentWrongMessage": "出了点问题,请重试",
"leaveFamily": "离开家庭",
"leaveFamilyMessage": "您确定要离开家庭计划吗?",
"inFamilyPlanMessage": "你在一个家庭计划中!",
"swipeHint": "向左滑动以编辑或删除代码",
"hintForMobile": "长按代码即可编辑或删除",
"hintForDesktop": "右键单击代码即可编辑或删除。",
"scan": "扫描",
"scanACode": "扫描代码",
"verify": "验证",
"verifyEmail": "验证电子邮件",
"enterCodeHint": "从你的身份验证器应用中\n输入6位数字代码",
"lostDeviceTitle": "丢失了设备吗?",
"twoFactorAuthTitle": "双重认证",
"passkeyAuthTitle": "通行密钥证",
"twoFactorAuthTitle": "两步验证",
"passkeyAuthTitle": "通行密钥证",
"verifyPasskey": "验证通行密钥",
"recoverAccount": "恢复账户",
"enterRecoveryKeyHint": "输入您的恢复密钥",
@@ -166,7 +175,7 @@
"deleteAccount": "删除账户",
"deleteAccountQuery": "我们很抱歉看到您离开。您面临一些问题?",
"yesSendFeedbackAction": "是,发送反馈",
"noDeleteAccountAction": ",删除账户",
"noDeleteAccountAction": ",删除账户",
"initiateAccountDeleteTitle": "请进行身份验证以启动账户删除",
"sendEmail": "发送电子邮件",
"createNewAccount": "创建新账号",
@@ -175,10 +184,10 @@
"moderateStrength": "中等",
"confirmPassword": "请确认密码",
"close": "关闭",
"oopsSomethingWentWrong": "哎呀,似乎出了点问题.",
"oopsSomethingWentWrong": "哎呀,出了点问题",
"selectLanguage": "选择语言",
"language": "语言",
"social": "社交",
"social": "社交媒体",
"security": "安全",
"lockscreen": "锁屏",
"authToChangeLockscreenSetting": "请验证以更改锁屏设置",
@@ -188,11 +197,15 @@
"searchHint": "搜索...",
"search": "搜索",
"sorryUnableToGenCode": "对不起,无法为 {issuerName} 生成代码",
"noResult": "没有结果",
"noResult": "结果",
"addCode": "添加代码",
"scanAQrCode": "扫描二维码",
"enterDetailsManually": "手动输入详细信息",
"edit": "编辑",
"share": "分享",
"shareCodes": "分享代码",
"shareCodesDuration": "选择您要分享代码的期限。",
"restore": "恢复",
"copiedToClipboard": "已复制到剪贴板",
"copiedNextToClipboard": "已将下一个代码复制到剪贴板",
"error": "错误",
@@ -222,7 +235,7 @@
"password": "密码",
"signUpTerms": "我同意 <u-terms>服务条款</u-terms> 和 <u-policy>隐私政策</u-policy>",
"privacyPolicyTitle": "隐私政策",
"termsOfServicesTitle": "使用条款",
"termsOfServicesTitle": "服务条款",
"encryption": "加密",
"setPasswordTitle": "设置密码",
"changePasswordTitle": "修改密码",
@@ -267,9 +280,9 @@
"networkConnectionRefusedErr": "无法连接到 Ente请稍后重试。如果错误仍然存请联系支持人员。",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "看起来出了点问题。 请稍后重试。 如果错误仍然存在,请联系我们的支持团队。",
"about": "关于",
"weAreOpenSource": "我们是开源的 ",
"weAreOpenSource": "我们是开源的!",
"privacy": "隐私",
"terms": "使用条款",
"terms": "条款",
"checkForUpdates": "检查更新",
"checkStatus": "检查状态",
"downloadUpdate": "下载",
@@ -297,7 +310,7 @@
}
},
"sorry": "抱歉",
"importFailureDesc": "无法解析选定的文件。\n如果您需要帮助写入support@ente.io",
"importFailureDesc": "无法解析选文件。\n如果您需要帮助发邮件给 support@ente.io",
"pendingSyncs": "警告",
"pendingSyncsWarningBody": "您的一些代码尚未备份。\n\n请确保您在登出之前备份这些代码。",
"checkInboxAndSpamFolder": "请检查您的收件箱 (或者是在您的“垃圾邮件”列表内) 以完成验证",
@@ -330,7 +343,7 @@
"emailChangedTo": "电子邮件已更改为 {newEmail}",
"authenticationFailedPleaseTryAgain": "认证失败,请重试",
"authenticationSuccessful": "认证成功!",
"twofactorAuthenticationSuccessfullyReset": "双重认证已成功重置",
"twofactorAuthenticationSuccessfullyReset": "两步验证已成功重置",
"incorrectRecoveryKey": "恢复密钥不正确",
"theRecoveryKeyYouEnteredIsIncorrect": "您输入的恢复密钥不正确",
"enterPassword": "输入密码",
@@ -346,6 +359,7 @@
"sigInBackupReminder": "请导出您的代码以确保您有可以恢复的备份。",
"offlineModeWarning": "您已选择在不进行备份的情况下继续操作。请手动备份以确保您的代码安全。",
"showLargeIcons": "显示大图标",
"compactMode": "紧凑模式",
"shouldHideCode": "隐藏代码",
"doubleTapToViewHiddenCode": "您可以双击条目来查看代码",
"focusOnSearchBar": "应用启动后聚焦搜索",
@@ -353,7 +367,7 @@
"minimizeAppOnCopy": "复制时最小化应用",
"editCodeAuthMessage": "编辑代码需要身份验证",
"deleteCodeAuthMessage": "删除代码需要身份验证",
"showQRAuthMessage": "显示QR码需要身份验证",
"showQRAuthMessage": "显示二维码需要身份验证",
"confirmAccountDeleteTitle": "确认删除账户",
"confirmAccountDeleteMessage": "如果您使用其他 Ente 应用程序,该账户将会与其他应用程序链接。\n\n在所有 Ente 应用程序中,您上传的数据将被安排用于删除,并且您的账户将被永久删除。",
"androidBiometricHint": "验证身份",
@@ -466,5 +480,9 @@
"pinLock": "Pin 锁定",
"enterPin": "输入 PIN 码",
"setNewPin": "设置新 PIN 码",
"importFailureDescNew": "无法解析选定的文件。"
"importFailureDescNew": "无法解析选定的文件。",
"appLockNotEnabled": "应用锁未启用",
"appLockNotEnabledDescription": "请从“安全”>“应用锁”启用应用锁",
"authToViewPasskey": "请验证身份以查看通行密钥",
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。"
}

View File

@@ -5,7 +5,10 @@ import 'package:shared_preferences/shared_preferences.dart';
// Add more language to the list only when at least 90% of the strings are
// translated in the corresponding language.
const List<Locale> appSupportedLocales = <Locale>[
Locale('ar'),
Locale('bg'),
Locale('de'),
Locale('el'),
Locale('en'),
Locale('es', 'ES'),
Locale('fa'),
@@ -16,8 +19,10 @@ const List<Locale> appSupportedLocales = <Locale>[
Locale('pl'),
Locale('pt', 'BR'),
Locale('ru'),
Locale('sk'),
Locale('tr'),
Locale('uk'),
Locale('vi'),
Locale("zh", "CN"),
];

View File

@@ -7,7 +7,6 @@ import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/core/constants.dart';
import 'package:ente_auth/core/logging/super_logging.dart';
import 'package:ente_auth/core/network.dart';
import 'package:ente_auth/core/win_http_client.dart';
import 'package:ente_auth/ente_theme_data.dart';
import 'package:ente_auth/locale.dart';
import 'package:ente_auth/services/authenticator_service.dart';
@@ -65,9 +64,6 @@ Future<void> initSystemTray() async {
void main() async {
WidgetsFlutterBinding.ensureInitialized();
if (Platform.isWindows) {
HttpOverrides.global = WindowsHttpOverrides();
}
if (PlatformUtil.isDesktop()) {
await windowManager.ensureInitialized();

View File

@@ -27,9 +27,15 @@ class Code {
bool get isPinned => display.pinned;
bool get isTrashed => display.trashed;
String get note => display.note;
final Object? err;
bool get hasError => err != null;
String get issuerAccount =>
account.isNotEmpty ? '$issuer ($account)' : issuer;
Code(
this.account,
this.issuer,
@@ -81,6 +87,7 @@ class Code {
final Type updatedType = type ?? this.type;
final int updatedCounter = counter ?? this.counter;
final CodeDisplay updatedDisplay = display ?? this.display;
final String encodedIssuer = Uri.encodeQueryComponent(updateIssuer);
return Code(
updateAccount,
@@ -92,7 +99,7 @@ class Code {
updatedType,
updatedCounter,
"otpauth://${updatedType.name}/$updateIssuer:$updateAccount?algorithm=${updatedAlgo.name}"
"&digits=$updatedDigits&issuer=$updateIssuer"
"&digits=$updatedDigits&issuer=$encodedIssuer"
"&period=$updatePeriod&secret=$updatedSecret${updatedType == Type.hotp ? "&counter=$updatedCounter" : ""}",
generatedID: generatedID,
display: updatedDisplay,
@@ -107,6 +114,7 @@ class Code {
CodeDisplay? display,
int digits,
) {
final String encodedIssuer = Uri.encodeQueryComponent(issuer);
return Code(
account,
issuer,
@@ -116,7 +124,7 @@ class Code {
Algorithm.sha1,
type,
0,
"otpauth://${type.name}/$issuer:$account?algorithm=SHA1&digits=$digits&issuer=$issuer&period=30&secret=$secret",
"otpauth://${type.name}/$issuer:$account?algorithm=SHA1&digits=$digits&issuer=$encodedIssuer&period=30&secret=$secret",
display: display ?? CodeDisplay(),
);
}
@@ -124,7 +132,7 @@ class Code {
static Code fromOTPAuthUrl(String rawData, {CodeDisplay? display}) {
Uri uri = Uri.parse(rawData);
final issuer = _getIssuer(uri);
final account = _getAccount(uri);
final account = _getAccount(uri, issuer);
try {
final code = Code(
@@ -155,7 +163,7 @@ class Code {
}
}
static String _getAccount(Uri uri) {
static String _getAccount(Uri uri, String issuer) {
try {
String path = Uri.decodeComponent(uri.path);
if (path.startsWith("/")) {
@@ -166,8 +174,14 @@ class Code {
if (uri.queryParameters.containsKey("issuer") && !path.contains(":")) {
return path;
}
return path.split(':')[1];
} catch (e) {
// handle case where issuer name contains colon
if (path.startsWith('$issuer:')) {
return path.substring(issuer.length + 1);
}
return path
.substring(path.indexOf(':') + 1); // return data after first colon
} catch (e, s) {
Logger('_getAccount').severe('Error while parsing account', e, s);
return "";
}
}

View File

@@ -9,6 +9,7 @@ class CodeDisplay {
final bool trashed;
final int lastUsedAt;
final int tapCount;
String note;
final List<String> tags;
CodeDisplay({
@@ -17,6 +18,7 @@ class CodeDisplay {
this.lastUsedAt = 0,
this.tapCount = 0,
this.tags = const [],
this.note = '',
});
// copyWith
@@ -26,12 +28,14 @@ class CodeDisplay {
int? lastUsedAt,
int? tapCount,
List<String>? tags,
String? note,
}) {
final bool updatedPinned = pinned ?? this.pinned;
final bool updatedTrashed = trashed ?? this.trashed;
final int updatedLastUsedAt = lastUsedAt ?? this.lastUsedAt;
final int updatedTapCount = tapCount ?? this.tapCount;
final List<String> updatedTags = tags ?? this.tags;
final String updatedNote = note ?? this.note;
return CodeDisplay(
pinned: updatedPinned,
@@ -39,6 +43,7 @@ class CodeDisplay {
lastUsedAt: updatedLastUsedAt,
tapCount: updatedTapCount,
tags: updatedTags,
note: updatedNote,
);
}
@@ -52,6 +57,7 @@ class CodeDisplay {
lastUsedAt: json['lastUsedAt'] ?? 0,
tapCount: json['tapCount'] ?? 0,
tags: List<String>.from(json['tags'] ?? []),
note: json['note'] ?? '',
);
}
@@ -92,6 +98,7 @@ class CodeDisplay {
'lastUsedAt': lastUsedAt,
'tapCount': tapCount,
'tags': tags,
'note': note,
};
}
@@ -104,6 +111,7 @@ class CodeDisplay {
other.trashed == trashed &&
other.lastUsedAt == lastUsedAt &&
other.tapCount == tapCount &&
other.note == note &&
listEquals(other.tags, tags);
}
@@ -113,6 +121,7 @@ class CodeDisplay {
trashed.hashCode ^
lastUsedAt.hashCode ^
tapCount.hashCode ^
note.hashCode ^
tags.hashCode;
}
}

View File

@@ -0,0 +1,25 @@
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:flutter/material.dart';
class FieldLabel extends StatelessWidget {
final String label;
const FieldLabel(
this.label, {
super.key,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(right: 12.0),
child: SizedBox(
width: 80,
child: Text(
label,
style: getEnteTextTheme(context).miniBoldMuted,
),
),
);
}
}

View File

@@ -10,6 +10,7 @@ class TagChip extends StatelessWidget {
final VoidCallback? onTap;
final TagChipState state;
final TagChipAction action;
final IconData? iconData;
const TagChip({
super.key,
@@ -17,11 +18,16 @@ class TagChip extends StatelessWidget {
this.state = TagChipState.unselected,
this.action = TagChipAction.none,
this.onTap,
this.iconData,
});
@override
Widget build(BuildContext context) {
final colorScheme = getEnteColorScheme(context);
final color = state == TagChipState.selected ||
Theme.of(context).brightness == Brightness.dark
? Colors.white
: colorScheme.tagTextUnselectedColor;
return GestureDetector(
onTap: onTap,
@@ -51,15 +57,24 @@ class TagChip extends StatelessWidget {
data: MediaQuery.of(context).copyWith(
textScaler: const TextScaler.linear(1),
),
child: Text(
label,
style: TextStyle(
color: state == TagChipState.selected ||
Theme.of(context).brightness == Brightness.dark
? Colors.white
: colorScheme.tagTextUnselectedColor,
fontSize: 14,
),
child: Row(
children: [
if (iconData != null) ...[
Icon(
iconData,
size: 16,
color: color,
),
const SizedBox(width: 8),
],
Text(
label,
style: TextStyle(
color: color,
fontSize: 14,
),
),
],
),
),
if (state == TagChipState.selected &&

View File

@@ -8,13 +8,17 @@ import 'package:ente_auth/models/code_display.dart';
import 'package:ente_auth/onboarding/model/tag_enums.dart';
import 'package:ente_auth/onboarding/view/common/add_chip.dart';
import 'package:ente_auth/onboarding/view/common/add_tag.dart';
import 'package:ente_auth/onboarding/view/common/field_label.dart';
import 'package:ente_auth/onboarding/view/common/tag_chip.dart';
import 'package:ente_auth/store/code_display_store.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
import 'package:ente_auth/ui/components/models/button_result.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/toast_util.dart';
import 'package:ente_auth/utils/totp_util.dart';
import "package:flutter/material.dart";
import 'package:logging/logging.dart';
class SetupEnterSecretKeyPage extends StatefulWidget {
final Code? code;
@@ -27,11 +31,15 @@ class SetupEnterSecretKeyPage extends StatefulWidget {
}
class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
final Logger _logger = Logger('_SetupEnterSecretKeyPageState');
final int _notesLimit = 500;
final int _otherTextLimit = 200;
late TextEditingController _issuerController;
late TextEditingController _accountController;
late TextEditingController _secretController;
late TextEditingController _notesController;
late bool _secretKeyObscured;
late List<String> tags = [...?widget.code?.display.tags];
late List<String> selectedTags = [...?widget.code?.display.tags];
List<String> allTags = [];
StreamSubscription<CodesUpdatedEvent>? _streamSubscription;
@@ -47,17 +55,52 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
_secretController = TextEditingController(
text: widget.code?.secret,
);
_notesController = TextEditingController(
text: widget.code?.display.note,
);
_secretKeyObscured = widget.code != null;
_loadTags();
_streamSubscription = Bus.instance.on<CodesUpdatedEvent>().listen((event) {
_loadTags();
});
_notesController.addListener(() {
if (_notesController.text.length > _notesLimit) {
_notesController.text = _notesController.text.substring(0, _notesLimit);
_notesController.selection = TextSelection.fromPosition(
TextPosition(offset: _notesController.text.length),
);
showToast(context, context.l10n.notesLengthLimit(_notesLimit));
}
});
if (widget.code == null ||
(widget.code!.issuer.length < _otherTextLimit &&
widget.code!.account.length < _otherTextLimit &&
widget.code!.secret.length < _otherTextLimit)) {
_limitTextLength(_issuerController, _otherTextLimit);
_limitTextLength(_accountController, _otherTextLimit);
_limitTextLength(_secretController, _otherTextLimit);
}
super.initState();
}
void _limitTextLength(TextEditingController controller, int limit) {
controller.addListener(() {
if (controller.text.length > limit) {
controller.text = controller.text.substring(0, limit);
controller.selection = TextSelection.fromPosition(
TextPosition(offset: controller.text.length),
);
}
});
}
@override
void dispose() {
_streamSubscription?.cancel();
_issuerController.dispose();
_accountController.dispose();
_notesController.dispose();
super.dispose();
}
@@ -72,163 +115,197 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
Widget build(BuildContext context) {
final l10n = context.l10n;
return Scaffold(
appBar: AppBar(
title: Text(l10n.importAccountPageTitle),
),
body: Center(
child: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 40.0, horizontal: 40),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
return null;
},
decoration: InputDecoration(
hintText: l10n.codeIssuerHint,
floatingLabelBehavior: FloatingLabelBehavior.auto,
labelText: l10n.codeIssuerHint,
),
controller: _issuerController,
autofocus: true,
),
const SizedBox(
height: 20,
),
TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
return null;
},
decoration: InputDecoration(
hintText: l10n.codeSecretKeyHint,
floatingLabelBehavior: FloatingLabelBehavior.auto,
labelText: l10n.codeSecretKeyHint,
suffixIcon: IconButton(
onPressed: () {
setState(() {
_secretKeyObscured = !_secretKeyObscured;
});
},
icon: _secretKeyObscured
? const Icon(Icons.visibility_off_rounded)
: const Icon(Icons.visibility_rounded),
),
),
obscureText: _secretKeyObscured,
controller: _secretController,
),
const SizedBox(
height: 20,
),
TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
return null;
},
decoration: InputDecoration(
hintText: l10n.codeAccountHint,
floatingLabelBehavior: FloatingLabelBehavior.auto,
labelText: l10n.codeAccountHint,
),
controller: _accountController,
),
const SizedBox(height: 40),
const SizedBox(
height: 20,
),
Text(
l10n.tags,
style: const TextStyle(
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 10),
Wrap(
spacing: 12,
alignment: WrapAlignment.start,
children: [
...allTags.map(
(e) => TagChip(
label: e,
action: TagChipAction.check,
state: tags.contains(e)
? TagChipState.selected
: TagChipState.unselected,
onTap: () {
if (tags.contains(e)) {
tags.remove(e);
} else {
tags.add(e);
}
setState(() {});
},
),
),
AddChip(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AddTagDialog(
onTap: (tag) {
if (allTags.contains(tag) &&
tags.contains(tag)) {
return;
}
allTags.add(tag);
tags.add(tag);
setState(() {});
Navigator.pop(context);
},
);
},
barrierColor: Colors.black.withOpacity(0.85),
barrierDismissible: false,
);
},
),
],
),
const SizedBox(
height: 40,
),
SizedBox(
width: 400,
child: OutlinedButton(
onPressed: () async {
if ((_accountController.text.trim().isEmpty &&
_issuerController.text.trim().isEmpty) ||
_secretController.text.trim().isEmpty) {
String message;
if (_secretController.text.trim().isEmpty) {
message = context.l10n.secretCanNotBeEmpty;
} else {
message =
context.l10n.bothIssuerAndAccountCanNotBeEmpty;
appBar: AppBar(title: Text(l10n.importAccountPageTitle)),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
FieldLabel(l10n.codeIssuerHint),
Expanded(
child: TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
_showIncorrectDetailsDialog(context, message: message);
return;
}
await _saveCode();
},
child: Text(l10n.saveAction),
return null;
},
decoration: const InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
),
style: getEnteTextTheme(context).small,
controller: _issuerController,
autofocus: true,
),
),
],
),
Row(
children: [
FieldLabel(l10n.secret),
Expanded(
child: TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
return null;
},
style: getEnteTextTheme(context).small,
decoration: InputDecoration(
contentPadding:
const EdgeInsets.symmetric(vertical: 12.0),
suffixIcon: GestureDetector(
// padding: EdgeInsets.zero,
onTap: () {
setState(() {
_secretKeyObscured = !_secretKeyObscured;
});
},
child: _secretKeyObscured
? const Icon(
Icons.visibility_off_rounded,
size: 18,
)
: const Icon(
Icons.visibility_rounded,
size: 18,
),
),
),
obscureText: _secretKeyObscured,
controller: _secretController,
),
),
],
),
Row(
children: [
FieldLabel(l10n.account),
Expanded(
child: TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
return null;
},
decoration: const InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
),
style: getEnteTextTheme(context).small,
controller: _accountController,
),
),
],
),
const SizedBox(height: 12),
Row(
children: [
FieldLabel(l10n.notes),
Expanded(
child: TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value == null || value.isEmpty) {
return "Please enter some text";
}
if (value.length > _notesLimit) {
return "Notes can't be more than 1000 characters";
}
return null;
},
maxLength: _notesLimit,
minLines: 1,
maxLines: 5,
decoration: const InputDecoration(
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
),
style: getEnteTextTheme(context).small,
controller: _notesController,
),
),
],
),
const SizedBox(height: 12),
Wrap(
spacing: 12,
alignment: WrapAlignment.start,
children: [
...allTags.map(
(e) => TagChip(
label: e,
action: TagChipAction.check,
state: selectedTags.contains(e)
? TagChipState.selected
: TagChipState.unselected,
onTap: () {
if (selectedTags.contains(e)) {
selectedTags.remove(e);
} else {
selectedTags.add(e);
}
setState(() {});
},
),
),
AddChip(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return AddTagDialog(
onTap: (tag) {
final exist = allTags.contains(tag);
if (exist && selectedTags.contains(tag)) {
return Navigator.pop(context);
}
if (!exist) allTags.add(tag);
selectedTags.add(tag);
setState(() {});
Navigator.pop(context);
},
);
},
barrierColor: Colors.black.withOpacity(0.85),
barrierDismissible: false,
);
},
),
],
),
const SizedBox(
height: 40,
),
SizedBox(
width: 400,
child: OutlinedButton(
onPressed: () async {
if ((_accountController.text.trim().isEmpty &&
_issuerController.text.trim().isEmpty) ||
_secretController.text.trim().isEmpty) {
String message;
if (_secretController.text.trim().isEmpty) {
message = context.l10n.secretCanNotBeEmpty;
} else {
message =
context.l10n.bothIssuerAndAccountCanNotBeEmpty;
}
_showIncorrectDetailsDialog(context, message: message);
return;
}
await _saveCode();
},
child: Text(l10n.saveAction),
),
],
),
),
],
),
),
),
@@ -240,7 +317,13 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
final account = _accountController.text.trim();
final issuer = _issuerController.text.trim();
final secret = _secretController.text.trim().replaceAll(' ', '');
final isStreamCode = issuer.toLowerCase() == "steam" || issuer.toLowerCase().contains('steampowered.com');
final notes = _notesController.text.trim();
final isStreamCode = issuer.toLowerCase() == "steam" ||
issuer.toLowerCase().contains('steampowered.com');
final CodeDisplay display =
widget.code?.display.copyWith(tags: selectedTags) ??
CodeDisplay(tags: selectedTags);
display.note = notes;
if (widget.code != null && widget.code!.secret != secret) {
ButtonResult? result = await showChoiceActionSheet(
context,
@@ -255,8 +338,7 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
return;
}
}
final CodeDisplay display =
widget.code?.display.copyWith(tags: tags) ?? CodeDisplay(tags: tags);
final Code newCode = widget.code == null
? Code.fromAccountAndSecret(
isStreamCode ? Type.steam : Type.totp,
@@ -275,7 +357,8 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
// Verify the validity of the code
getOTP(newCode);
Navigator.of(context).pop(newCode);
} catch (e) {
} catch (e, s) {
_logger.severe("Error saving code", e, s);
_showIncorrectDetailsDialog(context);
}
}

View File

@@ -31,11 +31,11 @@ class ViewQrPage extends StatelessWidget {
data: code!.rawData,
eyeStyle: QrEyeStyle(
eyeShape: QrEyeShape.square,
color: Theme.of(context).colorScheme.onBackground,
color: Theme.of(context).colorScheme.onSurface,
),
dataModuleStyle: QrDataModuleStyle(
dataModuleShape: QrDataModuleShape.square,
color: Theme.of(context).colorScheme.onBackground,
color: Theme.of(context).colorScheme.onSurface,
),
version: QrVersions.auto,
size: qrSize,

View File

@@ -8,6 +8,7 @@ import 'package:ente_auth/utils/auth_util.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/lock_screen_settings.dart';
import 'package:ente_auth/utils/toast_util.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_local_authentication/flutter_local_authentication.dart';
@@ -19,11 +20,19 @@ class LocalAuthenticationService {
static final LocalAuthenticationService instance =
LocalAuthenticationService._privateConstructor();
final logger = Logger((LocalAuthenticationService).toString());
int lastAuthTime = 0;
Future<bool> requestLocalAuthentication(
BuildContext context,
String infoMessage,
) async {
if (kDebugMode) {
// if last auth time is less than 60 seconds, don't ask for auth again
if (lastAuthTime != 0 &&
DateTime.now().millisecondsSinceEpoch - lastAuthTime < 60000) {
return true;
}
}
if (await isLocalAuthSupportedOnDevice() ||
LockScreenSettings.instance.getIsAppLockSet()) {
AppLock.of(context)!.setEnabled(false);
@@ -39,6 +48,7 @@ class LocalAuthenticationService {
showToast(context, infoMessage);
return false;
} else {
lastAuthTime = DateTime.now().millisecondsSinceEpoch;
return true;
}
}

View File

@@ -9,11 +9,12 @@ class PreferenceService {
late final SharedPreferences _prefs;
static const kHasShownCoachMarkKey = "has_shown_coach_mark";
static const kHasShownCoachMarkKey = "has_shown_coach_mark_v2";
static const kShouldShowLargeIconsKey = "should_show_large_icons";
static const kShouldHideCodesKey = "should_hide_codes";
static const kShouldAutoFocusOnSearchBar = "should_auto_focus_on_search_bar";
static const kShouldMinimizeOnCopy = "should_minimize_on_copy";
static const kCompactMode = "vi.compactMode";
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
@@ -48,6 +49,14 @@ class PreferenceService {
return _prefs.getBool(kShouldHideCodesKey) ?? false;
}
bool isCompactMode() {
return _prefs.getBool(kCompactMode) ?? false;
}
Future<void> setCompactMode(bool value) async {
await _prefs.setBool(kCompactMode, value);
}
Future<void> setHideCodes(bool value) async {
await _prefs.setBool(kShouldHideCodesKey, value);
Bus.instance.fire(IconsChangedEvent());

View File

@@ -585,9 +585,8 @@ class UserService {
final clientS = client.calculateSecret(serverB);
final clientM = client.calculateClientEvidenceMessage();
late Response _;
if (setKeysRequest == null) {
_ = await _enteDio.post(
await _enteDio.post(
"/users/srp/complete",
data: {
'setupID': setupSRPResponse.setupID,
@@ -595,7 +594,7 @@ class UserService {
},
);
} else {
_ = await _enteDio.post(
await _enteDio.post(
"/users/srp/update",
data: {
'setupID': setupSRPResponse.setupID,

View File

@@ -30,6 +30,7 @@ class CodeDisplayStore {
final tags = <String>{};
for (final code in codes) {
if (code.hasError) continue;
if (code.isTrashed) continue;
tags.addAll(code.display.tags);
}
return tags.toList()..sort();

View File

@@ -1,3 +1,4 @@
import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
@@ -30,6 +31,7 @@ class _CodeTimerProgressState extends State<CodeTimerProgress>
late final Ticker _ticker;
late final ValueNotifier<double> _progress;
late final int _microSecondsInPeriod;
late bool _isCompactMode=false;
@override
void initState() {
@@ -38,6 +40,7 @@ class _CodeTimerProgressState extends State<CodeTimerProgress>
_progress = ValueNotifier<double>(0.0);
_ticker = createTicker(_updateTimeRemaining);
_ticker.start();
_isCompactMode = PreferenceService.instance.isCompactMode();
_updateTimeRemaining(Duration.zero);
}
@@ -57,7 +60,7 @@ class _CodeTimerProgressState extends State<CodeTimerProgress>
@override
Widget build(BuildContext context) {
return SizedBox(
height: 3,
height: _isCompactMode ?1:3,
child: ValueListenableBuilder<double>(
valueListenable: _progress,
builder: (context, progress, _) {

View File

@@ -1,6 +1,5 @@
import 'dart:async';
import 'dart:io';
import 'dart:ui' as ui;
import 'package:auto_size_text/auto_size_text.dart';
import 'package:clipboard/clipboard.dart';
@@ -15,24 +14,29 @@ import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/code_timer_progress.dart';
import 'package:ente_auth/ui/components/bottom_action_bar_widget.dart';
import 'package:ente_auth/ui/components/models/button_type.dart';
import 'package:ente_auth/ui/share/code_share.dart';
import 'package:ente_auth/ui/utils/icon_utils.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:ente_auth/utils/toast_util.dart';
import 'package:ente_auth/utils/totp_util.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_context_menu/flutter_context_menu.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:logging/logging.dart';
import 'package:move_to_background/move_to_background.dart';
class CodeWidget extends StatefulWidget {
final Code code;
final bool isCompactMode;
const CodeWidget(
this.code, {
super.key,
required this.isCompactMode,
});
@override
@@ -50,30 +54,33 @@ class _CodeWidgetState extends State<CodeWidget> {
late bool _hideCode;
bool isMaskingEnabled = false;
int _codeTimeStep = -1;
int lastRefreshTime = 0;
@override
void initState() {
super.initState();
isMaskingEnabled = PreferenceService.instance.shouldHideCodes();
_hideCode = isMaskingEnabled;
_everySecondTimer =
Timer.periodic(const Duration(milliseconds: 500), (Timer t) {
int newStep = 0;
int epochSeconds = DateTime.now().millisecondsSinceEpoch ~/ 1000;
if (widget.code.type != Type.hotp) {
newStep = (((DateTime.now().millisecondsSinceEpoch ~/ 1000).round()) ~/
widget.code.period)
.floor();
newStep = ((epochSeconds.round()) ~/ widget.code.period).floor();
} else {
newStep = widget.code.counter;
}
if (_codeTimeStep != newStep) {
_codeTimeStep = newStep;
if (_codeTimeStep != newStep ||
epochSeconds - lastRefreshTime > widget.code.period) {
String newCode = _getCurrentOTP();
if (newCode != _currentCode.value) {
if (newCode != _currentCode.value && mounted) {
_currentCode.value = newCode;
if (widget.code.type.isTOTPCompatible) {
_nextCode.value = _getNextTotp();
}
_codeTimeStep = newStep;
lastRefreshTime = epochSeconds;
}
}
});
@@ -115,6 +122,18 @@ class _CodeWidgetState extends State<CodeWidget> {
painter: PinBgPainter(
color: colorScheme.pinnedBgColor,
),
size: widget.isCompactMode
? const Size(24, 24)
: const Size(39, 39),
),
),
if (widget.code.isTrashed && kDebugMode)
Align(
alignment: Alignment.topLeft,
child: CustomPaint(
painter: PinBgPainter(
color: colorScheme.warning700,
),
size: const Size(39, 39),
),
),
@@ -126,7 +145,9 @@ class _CodeWidgetState extends State<CodeWidget> {
CodeTimerProgressCache.getCachedWidget(
widget.code.period,
),
const SizedBox(height: 28),
widget.isCompactMode
? const SizedBox(height: 4)
: const SizedBox(height: 28),
Row(
children: [
_shouldShowLargeIcon ? _getIcon() : const SizedBox.shrink(),
@@ -134,22 +155,32 @@ class _CodeWidgetState extends State<CodeWidget> {
child: Column(
children: [
_getTopRow(),
const SizedBox(height: 4),
widget.isCompactMode
? const SizedBox.shrink()
: const SizedBox(height: 4),
_getBottomRow(l10n),
],
),
),
],
),
const SizedBox(height: 32),
widget.isCompactMode
? const SizedBox(height: 4)
: const SizedBox(height: 32),
],
),
if (widget.code.isPinned) ...[
Align(
alignment: Alignment.topRight,
child: Padding(
padding: const EdgeInsets.only(right: 6, top: 6),
child: SvgPicture.asset("assets/svg/pin-card.svg"),
padding: widget.isCompactMode
? const EdgeInsets.only(right: 4, top: 4)
: const EdgeInsets.only(right: 6, top: 6),
child: SvgPicture.asset(
"assets/svg/pin-card.svg",
width: widget.isCompactMode ? 8 : null,
height: widget.isCompactMode ? 8 : null,
),
),
),
],
@@ -186,7 +217,22 @@ class _CodeWidgetState extends State<CodeWidget> {
}
: null,
onLongPress: () {
_copyCurrentOTPToClipboard();
showModalBottomSheet(
context: context,
builder: (_) {
return BottomActionBarWidget(
code: widget.code,
onEdit: () => _onEditPressed(true),
onShare: () => _onSharePressed(true),
onPin: () => _onPinPressed(true),
onTrashed: () => _onTrashPressed(true),
onDelete: () => _onDeletePressed(true),
onRestore: () => _onRestoreClicked(true),
onShowQR: () => _onShowQrPressed(true),
onCancel: () => Navigator.of(context).pop(),
);
},
);
},
child: getCardContents(l10n),
),
@@ -196,36 +242,65 @@ class _CodeWidgetState extends State<CodeWidget> {
}
return Container(
margin: const EdgeInsets.only(left: 16, right: 16, bottom: 8, top: 8),
margin: widget.isCompactMode
? const EdgeInsets.only(left: 16, right: 16, bottom: 6, top: 6)
: const EdgeInsets.only(left: 16, right: 16, bottom: 8, top: 8),
child: Builder(
builder: (context) {
if (PlatformUtil.isDesktop()) {
return ContextMenuRegion(
contextMenu: ContextMenu(
entries: <ContextMenuEntry>[
MenuItem(
label: 'QR',
icon: Icons.qr_code_2_outlined,
onSelected: () => _onShowQrPressed(null),
),
MenuItem(
label: widget.code.isPinned ? l10n.unpinText : l10n.pinText,
icon: widget.code.isPinned
? Icons.push_pin
: Icons.push_pin_outlined,
onSelected: () => _onPinPressed(null),
),
MenuItem(
label: l10n.edit,
icon: Icons.edit,
onSelected: () => _onEditPressed(null),
),
if (!widget.code.isTrashed &&
widget.code.type.isTOTPCompatible)
MenuItem(
label: context.l10n.share,
icon: Icons.adaptive.share_outlined,
onSelected: () => _onSharePressed(null),
),
if (!widget.code.isTrashed)
MenuItem(
label: 'QR',
icon: Icons.qr_code_2_outlined,
onSelected: () => _onShowQrPressed(null),
),
if (widget.code.note.isNotEmpty)
MenuItem(
label: context.l10n.notes,
icon: Icons.notes_outlined,
onSelected: () => _onShowNotesPressed(null),
),
if (!widget.code.isTrashed)
MenuItem(
label:
widget.code.isPinned ? l10n.unpinText : l10n.pinText,
icon: widget.code.isPinned
? Icons.push_pin
: Icons.push_pin_outlined,
onSelected: () => _onPinPressed(null),
),
if (!widget.code.isTrashed)
MenuItem(
label: l10n.edit,
icon: Icons.edit,
onSelected: () => _onEditPressed(null),
)
else
MenuItem(
label: l10n.restore,
icon: Icons.restore_outlined,
onSelected: () => _onRestoreClicked(null),
),
const MenuDivider(),
MenuItem(
label: l10n.delete,
label: widget.code.isTrashed ? l10n.delete : l10n.trash,
value: "Delete",
icon: Icons.delete,
onSelected: () => _onDeletePressed(null),
icon: widget.code.isTrashed
? Icons.delete_forever
: Icons.delete,
onSelected: () => widget.code.isTrashed
? _onDeletePressed(null)
: _onTrashPressed(null),
),
],
padding: const EdgeInsets.all(8.0),
@@ -234,95 +309,7 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
return Slidable(
key: ValueKey(widget.code.hashCode),
endActionPane: ActionPane(
extentRatio: 0.90,
motion: const ScrollMotion(),
children: [
const SizedBox(
width: 14,
),
SlidableAction(
onPressed: _onShowQrPressed,
backgroundColor: Colors.grey.withOpacity(0.1),
borderRadius: const BorderRadius.all(Radius.circular(8)),
foregroundColor:
Theme.of(context).colorScheme.inverseBackgroundColor,
icon: Icons.qr_code_2_outlined,
label: "QR",
padding: const EdgeInsets.only(left: 4, right: 0),
spacing: 8,
),
const SizedBox(
width: 14,
),
CustomSlidableAction(
onPressed: _onPinPressed,
backgroundColor: Colors.grey.withOpacity(0.1),
borderRadius: const BorderRadius.all(Radius.circular(8)),
foregroundColor:
Theme.of(context).colorScheme.inverseBackgroundColor,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (widget.code.isPinned)
SvgPicture.asset(
"assets/svg/pin-active.svg",
colorFilter: ui.ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
),
)
else
SvgPicture.asset(
"assets/svg/pin-inactive.svg",
colorFilter: ui.ColorFilter.mode(
Theme.of(context).colorScheme.primary,
BlendMode.srcIn,
),
),
const SizedBox(height: 8),
Text(
widget.code.isPinned ? l10n.unpinText : l10n.pinText,
),
],
),
padding: const EdgeInsets.only(left: 4, right: 0),
),
const SizedBox(
width: 14,
),
SlidableAction(
onPressed: _onEditPressed,
backgroundColor: Colors.grey.withOpacity(0.1),
borderRadius: const BorderRadius.all(Radius.circular(8)),
foregroundColor:
Theme.of(context).colorScheme.inverseBackgroundColor,
icon: Icons.edit_outlined,
label: l10n.edit,
padding: const EdgeInsets.only(left: 4, right: 0),
spacing: 8,
),
const SizedBox(
width: 14,
),
SlidableAction(
onPressed: _onDeletePressed,
backgroundColor: Colors.grey.withOpacity(0.1),
borderRadius: const BorderRadius.all(Radius.circular(8)),
foregroundColor: colorScheme.deleteCodeTextColor,
icon: Icons.delete,
label: l10n.delete,
padding: const EdgeInsets.only(left: 0, right: 0),
spacing: 8,
),
],
),
child: Builder(
builder: (context) => clippedCard(l10n),
),
);
return clippedCard(l10n);
},
),
);
@@ -343,7 +330,7 @@ class _CodeWidgetState extends State<CodeWidget> {
type: MaterialType.transparency,
child: AutoSizeText(
_getFormattedCode(value),
style: const TextStyle(fontSize: 24),
style: TextStyle(fontSize: widget.isCompactMode ? 14 : 24),
maxLines: 1,
),
);
@@ -370,8 +357,8 @@ class _CodeWidgetState extends State<CodeWidget> {
type: MaterialType.transparency,
child: Text(
_getFormattedCode(value),
style: const TextStyle(
fontSize: 18,
style: TextStyle(
fontSize: widget.isCompactMode ? 12 : 18,
color: Colors.grey,
),
),
@@ -404,6 +391,7 @@ class _CodeWidgetState extends State<CodeWidget> {
}
Widget _getTopRow() {
bool isCompactMode = widget.isCompactMode;
return Padding(
padding: const EdgeInsets.only(left: 16, right: 16),
child: Row(
@@ -415,13 +403,15 @@ class _CodeWidgetState extends State<CodeWidget> {
children: [
Text(
safeDecode(widget.code.issuer).trim(),
style: Theme.of(context).textTheme.titleLarge,
style: isCompactMode
? Theme.of(context).textTheme.bodyMedium
: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 2),
if (!isCompactMode) const SizedBox(height: 2),
Text(
safeDecode(widget.code.account).trim(),
style: Theme.of(context).textTheme.bodySmall?.copyWith(
fontSize: 12,
fontSize: isCompactMode ? 12 : 12,
color: Colors.grey,
),
),
@@ -452,12 +442,14 @@ class _CodeWidgetState extends State<CodeWidget> {
Widget _getIcon() {
return Padding(
padding: _shouldShowLargeIcon
? const EdgeInsets.only(left: 16)
? EdgeInsets.only(left: widget.isCompactMode ? 12 : 16)
: const EdgeInsets.all(0),
child: IconUtils.instance.getIcon(
context,
safeDecode(widget.code.issuer).trim(),
width: _shouldShowLargeIcon ? 42 : 24,
width: widget.isCompactMode
? (_shouldShowLargeIcon ? 32 : 24)
: (_shouldShowLargeIcon ? 42 : 24),
),
);
}
@@ -502,7 +494,24 @@ class _CodeWidgetState extends State<CodeWidget> {
}
}
Future<void> _onEditPressed(_) async {
Future<void> _onShowNotesPressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
await showChoiceDialog(
context,
title: context.l10n.notes,
body: widget.code.note,
firstButtonLabel: context.l10n.close,
firstButtonType: ButtonType.secondary,
secondButtonLabel: null,
);
}
Future<void> _onEditPressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
bool isAuthSuccessful = await LocalAuthenticationService.instance
.requestLocalAuthentication(context, context.l10n.editCodeAuthMessage);
await PlatformUtil.refocusWindows();
@@ -523,7 +532,10 @@ class _CodeWidgetState extends State<CodeWidget> {
}
}
Future<void> _onShowQrPressed(_) async {
Future<void> _onShowQrPressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
bool isAuthSuccessful = await LocalAuthenticationService.instance
.requestLocalAuthentication(context, context.l10n.showQRAuthMessage);
await PlatformUtil.refocusWindows();
@@ -540,7 +552,23 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
Future<void> _onPinPressed(_) async {
Future<void> _onSharePressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
bool isAuthSuccessful = await LocalAuthenticationService.instance
.requestLocalAuthentication(context, context.l10n.authenticateGeneric);
await PlatformUtil.refocusWindows();
if (!isAuthSuccessful) {
return;
}
showShareDialog(context, widget.code);
}
Future<void> _onPinPressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
bool currentlyPinned = widget.code.isPinned;
final display = widget.code.display;
final Code code = widget.code.copyWith(
@@ -558,7 +586,14 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
void _onDeletePressed(_) async {
void _onDeletePressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
if (!widget.code.isTrashed) {
showToast(context, 'Code can only be deleted from trash');
return;
}
bool isAuthSuccessful =
await LocalAuthenticationService.instance.requestLocalAuthentication(
context,
@@ -581,6 +616,72 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
void _onTrashPressed([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
if (widget.code.isTrashed) {
showToast(context, 'Code is already trashed');
return;
}
bool isAuthSuccessful =
await LocalAuthenticationService.instance.requestLocalAuthentication(
context,
context.l10n.deleteCodeAuthMessage,
);
if (!isAuthSuccessful) {
return;
}
FocusScope.of(context).requestFocus();
final l10n = context.l10n;
final String issuerAccount = widget.code.account.isNotEmpty
? '${widget.code.issuer} (${widget.code.account})'
: widget.code.issuer;
await showChoiceActionSheet(
context,
title: l10n.trashCode,
body: l10n.trashCodeMessage(issuerAccount),
firstButtonLabel: l10n.trash,
isCritical: true,
firstButtonOnTap: () async {
try {
final display = widget.code.display;
final Code code = widget.code.copyWith(
display: display.copyWith(trashed: true),
);
await CodeStore.instance.addCode(code);
} catch (e) {
logger.severe('Failed to trash code: ${e.toString()}');
showGenericErrorDialog(context: context, error: e).ignore();
}
},
);
}
void _onRestoreClicked([bool? pop]) async {
if (mounted && pop == true) {
Navigator.of(context).pop();
}
if (!widget.code.isTrashed) {
showToast(context, 'Code is already restored');
return;
}
FocusScope.of(context).requestFocus();
try {
final display = widget.code.display;
final Code code = widget.code.copyWith(
display: display.copyWith(trashed: false),
);
await CodeStore.instance.addCode(code);
} catch (e) {
logger.severe('Failed to restore code: ${e.toString()}');
if (mounted) {
showGenericErrorDialog(context: context, error: e).ignore();
}
}
}
String _getCurrentOTP() {
try {
return getOTP(widget.code);
@@ -603,10 +704,18 @@ class _CodeWidgetState extends State<CodeWidget> {
// replace all digits with •
code = code.replaceAll(RegExp(r'\S'), '');
}
if (code.length == 6) {
return "${code.substring(0, 3)} ${code.substring(3, 6)}";
switch (code.length) {
case 6:
return "${code.substring(0, 3)} ${code.substring(3, 6)}";
case 7:
return "${code.substring(0, 3)} ${code.substring(3, 4)} ${code.substring(4, 7)}";
case 8:
return "${code.substring(0, 3)} ${code.substring(3, 5)} ${code.substring(5, 8)}";
case 9:
return "${code.substring(0, 3)} ${code.substring(3, 6)} ${code.substring(6, 9)}";
default:
return code;
}
return code;
}
}

View File

@@ -1,5 +1,3 @@
import 'package:flutter/material.dart';
class BottomShadowWidget extends StatelessWidget {
@@ -15,7 +13,7 @@ class BottomShadowWidget extends StatelessWidget {
color: Colors.transparent,
boxShadow: [
BoxShadow(
color: shadowColor ?? Theme.of(context).colorScheme.background,
color: shadowColor ?? Theme.of(context).colorScheme.surface,
spreadRadius: 42,
blurRadius: 42,
offset: Offset(0, offsetDy), // changes position of shadow

View File

@@ -24,7 +24,7 @@ class DynamicFAB extends StatelessWidget {
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Theme.of(context).colorScheme.background,
color: Theme.of(context).colorScheme.surface,
spreadRadius: 200,
blurRadius: 100,
offset: const Offset(0, 230),

View File

@@ -0,0 +1,76 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:flutter/material.dart';
class ActionBarWidget extends StatefulWidget {
final VoidCallback? onCancel;
final Code code;
const ActionBarWidget({
required this.onCancel,
required this.code,
super.key,
});
@override
State<ActionBarWidget> createState() => _ActionBarWidgetState();
}
class _ActionBarWidgetState extends State<ActionBarWidget> {
@override
Widget build(BuildContext context) {
final textTheme = getEnteTextTheme(context);
return SizedBox(
child: Padding(
padding: const EdgeInsets.fromLTRB(20, 8, 20, 8),
child: Column(
// left align the text
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (widget.code.note.isNotEmpty)
SelectableText(
widget.code.note,
style: textTheme.miniMuted,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
flex: 1,
child: Column(
children: [
SelectableText(
widget.code.issuerAccount,
style: textTheme.miniMuted,
),
],
),
),
Flexible(
flex: 1,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 12),
child: GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
widget.onCancel?.call();
},
child: Align(
alignment: Alignment.centerRight,
child: Text(
context.l10n.cancel,
style: textTheme.mini,
),
),
),
),
),
],
),
],
),
),
);
}
}

View File

@@ -0,0 +1,86 @@
import 'dart:math';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/components/actions_bar_widget.dart';
import 'package:ente_auth/ui/components/code_selection_actions_widget.dart';
import 'package:ente_auth/ui/components/components_constants.dart';
import "package:ente_auth/ui/components/divider_widget.dart";
import 'package:flutter/material.dart';
class BottomActionBarWidget extends StatelessWidget {
final Code code;
final VoidCallback? onCancel;
final Color? backgroundColor;
final VoidCallback? onShare;
final VoidCallback? onPin;
final VoidCallback? onShowQR;
final VoidCallback? onEdit;
final VoidCallback? onRestore;
final VoidCallback? onDelete;
final VoidCallback? onTrashed;
const BottomActionBarWidget({
required this.code,
this.onCancel,
this.backgroundColor,
super.key,
this.onShare,
this.onPin,
this.onShowQR,
this.onEdit,
this.onRestore,
this.onDelete,
this.onTrashed,
});
@override
Widget build(BuildContext context) {
final bottomPadding = MediaQuery.of(context).padding.bottom;
final widthOfScreen = MediaQuery.of(context).size.width;
final colorScheme = getEnteColorScheme(context);
final double leftRightPadding = min(
widthOfScreen > restrictedMaxWidth
? (widthOfScreen - restrictedMaxWidth) / 2
: 0,
20,
);
return Container(
decoration: BoxDecoration(
color: backgroundColor ?? colorScheme.backgroundElevated2,
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(8),
topRight: Radius.circular(8),
),
),
padding: EdgeInsets.only(
top: 4,
bottom: bottomPadding,
right: leftRightPadding,
left: leftRightPadding,
),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const SizedBox(height: 8),
CodeSelectionActionsWidget(
code: code,
onShare: onShare,
onPin: onPin,
onShowQR: onShowQR,
onEdit: onEdit,
onRestore: onRestore,
onDelete: onDelete,
onTrashed: onTrashed,
),
const DividerWidget(dividerType: DividerType.bottomBar),
ActionBarWidget(
code: code,
onCancel: onCancel,
),
// const SizedBox(height: 2)
],
),
);
}
}

View File

@@ -0,0 +1,138 @@
import "package:ente_auth/l10n/l10n.dart";
import "package:ente_auth/models/code.dart";
import "package:ente_auth/ui/components/selection_action_button.dart";
import 'package:flutter/material.dart';
class CodeSelectionActionsWidget extends StatefulWidget {
final Code code;
final VoidCallback? onShare;
final VoidCallback? onPin;
final VoidCallback? onShowQR;
final VoidCallback? onEdit;
final VoidCallback? onRestore;
final VoidCallback? onDelete;
final VoidCallback? onTrashed;
const CodeSelectionActionsWidget({
super.key,
required this.code,
this.onShare,
this.onPin,
this.onShowQR,
this.onEdit,
this.onRestore,
this.onDelete,
this.onTrashed,
});
@override
State<CodeSelectionActionsWidget> createState() =>
_CodeSelectionActionsWidgetState();
}
class _CodeSelectionActionsWidgetState
extends State<CodeSelectionActionsWidget> {
late final scrollController = ScrollController();
// static final _logger = Logger("CodeSelectionActionsWidget");
@override
void dispose() {
scrollController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final List<SelectionActionButton> items = [];
if (!widget.code.isTrashed) {
items.add(
SelectionActionButton(
labelText: context.l10n.share,
icon: Icons.adaptive.share_outlined,
onTap: widget.onShare,
),
);
items.add(
SelectionActionButton(
labelText: widget.code.isPinned
? context.l10n.unpinText
: context.l10n.pinText,
icon: widget.code.isPinned ? Icons.push_pin : Icons.push_pin_outlined,
onTap: widget.onPin,
),
);
items.add(
SelectionActionButton(
labelText: 'QR',
icon: Icons.qr_code_2_outlined,
onTap: widget.onShowQR,
),
);
}
if (widget.code.isTrashed) {
items.add(
SelectionActionButton(
labelText: context.l10n.restore,
icon: Icons.restore_outlined,
onTap: widget.onRestore,
),
);
} else {
items.add(
SelectionActionButton(
labelText: context.l10n.edit,
icon: Icons.edit,
onTap: widget.onEdit,
),
);
}
items.add(
SelectionActionButton(
labelText:
widget.code.isTrashed ? context.l10n.delete : context.l10n.trash,
icon: widget.code.isTrashed ? Icons.delete_forever : Icons.delete,
onTap: widget.code.isTrashed ? widget.onDelete : widget.onTrashed,
),
);
if (items.isNotEmpty) {
// h4ck: https://github.com/flutter/flutter/issues/57920#issuecomment-893970066
return MediaQuery(
data: MediaQuery.of(context).removePadding(removeBottom: true),
child: SafeArea(
child: Scrollbar(
radius: const Radius.circular(1),
thickness: 2,
controller: scrollController,
thumbVisibility: true,
child: SingleChildScrollView(
controller: scrollController,
physics: const BouncingScrollPhysics(
decelerationRate: ScrollDecelerationRate.fast,
),
scrollDirection: Axis.horizontal,
child: Container(
padding: const EdgeInsets.only(bottom: 24),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(width: 4),
...items,
const SizedBox(width: 4),
],
),
),
),
),
),
);
}
return const SizedBox();
}
}

View File

@@ -77,17 +77,19 @@ class DialogWidget extends StatelessWidget {
color: Colors.transparent,
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ContentContainer(
title: title,
body: body,
icon: icon,
),
const SizedBox(height: 36),
Actions(buttons),
],
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ContentContainer(
title: title,
body: body,
icon: icon,
),
const SizedBox(height: 36),
Actions(buttons),
],
),
),
),
),

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