Compare commits

...

774 Commits

Author SHA1 Message Date
Neeraj
d95df66b9c [auth] Fix deeplink issue (#4818)
## Description
Also
- Remove logo from privacy screen
- Fix bug while deleting items from trash
## Tests
2025-01-22 14:45:21 +05:30
Neeraj Gupta
58cb9f480f Clean up 2025-01-22 14:42:23 +05:30
Neeraj Gupta
14e413effa [auth] Bump version 2025-01-22 14:41:36 +05:30
Neeraj Gupta
728a8c4976 Merge remote-tracking branch 'origin/main' into auth_fixes 2025-01-22 14:41:22 +05:30
Neeraj Gupta
dc779ae53f [auth] Opt out of flutter default deeplinking 2025-01-22 14:40:28 +05:30
Neeraj Gupta
ab5bda8074 [auth] Remove privacy screen image 2025-01-22 14:39:33 +05:30
Neeraj Gupta
2fc8d6e0c4 [auth] Handle multiple invokation of same deeplink 2025-01-22 14:35:03 +05:30
Neeraj Gupta
3fa18b3560 [auth] Handle deeplink in offline mode 2025-01-22 14:30:04 +05:30
Neeraj Gupta
a15556264a [auth]Skip wait for online sync while parsing otpauth deeplink 2025-01-22 14:23:31 +05:30
Manav Rathi
267f54d943 [web] Fix link default prop for the (WIP) light mode (#4817)
This was causing an exception when opening screens with the <Link>
2025-01-22 14:20:13 +05:30
Manav Rathi
1015c87dd2 Fix link default prop 2025-01-22 14:14:18 +05:30
Neeraj Gupta
a71c284708 [auth] Fix bug in trash deletion 2025-01-22 13:55:22 +05:30
Neeraj Gupta
89e1efbde4 [auth] Opt out of flutter deeplink for ios 2025-01-22 13:54:57 +05:30
Manav Rathi
5e317b9f37 Increase hover opacity for light mode 2025-01-22 13:37:55 +05:30
Manav Rathi
6a4e992843 [desktop] Attempt to fix macOS universal build after electron builder update (#4816)
CI failures since updating Electron building (and Electron):

• packaging platform=darwin arch=arm64 electron=34.0.0
appOutDir=dist/mac-universal-arm64-temp
• packaging platform=darwin arch=universal electron=34.0.0
appOutDir=dist/mac-universal
⨯ pattern is too long failedTask=build stackTrace=TypeError: pattern is
too long
2025-01-22 13:18:02 +05:30
Manav Rathi
6e5e28d2bd [desktop] Attempt to fix macOS universal build after electron builder update
CI failures since updating Electron building (and Electron):

 • packaging       platform=darwin arch=arm64 electron=34.0.0 appOutDir=dist/mac-universal-arm64-temp
  • packaging       platform=darwin arch=universal electron=34.0.0 appOutDir=dist/mac-universal
  ⨯ pattern is too long  failedTask=build stackTrace=TypeError: pattern is too long
2025-01-22 13:16:30 +05:30
Manav Rathi
fcb7221820 [desktop] Fix incomplete build being generated - Take 2 (#4815)
These issues only surface when running on the CI, hence the PR splurge.
2025-01-22 13:01:55 +05:30
Manav Rathi
4abfb5b8bd Don't return falsey 2025-01-22 12:59:54 +05:30
Manav Rathi
09b15d8645 [desktop] Fix incomplete build being generated (#4813)
...because of returning false from our build hook.

Also update the MetaInfo to avoid duplicating.
2025-01-22 12:43:17 +05:30
Manav Rathi
e0eae10007 Use URL instead of repeating contents 2025-01-22 12:41:39 +05:30
Manav Rathi
47ec5e78c0 [desktop] Fix incomplete build being generated
...because of returning false from our build hook.
2025-01-22 12:39:33 +05:30
Neeraj
07f55020df [auth] Bump version v4.3.0 (#4812)
## Description

## Tests
2025-01-22 11:40:50 +05:30
Neeraj Gupta
d345de9ff3 [auth] Bump version v4.3.0 2025-01-22 11:36:23 +05:30
Neeraj
3bbb3c5767 [auth] Revert Notification banner (#4806) 2025-01-22 11:29:51 +05:30
Manav Rathi
7ac322b799 [desktop] Update build for latest electron builder (#4811)
Since the eb update, the CI job fails with errors like

unable to copy, file is symlinked outside the package
source=out/404.html
realPathFile=/Users/runner/work/photos-desktop/photos-desktop/web/apps/photos/out/404.html

Error: Cannot copy file (xxx.js) symlinked to file (xxx.js) outside the
package as that violates asar security integrity
at writeFileOrProcessSymlink
(/Users/runner/work/photos-desktop/photos-desktop/desktop/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
2025-01-22 09:43:55 +05:30
Manav Rathi
1e8750c330 [desktop] Update build for latest electron builder
Since the eb update, the CI job fails with errors like

    unable to copy, file is symlinked outside the package  source=out/404.html realPathFile=/Users/runner/work/photos-desktop/photos-desktop/web/apps/photos/out/404.html

    Error: Cannot copy file (xxx.js) symlinked to file (xxx.js) outside the package as that violates asar security integrity
      at writeFileOrProcessSymlink (/Users/runner/work/photos-desktop/photos-desktop/desktop/node_modules/app-builder-lib/src/asar/asarUtil.ts:126:15)
2025-01-22 09:42:08 +05:30
Manav Rathi
07786e3162 [desktop] Depedencies upgrade (#4809)
In particular,

* Electron 34 is needed to fix the Flatpak file picker issue -
  "Fixed file chooser dialogs for flaptak applications. #44681"
  https://github.com/electron/electron/pull/44681

* Electron builder 26 is needed for the FPM app armour profiles

https://github.com/electron-userland/electron-builder/issues/8635#issuecomment-2462586534
2025-01-22 08:17:33 +05:30
Manav Rathi
d413c1d8dc LF 2025-01-22 08:16:23 +05:30
Manav Rathi
0466067c55 [desktop] Depedencies upgrade
In particular,

* Electron 34 is needed to fix the Flatpak file picker issue -
  "Fixed file chooser dialogs for flaptak applications. #44681"
  https://github.com/electron/electron/pull/44681

* Electron builder 26 is needed for the FPM app armour profiles
  https://github.com/electron-userland/electron-builder/issues/8635#issuecomment-2462586534
2025-01-22 08:08:30 +05:30
Manav Rathi
d8b7d76d55 [desktop] IM 7 - Handle CI rebuilds, and add windows extension (#4808)
- CI builds both arch binaries in one go, so the singular yarn install
hook is not enough
- Without the extension windows doesn't run it
2025-01-22 07:54:34 +05:30
Manav Rathi
b1c62f6c93 [desktop] IM 7 - Handle CI rebuilds, and add windows extension
- CI builds both arch binaries in one go, so the singular yarn install hook is not enough
- Without the extension windows doesn't run it
2025-01-22 07:49:18 +05:30
Aman Raj Singh Mourya
5620be6c15 [auth] revert commit 2bf58aff45 2025-01-21 22:12:40 +05:30
Aman Raj Singh Mourya
91462bcb3c Revert "[auth] Implemeted banner widget"
This reverts commit 2bf58aff45.
2025-01-21 22:09:19 +05:30
Neeraj
c040935c52 [auth] Update crypto dependency + bump version (#4805)
## Description

## Tests
2025-01-21 20:15:40 +05:30
Neeraj Gupta
ffe7535cd2 Lint fix 2025-01-21 20:09:05 +05:30
Neeraj Gupta
219e5590bc [auth] Ensure sortKey is always passed 2025-01-21 19:58:41 +05:30
Neeraj Gupta
7c7ce15177 [auth] Bump version 2025-01-21 19:53:20 +05:30
Neeraj Gupta
b2e164af75 [auth] Upgrade dependency 2025-01-21 19:52:57 +05:30
Neeraj
d495d6f281 [auth] Remove scan package (#4804) 2025-01-21 19:32:21 +05:30
Aman Raj Singh Mourya
1e45ae5bbc [auth] Remove scan package 2025-01-21 19:27:33 +05:30
mangesh
636d493dfe [docs] fix web app docs, sibling to #4800 (#4802) 2025-01-21 16:39:06 +05:30
Manav Rathi
1684192dc0 [desktop] Update to ImageMagick 7, and also make it available on Linux ARM + Windows x64/ARM (#4803) 2025-01-21 16:38:38 +05:30
Manav Rathi
e7d6362eaa Make prettier happy 2025-01-21 16:32:03 +05:30
Manav Rathi
85cf1de12c All current os/arch combinations are handled 2025-01-21 16:28:35 +05:30
mngshm
19135a0dfc resolve merge conflict o.O 2025-01-21 16:26:33 +05:30
Manav Rathi
3d2b8974df Temporary tracing 2025-01-21 16:24:03 +05:30
Manav Rathi
d836e190e3 Use the updated im 7 2025-01-21 16:21:49 +05:30
mngshm
5e54b0af36 fix[web-app docs]: fix syntax issue & add note related to yarn version 2025-01-21 16:05:19 +05:30
Manav Rathi
75509ff339 exec 2025-01-21 15:56:04 +05:30
Neeraj
adf8542301 [mob] Bump version (#4801)
## Description

## Tests
2025-01-21 15:55:09 +05:30
Neeraj Gupta
eca1ff6bb6 [mob] Bump version 2025-01-21 15:54:49 +05:30
Manav Rathi
c731833863 Use a node script to avoid dealing with Windows nonsense 2025-01-21 15:36:00 +05:30
Manav Rathi
cf27dd5889 Outline 2025-01-21 14:54:24 +05:30
Neeraj
45e8006652 [mob][auth] Flutter upgrade to 3.27.2 (#4799)
## Description

## Tests
2025-01-21 14:50:32 +05:30
Neeraj Gupta
39a54a08c0 [auth] Lint fix 2025-01-21 14:29:11 +05:30
Neeraj Gupta
d3fecf3831 [auth] Lint fix 2025-01-21 14:24:12 +05:30
Neeraj Gupta
e9ed423094 Lint fixes 2025-01-21 14:21:13 +05:30
Neeraj Gupta
6eb381b64a [auth][photos] Upgrade flutter 2025-01-21 14:02:13 +05:30
Neeraj Gupta
9f67d06844 [auth] Upgrade flutter submodule to 3.27.2 2025-01-21 13:31:05 +05:30
Neeraj
17ab295983 [auth] Minor fixes (#4797)
## Description

## Tests
2025-01-21 12:49:59 +05:30
Laurens Priem
dd600c05cd [docs] Add FAQ question on export (#4798)
## Description

Added a question on export size.
2025-01-21 11:47:47 +05:30
laurenspriem
ed8ce66ce5 [docs] Add FAQ question on export 2025-01-21 11:45:50 +05:30
Neeraj Gupta
6c68052a55 Lint fix 2025-01-21 11:04:24 +05:30
Neeraj
305c63f921 [auth] Notification banner (#4789)
## Description
![SmartSelect_20250120_211733
1](https://github.com/user-attachments/assets/bc996a00-eaeb-4a87-8ea4-feceb9efeeb1)
2025-01-21 10:53:54 +05:30
Neeraj Gupta
bb4e42331b [auth] Update window min size/height 2025-01-21 10:53:38 +05:30
Neeraj Gupta
4243a331a3 [auth] Log error during init 2025-01-21 10:35:26 +05:30
Aman Raj Singh Mourya
2bf58aff45 [auth] Implemeted banner widget 2025-01-20 21:21:08 +05:30
Aman Raj Singh Mourya
85c5ccd218 [auth] added assets for banner widget 2025-01-20 21:20:25 +05:30
Manav Rathi
0f63930e52 [meta] Update issue template (#4788) 2025-01-20 19:57:49 +05:30
Manav Rathi
4826fdc999 [meta] Update issue template 2025-01-20 19:57:29 +05:30
Manav Rathi
6621944a66 [web] Update mem & ops limits (#4785)
Sibling of https://github.com/ente-io/ente/pull/4771
2025-01-20 19:45:59 +05:30
Neeraj
969a9c554f [server] Fix error type for bad request (#4787)
## Description

## Tests
2025-01-20 16:44:40 +05:30
Neeraj Gupta
e6e4540671 [server] Fix error type for bad request 2025-01-20 16:42:08 +05:30
Neeraj
e2ccfe5f48 [mob] Lower Mem & increase ops limit for key derivation (#4771)
## Description

## Tests
2025-01-20 16:40:09 +05:30
Manav Rathi
4c518f6b13 [web] Update mem & ops limits
Sibling of https://github.com/ente-io/ente/pull/4771
2025-01-20 14:48:25 +05:30
Neeraj Gupta
ff3da665a3 [server] Add server side validation 2025-01-20 14:17:22 +05:30
Neeraj Gupta
2b8c6494cd [mob] Remove unused value 2025-01-20 14:16:39 +05:30
Neeraj Gupta
ff81711043 Merge branch 'lowerMemRequirement' of https://github.com/ente-io/auth into lowerMemRequirement 2025-01-20 14:13:43 +05:30
Manav Rathi
96605d7702 [desktop] Include branding colors in Flathub MetaInfo (#4784)
https://docs.flathub.org/blog/introducing-app-brand-colors/#adding-brand-colors
2025-01-20 14:13:10 +05:30
Neeraj Gupta
02fb6888ab [mob] Remove client side strength check 2025-01-20 14:12:59 +05:30
Manav Rathi
0309db9466 [desktop] Include branding colors in Flathub MetaInfo
https://docs.flathub.org/blog/introducing-app-brand-colors/#adding-brand-colors
2025-01-20 14:04:21 +05:30
Neeraj Gupta
ffde143247 [mob] Fixed typo and lint 2025-01-20 14:01:56 +05:30
Neeraj Gupta
8e26433dd2 [mob] LowerMem & increase ops limit for key derivation 2025-01-20 14:01:56 +05:30
Trekky12
e92b5c3397 [cli] sync deleted files before syncing new/updates files (#4776)
## Description
The CLI sorts deleted photos to the bottom of the sync queue. 
When an album is synced, a photo is removed from the album and later
re-added to the album (same name) and doing another sync the new file is
added first and a new name is generated since the original filename is
(still) taken. Afterwards the initial photo is deleted and the filename
would be available.
This leads to having a file, e.g. IMG_0001_1.JPG instead of the original
filename IMG_0001.JPG despite the initial filename is no longer on disk
and could have been used.

This PR changes the sort order so that deleted files are first removed
and afterwards new files are created. In this case all files where the
filename is now available, but were taken, are named like they were
uploaded.
2025-01-20 11:16:37 +05:30
github-actions[bot]
77db220327 [mobile] New translations (#4781)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-01-20 11:09:50 +05:30
Neeraj
7e320693a1 [server] Remove unused endpoint (#4772)
## Description

No logs for request in last 30 days and client code also don't refer to
this endpoint.

## Tests
2025-01-20 11:09:31 +05:30
Jonathan Beliën
714a37d461 [auth] Update icons (#4777)
## Description

- Remove "forced" color for Fastmail logo (colors are already defined in
SVG file)
- Add [CSAM ](https://www.csam.be/en/index.html) logo
- Add [reMarkable](https://remarkable.com/) logo

I was planning to add LinkedIn logo but noticed #4742 so I've removed
it.

## Tests
2025-01-20 11:07:56 +05:30
github-actions[bot]
db7f38a926 [auth] New translations (#4782)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-01-20 11:06:41 +05:30
Manav Rathi
a7232d7401 [web] New translations (#4779)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-20 09:59:54 +05:30
Crowdin Bot
dbc7861cee New Crowdin translations by GitHub Action 2025-01-20 00:34:13 +00:00
Neeraj Gupta
43adef8899 [mob] Fixed typo and lint 2025-01-18 16:14:00 +05:30
Neeraj Gupta
73af752f52 [mob] LowerMem & increase ops limit for key derivation 2025-01-18 16:10:30 +05:30
Manav Rathi
b6d267e0cd [web] UI color related improvements (#4765)
Continuation of https://github.com/ente-io/ente/pull/4759.
2025-01-17 20:39:38 +05:30
Manav Rathi
aaeab874d8 Rename 2025-01-17 20:35:10 +05:30
Manav Rathi
8cd2267f5d Fix imports 2025-01-17 20:31:54 +05:30
Manav Rathi
67398ea9e4 Fix the button to work in light mode 2025-01-17 20:26:02 +05:30
Manav Rathi
8705d878f4 Tweak 2025-01-17 20:06:09 +05:30
Manav Rathi
a37bd085d6 Color text 2025-01-17 20:02:22 +05:30
Manav Rathi
9a01518200 Prune 2025-01-17 19:50:27 +05:30
Manav Rathi
f1e1939983 Swap 2025-01-17 19:46:03 +05:30
Manav Rathi
60de6018a1 Swap 2025-01-17 19:39:30 +05:30
Manav Rathi
14ff82da27 hover opacity 2025-01-17 19:36:08 +05:30
Manav Rathi
0e34b92398 Better match 2025-01-17 19:05:44 +05:30
Manav Rathi
929f749ad9 Fill 2025-01-17 18:50:58 +05:30
Manav Rathi
1dd831e72d Lowercase for consistency with the others 2025-01-17 18:35:57 +05:30
Manav Rathi
9e4ad1280f Mergability 2025-01-17 17:57:28 +05:30
Manav Rathi
3970724ade Fix logo 2025-01-17 17:50:13 +05:30
Manav Rathi
0f5d921ddb Comment out the fields we're not currently using 2025-01-17 17:41:04 +05:30
Manav Rathi
ef55e2dc23 Tweak 2025-01-17 17:37:17 +05:30
Manav Rathi
a17fb4e2fb landing page 2025-01-17 17:31:20 +05:30
Manav Rathi
210e055d9c LM tweaks 2025-01-17 17:16:21 +05:30
Manav Rathi
1788d07cdd [server] Make SMTP sender name configurable (#4677)
## Description

## Tests
2025-01-17 16:32:36 +05:30
Tobias Genannt
ae68998069 [server] Make SMTP sender name configurable 2025-01-17 12:00:15 +01:00
Manav Rathi
9041269af7 Shadow 2025-01-17 16:13:25 +05:30
Manav Rathi
b5fd289ae9 Theme aware 2025-01-17 16:02:32 +05:30
Manav Rathi
2cdc14aed3 light 2025-01-17 15:55:34 +05:30
Laurens Priem
4bb9c3b290 [mob][photos] Sort merge persons (#4761)
## Description

When assigning or merging an unnamed cluster, order the possible
existing persons to merge with in order from most similar to least
similar.

## Tests

Tested in debug mode on my pixel phone.
2025-01-17 15:54:25 +05:30
Manav Rathi
ccb07a45d9 Shorten 2025-01-17 15:51:45 +05:30
laurenspriem
0f03545929 [mob][photos] Cleanup 2025-01-17 15:44:50 +05:30
Manav Rathi
4f1659f7b7 Palette 2025-01-17 15:43:25 +05:30
laurenspriem
703277fc1d [mob][photos] Run once 2025-01-17 15:18:38 +05:30
laurenspriem
7de379580a [mob][photos] imports 2025-01-17 15:02:27 +05:30
laurenspriem
e224609e7d [mob][photos] First sort attempt 2025-01-17 15:01:20 +05:30
Manav Rathi
1bb04f2650 [web] Deploy only on weekdays (#4760) 2025-01-17 14:50:29 +05:30
Manav Rathi
a164f1b839 [web] Deploy only on weekdays 2025-01-17 14:48:12 +05:30
Manav Rathi
c69eb1dc52 [web] UI color related improvements (#4759)
Continuation of https://github.com/ente-io/ente/pull/4751. Now that dark
theme colors have been (mostly) isolated, next up will be introducing
the light one.
2025-01-17 14:43:59 +05:30
Manav Rathi
371960d479 gray 2025-01-17 14:21:25 +05:30
LivioZ
fd50eb9c13 Add Starbreeze icon (#4743)
Source:
[https://corporate.starbreeze.com/en/press/media/](https://corporate.starbreeze.com/en/press/media/)
2025-01-17 14:16:15 +05:30
Neeraj
f1bd625585 [auth][mob] Add padding during SRP authn (#4758)
## Description

## Tests
2025-01-17 14:13:29 +05:30
mangesh
de253865ac [draft] staff (#4611) 2025-01-17 14:06:02 +05:30
Laurens Priem
776fdc6d03 Cluster trigger (#4750)
## Description

Trigger clustering when user presses on unclustered face from file info.
2025-01-17 14:05:22 +05:30
Bl4ckspell
58d2f740a5 [Auth] Add more custom icons (#4753)
## Description
Added more icons:

| Name | Icon | Source |

|---------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| Finanzfluss | <img
src="https://github.com/user-attachments/assets/f3c9ca30-0202-490b-8339-83970b8b8e1e"
width="100"><br> |
[https://www.finanzfluss.de/presse/](https://www.finanzfluss.de/presse/)
|
| LabyMod | <img
src="https://github.com/user-attachments/assets/1bb8f37d-e3df-4370-a414-de5057ab5324"
width="100"><br> |
[https://labymod.net/en/branding](https://labymod.net/en/branding) |
| Nextcloud | <img
src="https://github.com/user-attachments/assets/bc907f08-ce94-41d1-a12e-63cf5f8c5a40"
width="100"><br> |
[https://nextcloud.com/press/#logo-resources](https://nextcloud.com/press/#logo-resources)
|
| Parqet | <img
src="https://github.com/user-attachments/assets/6059e0b7-9a36-44cb-ba1f-ce7af89a7a13"
width="100"><br> |
[https://parqet.notion.site/Parqet-in-der-Presse-314ee4e9cf4648e99371821f072acc58](https://parqet.notion.site/Parqet-in-der-Presse-314ee4e9cf4648e99371821f072acc58)
|
| CSGORoll | <img
src="https://github.com/user-attachments/assets/9c738583-fbf3-44aa-8058-441d5ce8ef71"
width="100"><br> |
[https://www.csgoroll.com/assets/favicons/android-icon-192x192.png](https://www.csgoroll.com/assets/favicons/android-icon-192x192.png)
|
| GommeHD.net | <img
src="https://github.com/user-attachments/assets/c472be83-362e-4c59-b245-bd99bc229934"
width="100"><br> |
[https://img.gommehd.net/128x128/logo.png](https://img.gommehd.net/128x128/logo.png)
|
## Note
For `CSGORoll` and `GommeHD.net`, I couldn't find official .svg files.
As a result, I converted the low-resolution .png sources to .svg, which
may not look perfect. Feel free to search for better-quality assets if
needed.
2025-01-17 14:04:41 +05:30
Manav Rathi
df04d0ec2e [desktop] Add MetaInfo (#4757)
## Description

Add AppStream MetaInfo for https://github.com/flathub/flathub/pull/6032,
similar to
[enteauth.appdata.xml](https://github.com/ente-io/ente/blob/main/auth/linux/packaging/enteauth.appdata.xml).
2025-01-17 14:04:37 +05:30
Neeraj
4de573190b [server] Switch to forked version of go-srp (#4748)
## Description

The custom forks fixes couple of padding related issues in the original
library.
Changes can be reviewed here
https://github.com/Kong/go-srp/compare/master...ente-io:go-srp:master
## Tests
2025-01-17 14:01:08 +05:30
Manav Rathi
8e044f4f50 Fix font 2025-01-17 13:51:37 +05:30
Manav Rathi
2ef78be038 fainter 2025-01-17 13:39:17 +05:30
Manav Rathi
cb90e064ab Remove unnecessary customization 2025-01-17 13:06:04 +05:30
Manav Rathi
18d091ea4e Extract 2025-01-17 12:59:49 +05:30
Manav Rathi
82a2c6e12b For now 2025-01-17 12:50:56 +05:30
Manav Rathi
cb085ba0f3 Use channel style 2025-01-17 12:48:58 +05:30
Manav Rathi
491e446454 Remove hardcoded 2025-01-17 12:42:04 +05:30
Manav Rathi
bfe62d2209 LF 2025-01-17 12:07:48 +05:30
Manav Rathi
0a359b0835 Remove hardcoded 2025-01-17 12:05:21 +05:30
Manav Rathi
1a1b5cac3b Remove prop from styled LinkButton 2025-01-17 11:40:10 +05:30
Manav Rathi
0b95e84143 Tweak spacing 2025-01-17 10:39:46 +05:30
Manav Rathi
c5ab6e7c66 Improve 2025-01-17 10:29:00 +05:30
Manav Rathi
6fe6233664 Swap 2025-01-17 10:10:55 +05:30
Manav Rathi
38895eaf56 Unprop 2025-01-17 10:03:33 +05:30
Manav Rathi
9e91029105 dedup 2025-01-17 10:00:20 +05:30
Manav Rathi
169af1628d Ditto 2025-01-17 09:55:23 +05:30
Manav Rathi
634aa10aff in css 2025-01-17 09:43:52 +05:30
NN708
03903ae605 [desktop] Add MetaInfo 2025-01-17 11:08:18 +08:00
Manav Rathi
8961939d37 Theme 2025-01-17 08:02:45 +05:30
Manav Rathi
870cb61adb Theme 2025-01-17 07:58:26 +05:30
Manav Rathi
786b0bac4f Smoother animation 2025-01-17 07:38:41 +05:30
Manav Rathi
03deaa9b8e Use 2025-01-17 07:35:15 +05:30
Manav Rathi
2117a5b6e8 Conv 2025-01-17 07:34:13 +05:30
Manav Rathi
a002733d3f [web] UI color related improvements (#4751)
Prep for light mode (continuation of
https://github.com/ente-io/ente/pull/4741)
2025-01-16 19:34:04 +05:30
Manav Rathi
3008fac19c Const 2025-01-16 19:28:09 +05:30
Manav Rathi
3f324a599c Prep 2025-01-16 19:21:36 +05:30
Manav Rathi
67acabf7c7 Fix 2025-01-16 19:17:45 +05:30
Manav Rathi
03c1ff366f Fix 2025-01-16 19:15:25 +05:30
Manav Rathi
94eef9b596 Prep for merge 2025-01-16 18:52:02 +05:30
Manav Rathi
fb70460ec5 Sel 2025-01-16 18:08:32 +05:30
laurenspriem
57e8eb7c03 [mob][photos] Force clustering on unclustered face 2025-01-16 17:55:39 +05:30
Manav Rathi
d8443c5f6f Match Figma (better, but still not exactly) 2025-01-16 17:46:53 +05:30
Neeraj Gupta
5c7127cba9 Fix lint 2025-01-16 17:38:52 +05:30
Neeraj Gupta
b871f00150 Fix pkg version 2025-01-16 17:35:12 +05:30
Neeraj Gupta
bc8ebab531 clean up 2025-01-16 17:32:11 +05:30
Neeraj Gupta
b70b00cda4 Add dependency on fork to track changes 2025-01-16 17:10:51 +05:30
Neeraj Gupta
52653b6fe4 Clean up logs 2025-01-16 16:52:00 +05:30
Neeraj Gupta
0b26d9abc5 Add missing padding 2025-01-16 16:06:09 +05:30
Manav Rathi
d2defe4d27 Use 2025-01-16 16:06:03 +05:30
Manav Rathi
926e179d57 Rename to disambiguate from Overlay 2025-01-16 15:52:32 +05:30
Manav Rathi
b7841e2aee Use theme color 2025-01-16 15:47:18 +05:30
Neeraj Gupta
77fdfe84ec [server] Add missing padding 2025-01-16 15:34:42 +05:30
laurenspriem
d9fc53137d [mob][photos] Dont double run clustering 2025-01-16 15:32:36 +05:30
laurenspriem
470d14d81f [mob][photos] Rename 2025-01-16 15:24:52 +05:30
laurenspriem
5611f2f9d9 [mob][photos] Rename function 2025-01-16 15:22:57 +05:30
Neeraj Gupta
5302f67679 [server] Update srp validation 2025-01-16 15:20:50 +05:30
Manav Rathi
4ed620db28 Fix default hidden collection download 2025-01-16 15:17:44 +05:30
Manav Rathi
c4f2e9e319 Overrides 2025-01-16 15:17:44 +05:30
Manav Rathi
b7dd90158b Fix font weights
normal is the CSS keyword which resolves to 400, which is not what we want (500).
2025-01-16 15:17:44 +05:30
Manav Rathi
ba6418fcf2 Fix 2025-01-16 15:17:44 +05:30
Manav Rathi
806839d5ab Fix 2025-01-16 15:17:44 +05:30
Manav Rathi
f324e5e11c Switching theme reveals more 2025-01-16 15:17:43 +05:30
Manav Rathi
d24f9aff72 Temp fix 2025-01-16 15:17:43 +05:30
Manav Rathi
20bbd61fce Dropdown revert 2025-01-16 15:17:43 +05:30
Manav Rathi
24aff9268a Remove hardcoded 2025-01-16 15:17:43 +05:30
Manav Rathi
588236dcb4 Fix 2025-01-16 15:17:43 +05:30
Manav Rathi
e4b26e7e74 Crop 2025-01-16 15:17:43 +05:30
Manav Rathi
61cd5de725 Remove hardcoded black 2025-01-16 15:17:43 +05:30
Manav Rathi
7310d4da03 const 2025-01-16 15:17:43 +05:30
Manav Rathi
804b91b825 Fix + TODO 2025-01-16 15:17:43 +05:30
Manav Rathi
c7fab49d68 Rename 2025-01-16 15:17:43 +05:30
Manav Rathi
75c3c54a5a Shift 2025-01-16 15:17:43 +05:30
Manav Rathi
59e3f864ce why? 2025-01-16 15:17:43 +05:30
Manav Rathi
1322739707 Move 2025-01-16 15:17:43 +05:30
Manav Rathi
c72b4a428a unlints 2025-01-16 15:17:43 +05:30
Manav Rathi
59f6bb5f48 Cleanup 2025-01-16 15:17:43 +05:30
Manav Rathi
1915fa0bb6 Prune 2025-01-16 15:17:43 +05:30
Manav Rathi
5f5de6b640 ts 2025-01-16 15:17:43 +05:30
Manav Rathi
944caafe76 Fix 2025-01-16 15:17:43 +05:30
Manav Rathi
6171488375 Take 1 2025-01-16 15:17:43 +05:30
Manav Rathi
5328e6cfee wip checkpoint 2025-01-16 15:17:43 +05:30
laurenspriem
429fcbf062 [mob][photos] Better logging 2025-01-16 15:16:10 +05:30
Bl4ckspell
8366a8fe4d [Auth] Add Badlion logo (#4746)
## Description
Source:
[https://www.badlion.net/wiki/resources](https://www.badlion.net/wiki/resources)
2025-01-16 11:20:11 +05:30
Manav Rathi
9e8e2af51d [web] UI color related improvements (#4741)
Prep for light mode.
2025-01-15 19:32:16 +05:30
Manav Rathi
b0318e4ec3 Trim 2025-01-15 19:22:18 +05:30
Manav Rathi
78dc93f6d7 wip rework 2025-01-15 19:05:05 +05:30
Manav Rathi
12793858d0 Doc and move 2025-01-15 18:54:11 +05:30
Manav Rathi
c7896d0e68 USe 2025-01-15 18:44:47 +05:30
Manav Rathi
038a08f583 Use 2025-01-15 18:39:54 +05:30
Manav Rathi
b316947548 Extract 2025-01-15 18:33:50 +05:30
Manav Rathi
2db54bc1ce Conv 2025-01-15 18:18:49 +05:30
Manav Rathi
d2bdec909d Conv 2025-01-15 18:12:57 +05:30
Manav Rathi
5477d09155 Conv 2025-01-15 18:10:35 +05:30
Manav Rathi
bd0b3aadf8 Rework 2025-01-15 18:03:17 +05:30
Manav Rathi
dea20345da Rework 2025-01-15 17:44:07 +05:30
Manav Rathi
ba0ea26e93 Conv 2025-01-15 17:24:48 +05:30
Manav Rathi
d34cb01a07 Conv 2025-01-15 17:12:46 +05:30
Manav Rathi
d3b1f0f5ab Conv 2025-01-15 16:48:31 +05:30
Manav Rathi
7913debe8c No chevron there anymore 2025-01-15 16:39:56 +05:30
Manav Rathi
f282761ad2 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
351883c002 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
fc81dd9df3 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
f61ba74797 Update 2025-01-15 16:36:21 +05:30
Manav Rathi
9602d70a14 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
e620116371 pigmentize 2025-01-15 16:36:21 +05:30
Manav Rathi
ed6ea753a2 Scope 2025-01-15 16:36:21 +05:30
Manav Rathi
dd01a4aaa5 Hover and use 2025-01-15 16:36:21 +05:30
Manav Rathi
16747b48b0 fp 2025-01-15 16:36:21 +05:30
Manav Rathi
4cf3302cff Tweak 2025-01-15 16:36:21 +05:30
Manav Rathi
51597ed48d prep for pigment 2025-01-15 16:36:21 +05:30
Manav Rathi
131cf43f73 Tweak API 2025-01-15 16:36:21 +05:30
Manav Rathi
ad4716256e Tweak 2025-01-15 16:36:21 +05:30
Manav Rathi
4c1e434b96 Visual fix 2025-01-15 16:36:21 +05:30
Manav Rathi
7417bb6830 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
e475c0d507 Reduce prop scope 2025-01-15 16:36:21 +05:30
Manav Rathi
f3f7d67fb3 Simplify 2025-01-15 16:36:21 +05:30
Manav Rathi
c44e558259 Update 2025-01-15 16:36:21 +05:30
Manav Rathi
038b47ebeb Tweak 2025-01-15 16:36:21 +05:30
Manav Rathi
e996664b57 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
8b9830fe79 Improve focus visible and add active state for switch 2025-01-15 16:36:21 +05:30
Manav Rathi
75149a4a70 m 2025-01-15 16:36:21 +05:30
Manav Rathi
66e85567a6 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
36f7bb5364 Tweak 2025-01-15 16:36:21 +05:30
Manav Rathi
58db7e8a91 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
d7e62f2b26 Seeing blue 2025-01-15 16:36:21 +05:30
Manav Rathi
a1117da632 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
003f1ec0e8 Conv 2025-01-15 16:36:21 +05:30
Manav Rathi
a0078dd966 In palette 2025-01-15 16:36:21 +05:30
Manav Rathi
6a71d6359a Inline 2025-01-15 16:36:20 +05:30
Manav Rathi
04ea4ac027 [desktop] Fix regression causing people suggestions not to appear in empty state (#4739)
When the search bar was empty, previously we would show people
suggestions. This
was accidentally circumvented; fix it.
2025-01-15 16:34:06 +05:30
Manav Rathi
5074f7d9f4 [desktop] Fix regression causing people suggestions not to appear in empty state
When the search bar was empty, previously we would show people suggestions. This
was accidentally circumvented; fix it.
2025-01-15 16:28:33 +05:30
Neeraj Gupta
125f386df1 [auth] Bump version 2025-01-15 15:55:45 +05:30
Neeraj Gupta
41ed5dd17e [auth] Fix manual code setup 2025-01-15 15:55:45 +05:30
Neeraj
6031101600 [server] Legacy email reminder (#4737)
## Description
- Sends email when account is ready to be recovered
- Keep sending reminder email every 7 days, till T-2 day when a recovery
attempt is in waiting.

## Tests
Did monkey testing locally by modifying the DB time
2025-01-15 15:48:45 +05:30
Neeraj Gupta
73a8550844 [server] Add remaining mails for legacy 2025-01-15 15:41:13 +05:30
mngshm
2c6022186c remove token print 2025-01-15 15:22:52 +05:30
mngshm
1713be30b7 reset Sidebar/index.ts 2025-01-15 15:20:41 +05:30
mngshm
629cbe6887 fix lint issue specifically for Sidebar/index.ts 2025-01-15 14:06:13 +05:30
mngshm
c2306ed4e9 reorganize getToken import line 2025-01-15 13:52:16 +05:30
mngshm
7d1670d210 condition for instanceof HTMLInputElement 2025-01-15 13:33:14 +05:30
mngshm
1638b7584f reorganize getToken import line 2025-01-15 12:41:30 +05:30
Laurens Priem
bf256863b9 [mob][photos] Bump for release (#4735)
## Description

## Tests
2025-01-15 07:50:15 +01:00
laurenspriem
e7aeef6e2e [mob][photos] Bump for release 2025-01-15 12:18:42 +05:30
Laurens Priem
3a77db9ff6 [mob][photos] Fix regression with Persons (#4734)
## Description

Fix regression causing the Person entities to not load properly on
mobile.
2025-01-15 07:43:56 +01:00
laurenspriem
00c279096d [mob][photos] Format 2025-01-15 12:00:44 +05:30
laurenspriem
a913e2c6e7 [mob][photos] Fix person issue 2025-01-15 11:54:27 +05:30
Neeraj Gupta
05f86b8951 [auth] Potential fix for segfault on Linux due to bad window size 2025-01-15 11:12:17 +05:30
Manav Rathi
2396cc8d30 [web] Switch to CSS vars based color schemes (#4730) 2025-01-15 10:56:04 +05:30
Manav Rathi
52f3e7a293 lf 2025-01-15 10:53:08 +05:30
Manav Rathi
a15c9620ec Static 2025-01-15 10:45:27 +05:30
Manav Rathi
626b403657 T 2025-01-15 10:28:52 +05:30
Manav Rathi
20310d2ef5 Update 2025-01-15 10:20:38 +05:30
Manav Rathi
75e146e23b Fix lints 2025-01-15 09:53:52 +05:30
Manav Rathi
bfabeaefb9 Move 2025-01-15 09:52:50 +05:30
Manav Rathi
882d66ee52 Remove old state 2025-01-15 09:48:04 +05:30
Manav Rathi
16a804c329 Selector 2025-01-15 09:28:49 +05:30
Manav Rathi
db77e45aab Enable css vars based color schemes
https://mui.com/blog/material-ui-v6-is-out/
2025-01-15 08:57:20 +05:30
Manav Rathi
9e1570032a [web] Translation improvements (#4728) 2025-01-15 08:43:59 +05:30
Manav Rathi
cb88e1662b Simplify 2025-01-15 08:37:49 +05:30
Manav Rathi
80bea2b31b R 2025-01-15 08:31:51 +05:30
Manav Rathi
b63d6ad859 Fix casing 2025-01-15 08:28:15 +05:30
Manav Rathi
d13e9bc11a [web] Color related code improvements (#4720) 2025-01-14 21:29:27 +05:30
Manav Rathi
8bfb5fcba5 Conv 2025-01-14 21:22:33 +05:30
Manav Rathi
794fe3cad6 2fa 2025-01-14 21:10:11 +05:30
Manav Rathi
1b9ad83653 2f 2025-01-14 20:44:57 +05:30
Manav Rathi
7236b24d96 Swap danger 2025-01-14 20:36:59 +05:30
Manav Rathi
7757409976 active 2025-01-14 20:31:29 +05:30
Manav Rathi
58150319f0 Light 2025-01-14 20:19:32 +05:30
Manav Rathi
b4b719ffc4 Use 2025-01-14 20:09:03 +05:30
Manav Rathi
4fc82e2b98 Patch 2025-01-14 19:55:38 +05:30
Manav Rathi
6b55e8598f crs 2025-01-14 19:52:58 +05:30
Manav Rathi
f50c88fd15 Backdrop 2025-01-14 19:50:16 +05:30
Neeraj Gupta
d968310f73 [mob] Update moments section for internal users 2025-01-14 17:38:10 +05:30
Laurens Priem
4a27596a2e [mob][photos] Fix hidden file for face (#4718)
## Description

## Tests
2025-01-14 13:04:35 +01:00
Manav Rathi
8fef83adaf Fix 2025-01-14 17:05:49 +05:30
Manav Rathi
baa081510e Remove other uses of text.secondary 2025-01-14 17:02:53 +05:30
Manav Rathi
77248175c2 Default is standard, but I don't see how it is different
We're anyways overriding the bg and color of the buttons in this toggle group.
2025-01-14 16:57:58 +05:30
Manav Rathi
c506346c2a Remove unnecessary primary 2025-01-14 16:40:15 +05:30
Manav Rathi
4c75253e0a To misc 2025-01-14 16:32:36 +05:30
mngshm
e81b6acbdd fix lint? 2025-01-14 16:32:21 +05:30
mngshm
08278fb169 fix: formatting ;-; 2025-01-14 16:30:26 +05:30
mngshm
09d2158ca4 add basic functionality for 'update-token' feature 2025-01-14 16:28:53 +05:30
laurenspriem
25d66dd238 [mob][photos] Fix hidden file for face 2025-01-14 15:20:44 +05:30
Manav Rathi
52cbd024f7 Document why 2025-01-14 15:14:35 +05:30
Manav Rathi
fdd7f20518 Disable ripple on checkboxes 2025-01-14 15:07:41 +05:30
Manav Rathi
44566d7e64 Inline to avoid text.secondary 2025-01-14 14:38:20 +05:30
Manav Rathi
397248557b Inline to avoid text.secondary 2025-01-14 14:29:41 +05:30
Manav Rathi
2a532cf1d2 Doc 2025-01-14 14:24:38 +05:30
Manav Rathi
62edaa62d8 Doc 2025-01-14 14:16:05 +05:30
Manav Rathi
b41909477e Doc 2025-01-14 14:15:07 +05:30
Manav Rathi
4926783905 Fin 2025-01-14 14:00:26 +05:30
Neeraj Gupta
680ddce30e [mob] Bump version v0.9.79 2025-01-14 13:34:30 +05:30
Manav Rathi
e593274fec Paper 2025-01-14 13:32:14 +05:30
Laurens Priem
572b026d01 [mob][photos] Update if pause is over (#4715)
## Description

## Tests
2025-01-14 08:58:32 +01:00
laurenspriem
7baa19e5f1 [mob][photos] Update if pause is over 2025-01-14 13:25:07 +05:30
Manav Rathi
085e11302c ts 2025-01-14 12:51:56 +05:30
Manav Rathi
f925d98686 Fixed 2025-01-14 12:48:54 +05:30
Manav Rathi
8b038e7439 Clean 2025-01-14 12:21:30 +05:30
Manav Rathi
3db0b73648 Rearrange 2025-01-14 12:09:28 +05:30
Manav Rathi
474f9b8433 Reduce interface 2025-01-14 12:08:48 +05:30
Laurens Priem
0feebde0b9 [mob][photos] Remove cluster bug (#4714)
## Description

## Tests
2025-01-14 07:33:22 +01:00
laurenspriem
b97a994f08 [mob][photos] Remove cluster bug 2025-01-14 11:58:31 +05:30
Manav Rathi
e8f11effe7 Cleanup 2025-01-14 11:57:51 +05:30
Manav Rathi
8560304b1d Palette var 2025-01-14 11:51:57 +05:30
Manav Rathi
4a6910ce46 Gen and inline 2025-01-14 11:13:24 +05:30
Laurens Priem
ca5c5b3bed [mob][photos] Fix issue with null person data (#4713)
## Description

## Tests
2025-01-14 06:37:51 +01:00
Manav Rathi
3f38ed4611 Doc 2025-01-14 10:55:30 +05:30
laurenspriem
bb6ad42084 [mob][photos] Type check 2025-01-14 10:48:10 +05:30
Manav Rathi
537f1c3d0c Split 2025-01-14 10:40:30 +05:30
Manav Rathi
07944d9ac0 Doc 2025-01-14 10:26:05 +05:30
Manav Rathi
db8270987b doc 2025-01-14 10:26:05 +05:30
Neeraj
9a527a15f5 [auth] Fix export with invalid algo name (#4712)
## Description
Fixes https://github.com/ente-io/ente/issues/4404
## Tests
2025-01-14 10:19:59 +05:30
Neeraj Gupta
ab3589a2b1 [auth] Bump version 2025-01-14 10:15:46 +05:30
Neeraj Gupta
6df88cda36 [auth] Fix export for imports with invalid algoname 2025-01-14 10:15:25 +05:30
Neeraj Gupta
d2b16bd84b [auth] Fix import 2025-01-14 09:40:00 +05:30
Neeraj Gupta
d08bb5ea11 [auth] Handle invalid export of Google Auth codes 2025-01-14 09:38:54 +05:30
Neeraj
a1779af68d [auth] Fix workflow for Ubuntu build (#4711)
## Description

## Tests
2025-01-14 09:05:27 +05:30
Neeraj Gupta
0c690efc38 [auth] Fix workflow for Ubuntu build 2025-01-14 09:04:47 +05:30
Neeraj
975eabab60 [auth] Update Github build action (#4710)
## Description

## Tests
2025-01-14 08:48:50 +05:30
Neeraj Gupta
82225a0f2a [auth] Update Github build action 2025-01-14 08:48:22 +05:30
Neeraj
36afb54925 [auth] Update Github build action (#4709)
## Description

## Tests
2025-01-14 08:42:26 +05:30
Neeraj Gupta
61e8a86ca5 [auth] Update Github build action 2025-01-14 08:41:21 +05:30
Neeraj
cdff3b8099 [auth] Update version (#4708)
## Description

## Tests
2025-01-14 08:09:58 +05:30
Neeraj Gupta
1e792e392e [auth] Update version 2025-01-14 08:09:28 +05:30
Neeraj
379622a986 [auth] Fix logo for Enom (#4707)
Fix enom logo "slug"

## Description
Enom logo wasn't working

## Tests
tested this edit on the desktop version and worked.
2025-01-14 08:08:30 +05:30
ludespeedny
cf9711580c Update custom-icons.json
Fix enom logo "slug"
2025-01-13 20:09:24 -05:00
Neeraj
2661a99dae [auth] Fix content not scrolling when font size set to large (#4700)
## Description
Fix #4399 
  

![image](https://github.com/user-attachments/assets/f5d7186e-a29b-4eed-98bc-68521599f3bf)



![image](https://github.com/user-attachments/assets/65409fab-37c2-4f6e-9f78-7c84c2c0d095)
2025-01-14 06:21:06 +05:30
Neeraj
8afb88d7dc [auth] fix generic icon not updating when issuer name is changed (#4705)
## Description
Fix #4683 
1. If the name of `issuer` is change the icon is updated accordingly
2. If the `issuer` name and the `custom icon` (from the icon picker)
both are changed than the final icon is selected from the custom icon.

## Tests
2025-01-14 06:20:42 +05:30
Aman Raj Singh Mourya
6ed24b413b [auth] fix generic icon not updating when issuer name is changed 2025-01-13 23:01:45 +05:30
Manav Rathi
c912776273 [desktop] notifyImmediately for updates when triggered by user action (#4704) 2025-01-13 20:43:57 +05:30
Manav Rathi
fee24b331e [desktop] notifyImmediately for updates when triggered by user action 2025-01-13 20:39:32 +05:30
Manav Rathi
3ab14e106c [desktop] The next beta release train rolls into the platform (#4703) 2025-01-13 19:57:16 +05:30
Manav Rathi
95010eb8c8 [desktop] The next beta release train rolls into the platform 2025-01-13 19:55:19 +05:30
Manav Rathi
e33394129f photosd-v1.7.8 (#4702) 2025-01-13 19:30:34 +05:30
Manav Rathi
c2803fd7c0 photosd-v1.7.8 2025-01-13 19:28:53 +05:30
Manav Rathi
72b78aa3ab [docs] Use relative link (#4701) 2025-01-13 19:26:49 +05:30
Manav Rathi
46f2d33281 [docs] Use relative link 2025-01-13 19:24:39 +05:30
Neeraj
ef159540db [auth] Use issuerName as default sort key (#4699)
## Description

Resolves https://github.com/ente-io/ente/issues/4670 (confusion for
users who upgrade or install the app on a new device)


## Tests
2025-01-13 17:02:14 +05:30
mngshm
c750f2ea7e add: dashboard redirection button in photos app
while this is temporary. The baseURL hardcoding will be removed in the near future.

pushing this to keep a track of changes happening
2025-01-13 16:59:37 +05:30
Neeraj Gupta
b9f519d4ad [auth] Use issuerName as default sort key 2025-01-13 16:59:21 +05:30
Aman Raj Singh Mourya
c79400c6d5 [auth] fix content not show when font size set to large from device settings 2025-01-13 16:58:41 +05:30
mngshm
57a2650e8d fix: useEffect() syntax and formatting 2025-01-13 16:57:26 +05:30
mngshm
cfe86b00aa auto-fill search bar for token and wrap input fields in single div 2025-01-13 16:21:33 +05:30
Neeraj
d99d6eedc5 [auth] Update auth ios icon (#4698)
## Description

## Tests
2025-01-13 16:17:20 +05:30
Neeraj Gupta
d691dff28c Merge remote-tracking branch 'origin/main' into iosIcons 2025-01-13 16:10:16 +05:30
Neeraj Gupta
f7ee2512aa [auth] update ios icons 2025-01-13 16:09:37 +05:30
Neeraj Gupta
6ca447f730 [auth] Fix auth launch background color 2025-01-13 16:00:51 +05:30
Neeraj
08e05d513f [auth] Fix privacy screen color for dark mode (#4696)
## Description

## Tests
2025-01-13 15:52:03 +05:30
Yoann Dumont
3999115b3a [auth] Adding 2 new custom icons for AzurHosts, MineNode and AzurWare (#4678)
Add 2 new icons : 
<img
src="https://github.com/user-attachments/assets/f8a68248-e4e3-4d51-8675-b4098496741a"
alt="azurhosts" width="64" height="64">
<img
src="https://github.com/user-attachments/assets/6029cdd6-7a61-480e-a562-d684e7955794"
alt="azurware" width="64" height="64">
2025-01-13 15:49:53 +05:30
Neeraj Gupta
cc1037afa8 [auth] Fix privacy screen color for dark mode 2025-01-13 15:48:58 +05:30
Manav Rathi
1190b570ac [desktop] Fix drag and drop on watch folders dialog (#4694) 2025-01-13 13:45:00 +05:30
Manav Rathi
d8a5fbce22 Tweak 2025-01-13 13:38:49 +05:30
Manav Rathi
e1316b443e Button 2025-01-13 13:33:16 +05:30
Manav Rathi
f64edf088a T 2025-01-13 13:26:46 +05:30
Manav Rathi
ebdccfad14 T 2025-01-13 13:16:07 +05:30
Manav Rathi
8fa18e9993 Move 2025-01-13 13:12:45 +05:30
Manav Rathi
50245fd6ea Tweak 2025-01-13 13:11:24 +05:30
Manav Rathi
fe16c0128e [desktop] Fix drag and drop on watch folders dialog 2025-01-13 13:05:27 +05:30
laurenspriem
044136ab0e [mob][photos] Simplify 2025-01-13 12:33:33 +05:30
Manav Rathi
ff787fde99 Rearrange 2025-01-13 12:26:12 +05:30
Manav Rathi
0251144b11 [web] Restore translations for search (#4690)
Crowdin apparently overrode them even when we selected the option to
retain translations when changing the case and then manually fixing the
case in their web UI.
2025-01-13 09:42:26 +05:30
Manav Rathi
2f673be3b3 [web] Restore translations for search
Crowdin apparently overrode them even when we selected the option to retain
translations when changing the case and then manually fixing the case in their
web UI.
2025-01-13 09:22:46 +05:30
Manav Rathi
51e8cba473 [web] New translations (#4687)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-13 09:14:21 +05:30
Crowdin Bot
a8f5281e93 New Crowdin translations by GitHub Action 2025-01-13 03:42:35 +00:00
Jonathan Beliën
3d999b3fcb [Auth] Add Fastmail logo (#4685)
## Description

Add Fastmail logo for Ente Auth.

I've initially wanted to use the official logo available from
https://www.fastmail.com/media-kit/ but I noticed you need SVG, so I
went to https://commons.wikimedia.org/wiki/File:Fastmail_icon_2019.svg

Hexadecimal color is also from Logo guidelines
(https://www.fastmail.com/assets/brand/Fastmail-Logo-Guidelines-March-2019-V1.pdf).

## Tests
2025-01-13 09:08:53 +05:30
Manav Rathi
d249346f28 Update RUNNING.md (#4684)
Fix link to 'Running without docker'
2025-01-13 09:04:58 +05:30
Neeraj
c718ecee10 [mobile] New translations (#4688)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-01-13 09:04:44 +05:30
Neeraj
8385ae40e2 [auth] New translations (#4689)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-01-13 09:04:17 +05:30
Crowdin Bot
9fc544d4b1 New Crowdin translations by GitHub Action 2025-01-13 01:17:34 +00:00
Crowdin Bot
3c169ec452 New Crowdin translations by GitHub Action 2025-01-13 01:05:20 +00:00
optisamit
787a4c9684 Update RUNNING.md
Fix link to 'Running without docker'
2025-01-12 16:34:40 +02:00
Vishnu Mohandas
73674259f2 [auth] Fix app bar Icon spacing (#4681)
## Description

![image](https://github.com/user-attachments/assets/6978b416-6942-4424-8c35-1da5dc42aaa6)

## Tests
2025-01-12 12:35:13 +05:30
Aman Raj Singh Mourya
eb635bc3b3 [auth] fix app bar icon spacing 2025-01-12 12:12:57 +05:30
Neeraj
025982c149 [auth] Enable translation for more languages (#4674)
## Description

## Tests
2025-01-11 16:33:25 +05:30
Neeraj Gupta
f2b5a39ca9 [auth] Fix translation 2025-01-11 16:31:26 +05:30
Neeraj Gupta
eec79447dc [auth] Ignore macos/build 2025-01-11 16:24:14 +05:30
Neeraj Gupta
7ffdcb4f13 [auth] Fix order 2025-01-11 16:23:27 +05:30
Neeraj Gupta
da79d1fad3 Merge remote-tracking branch 'origin/main' into enable_lang 2025-01-11 16:22:42 +05:30
Neeraj
018d91d5d1 [auth] New translations (#4675)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-01-11 16:22:30 +05:30
Crowdin Bot
49d5be35c2 New Crowdin translations by GitHub Action 2025-01-11 10:51:50 +00:00
Neeraj Gupta
81bf43e269 [auth] Enable translation for more languages 2025-01-11 16:18:51 +05:30
Neeraj Gupta
9fe58e44b0 [server] Improve recovery initialization validation 2025-01-11 15:22:42 +05:30
Neeraj
6dc59e35e6 [auth] Update flatpak version (#4668)
## Description

## Tests
2025-01-11 13:20:24 +05:30
Neeraj Gupta
023c5185ce Update flatpak version 2025-01-11 13:16:57 +05:30
Neeraj
54f9908eff [auth][mob] Gracefully handle registration error (#4666)
## Description

## Tests
2025-01-11 12:19:01 +05:30
Neeraj Gupta
d8118d10dc [mob] Handle registration error 2025-01-11 12:13:33 +05:30
Neeraj Gupta
5bd0d3369d [auth] Handle registration error 2025-01-11 11:57:19 +05:30
Vishnu Mohandas
8263eb3912 [museum] Update mail (#4665) 2025-01-11 11:21:11 +05:30
vishnukvmd
a5fc5a75a8 [museum] Update mail 2025-01-11 11:20:40 +05:30
Neeraj
9306a4df57 [auth] Bump version & hide import from gallery for external users (#4664)
## Description

## Tests
2025-01-11 11:18:31 +05:30
Neeraj Gupta
df30a3e768 [auth] Bump version 4.2.4 2025-01-11 11:13:50 +05:30
Neeraj Gupta
4056787721 Show import from gallery for internal users 2025-01-11 11:13:28 +05:30
Neeraj
18f398f6c2 [auth] Fix 2fas import (#4663)
## Description

## Tests
2025-01-11 11:11:06 +05:30
Neeraj Gupta
69911f6c02 [auth] Fix 2fas import 2025-01-11 11:01:06 +05:30
Neeraj
b94f9c9616 [mob] Fix stuck uploads due to lock & surface upload error on backup status (#4658)
## Description

## Tests
2025-01-11 09:34:56 +05:30
Neeraj Gupta
c18dec516a [mob] Lint fix 2025-01-11 09:32:47 +05:30
Neeraj Gupta
1c4581d56d [mob] Eager release log in case of silent errors 2025-01-11 09:29:22 +05:30
Neeraj Gupta
63ad770f39 [mob] Change buffer from 24h to 4h 2025-01-11 09:13:54 +05:30
Manav Rathi
a483a20112 [web] Notification UI level improvements (#4660) 2025-01-10 20:01:25 +05:30
Manav Rathi
b23f9a1a88 Fix types 2025-01-10 19:52:03 +05:30
Manav Rathi
41e90ce3b6 Fix 2025-01-10 19:48:07 +05:30
Manav Rathi
719f548185 Fix 2025-01-10 19:35:45 +05:30
Manav Rathi
ee4cf8885d Improve 2025-01-10 19:26:59 +05:30
Manav Rathi
3436cfc266 Tweak 2025-01-10 19:04:44 +05:30
Manav Rathi
2c5d5f8d35 Button cannot contain another button 2025-01-10 18:47:08 +05:30
Manav Rathi
d8e7415c36 Use 2025-01-10 18:35:23 +05:30
Manav Rathi
b97c2ccedb new-ify 2025-01-10 18:29:51 +05:30
Manav Rathi
cbf221500a Doc 2025-01-10 18:17:57 +05:30
Manav Rathi
4e9e50fc4b nf 2025-01-10 18:00:40 +05:30
Neeraj Gupta
8db5efd5aa [mob] Fix bug that was causing lock to be not released in certain cases 2025-01-10 17:53:07 +05:30
Neeraj Gupta
d51d8f190a [mob] Show upload failure message on backup status 2025-01-10 17:41:22 +05:30
Manav Rathi
21c6e1eae2 Move 2025-01-10 17:26:18 +05:30
Manav Rathi
c9c36f7419 Minor ver updates 2025-01-10 17:11:59 +05:30
Manav Rathi
efcc7b6342 [web] Remove global styles (3/4) (#4659)
Only apps/photos is left.
2025-01-10 16:53:37 +05:30
Manav Rathi
ea2e9f1fd4 lf 2025-01-10 16:32:45 +05:30
Manav Rathi
b78efd441d Unglob 2025-01-10 16:26:11 +05:30
Manav Rathi
d87f8e04ee Unused 2025-01-10 16:25:16 +05:30
Manav Rathi
d2a787acbe Conv 2025-01-10 16:24:51 +05:30
Manav Rathi
b781e5a536 Use 2025-01-10 16:21:36 +05:30
Manav Rathi
2b72cd718e Prune 2025-01-10 16:15:35 +05:30
Manav Rathi
9618cd64c1 Update 2025-01-10 15:49:04 +05:30
Manav Rathi
874a7121b2 Use 2025-01-10 15:41:34 +05:30
Manav Rathi
1ea632d3e7 Reuse 2025-01-10 15:37:50 +05:30
Manav Rathi
c322bc7b04 Scope 2025-01-10 14:53:51 +05:30
Manav Rathi
705a93e6d6 Fix 2025-01-10 14:51:32 +05:30
Manav Rathi
6967fa4caf Update 2025-01-10 14:49:35 +05:30
Manav Rathi
54d3e8f7f5 Conv 2025-01-10 14:48:35 +05:30
Manav Rathi
46d0a6f1c8 Prune 2025-01-10 14:41:59 +05:30
Manav Rathi
96f3c7dd45 Auth doesn't have sidebar to redirect to change-email 2025-01-10 14:38:19 +05:30
Neeraj Gupta
86c6836dc6 [mob] Log last HB time for the BG task 2025-01-10 14:37:11 +05:30
Manav Rathi
0168e1d851 Prune 2025-01-10 14:36:31 +05:30
Manav Rathi
563df12262 conv 2025-01-10 14:34:01 +05:30
Manav Rathi
625be594d6 Fix 2025-01-10 14:31:27 +05:30
Neeraj Gupta
c0ce7a97b1 [mob] Reduce lock expiry buffer 2025-01-10 14:29:54 +05:30
Manav Rathi
563834a8fd gen 2025-01-10 14:27:19 +05:30
Manav Rathi
bb0294ef64 li 2025-01-10 14:20:55 +05:30
Manav Rathi
2368225578 Tweak 2025-01-10 13:57:41 +05:30
Manav Rathi
6a263e2176 Conv 2025-01-10 13:53:46 +05:30
Manav Rathi
642c9e611b Conv 2025-01-10 12:53:55 +05:30
Manav Rathi
fdded49bda Conv 2025-01-10 12:45:02 +05:30
Manav Rathi
17dd67afc0 Conv 2025-01-10 12:38:03 +05:30
Manav Rathi
ad5cad8e97 Reuse 2025-01-10 12:35:23 +05:30
Manav Rathi
5d7ca1ac44 Bespoke 2025-01-10 12:27:41 +05:30
Manav Rathi
c8b64f585c Fix 2025-01-10 12:09:16 +05:30
Manav Rathi
6db59247cd L2 2025-01-10 12:05:10 +05:30
Manav Rathi
96305adedc Tweak 2025-01-10 11:50:55 +05:30
Manav Rathi
6bef1d2e20 New layout 2025-01-10 11:49:27 +05:30
Neeraj
0a8f7a995b Fixes to make the source 32bit compatible (#4643)
## Description
I have tried to build ente server using the source and have found
various bugs that in a 64bit system would not pose an issue but when ran
on 32bit architecture would result in errors. After the fixes, Ente
works beautifully.

## Why bother merging?
I understand that Ente does not support 32bit architectures by nature
and hence there would be no point in merging this PR and solving these
issues but I have put this PR out there in hopes that it helps others
run Ente on their own desired architecture.

## Changes Description
1. `billing.go` - `storage` variables are not properly typed as int64
despite them being able to hold more than the 32bit integer limit. On a
32bit system, this will lead to an integer overflow (especially with the
default 5GB value). Typing them appropriately as an int64 will resolve
this bug and have no impacts on a 64bit execution.
2. `rate_limit.go` - The code as is will result in an unaligned 64bit
atomic operation ([read
more](https://blog.openziti.io/my-pi-day-journey-with-go-64-bit-alignment)).
In short, the fields were ordered in a way that `count` would start at
the middle of an 8-byte block which is not permitted. Aligning it by
reordering it does not affect the functional aspect but in terms of
golang's memory management, the int64 fields are now properly at an
8-byte boundary, fixing the issue.

## Other 32bit changes
To other open source tinkerers out there, if you wish to use Ente on a
32bit architecture, the dependencies will also need to be recompiled and
rebuilt as they do not have openly available docker images for arm32.
Feel free to use [my built
images](https://github.com/fourjr/ente-megarepo-arm32v7).
2025-01-10 11:19:59 +05:30
Neeraj
d8c68ed0ee [auth] Add QR Code Scanning from Saved Images for 2FA Setup (#4457) 2025-01-10 11:16:17 +05:30
Neeraj
683506a54e [mob] Improve index fetch when localIndexing is disabled (#4650)
## Description

## Tests
2025-01-10 10:57:47 +05:30
Manav Rathi
50350c6cc7 Up 2025-01-10 10:46:30 +05:30
Manav Rathi
43bc1b1374 Abstract 2025-01-10 10:33:58 +05:30
Manav Rathi
a859386edb R 2025-01-10 10:25:30 +05:30
Manav Rathi
fa9ba408a3 T 2025-01-10 10:08:17 +05:30
Manav Rathi
f3efad60f3 logs 2025-01-10 08:45:40 +05:30
Manav Rathi
287add7bb7 Remove glob 2025-01-10 08:30:44 +05:30
Manav Rathi
f00bc2ca5b Tweak 2025-01-10 08:28:54 +05:30
Manav Rathi
5e28110fc9 wip unglob 2025-01-10 08:21:03 +05:30
Manav Rathi
b921ca7493 wip Ungloblicate 2025-01-10 08:20:52 +05:30
Manav Rathi
c9b0b1ceea Remove global 2025-01-10 07:47:46 +05:30
Manav Rathi
bfaae99aaf Towards removing the global styles 2025-01-10 07:24:19 +05:30
Manav Rathi
cce6562a4d Comment 2025-01-10 07:21:49 +05:30
Manav Rathi
2c56f7e8c8 Simplify 2025-01-10 06:52:03 +05:30
Manav Rathi
39103e6937 [web] Misc improvements (non functional) (#4654) 2025-01-09 20:13:00 +05:30
Manav Rathi
ea417bd46a H 2025-01-09 19:57:11 +05:30
Manav Rathi
5f33fe9215 F 2025-01-09 19:48:14 +05:30
Manav Rathi
fe9cccd3ab LO 2025-01-09 19:46:03 +05:30
Manav Rathi
623bb66fa7 T 2025-01-09 19:29:43 +05:30
Manav Rathi
efb15e3866 T 2025-01-09 19:19:33 +05:30
Manav Rathi
f46a0befdf T 2025-01-09 19:06:19 +05:30
Manav Rathi
1d5af6f3bc T 2025-01-09 18:59:27 +05:30
Manav Rathi
784073df7f [web] Improve font handling (#4653) 2025-01-09 18:40:51 +05:30
Manav Rathi
f3852948c8 lf 2025-01-09 18:34:56 +05:30
Manav Rathi
02a1679255 uc 2025-01-09 18:30:57 +05:30
Manav Rathi
1570cf9745 From theme 2025-01-09 18:15:38 +05:30
Manav Rathi
df8108f027 mui 2025-01-09 18:12:17 +05:30
Manav Rathi
15dbd9ee3e Unused 2025-01-09 17:49:47 +05:30
Manav Rathi
a453668138 pk 2025-01-09 17:49:47 +05:30
Manav Rathi
60c136d9a9 T 2025-01-09 17:49:47 +05:30
Manav Rathi
ef5856abe4 T 2025-01-09 17:49:47 +05:30
Manav Rathi
6123d00361 Prune 2025-01-09 17:49:47 +05:30
Manav Rathi
e4990d1fd5 MU 2025-01-09 17:49:47 +05:30
Manav Rathi
485f0e25a7 sx 2025-01-09 17:49:47 +05:30
Manav Rathi
107cfe53bf Fix 2025-01-09 17:49:47 +05:30
Manav Rathi
2c2b8c1522 sx 2025-01-09 17:49:47 +05:30
Manav Rathi
fb9f99bc1c sx 2025-01-09 17:49:47 +05:30
Manav Rathi
35a47828e9 occam 2025-01-09 17:49:47 +05:30
Manav Rathi
940f91e4e1 Set h3 default to medium
In couple of places this changes the look, but this was intentional.
2025-01-09 17:49:46 +05:30
Manav Rathi
a6e16092f9 Fix 2025-01-09 17:49:46 +05:30
Manav Rathi
6db07c30e2 Update 2025-01-09 17:49:46 +05:30
Manav Rathi
dd41b1fb29 Update 2025-01-09 17:49:46 +05:30
Manav Rathi
3302a8a6ca Update 2025-01-09 17:49:46 +05:30
Manav Rathi
830185a089 Rest 2025-01-09 17:49:46 +05:30
Manav Rathi
e9153635ea NEXT_PUBLIC_ENTE_TRACE 2025-01-09 17:49:46 +05:30
Manav Rathi
5da89e0e65 Unused 2025-01-09 17:49:46 +05:30
Manav Rathi
a52a159691 Reuse 2025-01-09 17:49:46 +05:30
Manav Rathi
e47accb866 Medium 2025-01-09 17:49:46 +05:30
Manav Rathi
bd7e300959 fw 2025-01-09 17:49:46 +05:30
Manav Rathi
5456a17e04 Use Inter Var 2025-01-09 17:49:46 +05:30
Manav Rathi
f0d7343a69 Dup and redirect 2025-01-09 17:49:46 +05:30
Manav Rathi
81d031d03e Inline 2025-01-09 17:49:46 +05:30
Manav Rathi
1a3b51eb0e iv 2025-01-09 17:49:46 +05:30
Manav Rathi
baa44d98d1 Add debug instrumentation for route change 2025-01-09 17:49:46 +05:30
Manav Rathi
307a8bba88 [web] Fix video upload on metadata parsing errors (#4651) 2025-01-09 17:46:14 +05:30
Manav Rathi
404706f1ef [web] Fix video upload on metadata parsing errors 2025-01-09 17:45:08 +05:30
Neeraj Gupta
c49aeb0be8 Lint fix 2025-01-09 17:19:52 +05:30
Neeraj Gupta
feb9414636 [mob] Bump version 2025-01-09 15:28:33 +05:30
Neeraj Gupta
54be847f80 [mob] Extract strings 2025-01-09 15:27:59 +05:30
Neeraj Gupta
0a6121e1fa [mob] Fix fetch for shared file index when local indexing is disabled 2025-01-09 15:25:40 +05:30
Neeraj Gupta
fec2de85ad [mob] Show index percentage 2025-01-09 14:26:37 +05:30
Laurens Priem
719c7bb636 Better logging and handling of inconsistent person cluster mappings (#4642)
## Description

Better logs the case where clusters are mapped to non-existant Persons,
and deletes the mapping in such cases
2025-01-09 06:45:24 +01:00
Manav Rathi
a1c6e559d4 [web] Fix navbar in uncategorized section (#4648) 2025-01-09 09:41:54 +05:30
Manav Rathi
d2c1255a1c [web] Fix navbar in uncategorized section 2025-01-09 09:38:07 +05:30
Manav Rathi
b37a08ad1e Fixed link in web-app self-hosting guide (#4644)
## Description
- Fixes link to `local.yaml`

## Tests
- None
2025-01-09 06:55:33 +05:30
Tobias Genannt
1c43ca4123 Fixed link in web-app self-hosting guide 2025-01-08 16:22:54 +01:00
Yee Jia Rong
c0a3abb0ed Fixes to make the source 32bit compatible 2025-01-08 22:04:44 +08:00
laurenspriem
71dab9b5ac [mob][photos] Try catch log on transaction 2025-01-08 14:07:41 +01:00
laurenspriem
7aa476b19d [mob][photos] Log missing persons stronger 2025-01-08 14:04:14 +01:00
laurenspriem
5c42d797c7 [mob][photos] Log sentry 2025-01-08 13:53:08 +01:00
laurenspriem
cfa8054091 [mob][photos] Log in Sentry 2025-01-08 13:52:14 +01:00
laurenspriem
2d34e9e97c [mob][photos] Better log and handle clusterperson edge case 2025-01-08 13:47:52 +01:00
Neeraj
8fed95f3dc [mob] Shared indexing (#4639)
## Description

## Tests
2025-01-08 16:45:02 +05:30
Neeraj Gupta
0b4e225ccc [mob] Set old prop while creating shared link 2025-01-08 16:40:55 +05:30
Neeraj Gupta
6730953958 [mob] Bump version 2025-01-08 16:37:42 +05:30
Neeraj Gupta
0db5370dea Lint fix 2025-01-08 16:36:41 +05:30
Manav Rathi
065bc85cad [web] New translations (#4641)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-08 16:35:54 +05:30
Neeraj Gupta
132c270136 [mob] Avoid redudant state refresh when section is not expanded 2025-01-08 16:32:13 +05:30
Crowdin Bot
74373037fc New Crowdin translations by GitHub Action 2025-01-08 11:02:09 +00:00
Manav Rathi
921b8881ce [web] Prune and document the transKeepBasicHtmlNodesFor translation option (#4640) 2025-01-08 16:31:25 +05:30
Manav Rathi
9152960be0 Doc 2025-01-08 16:27:47 +05:30
Manav Rathi
c9685c97b5 Unused 2025-01-08 16:20:09 +05:30
Neeraj Gupta
188bb4a9f4 [mob] Included shared file in index count 2025-01-08 16:18:26 +05:30
Manav Rathi
5655b0e55b Un-div 2025-01-08 16:18:23 +05:30
Neeraj Gupta
ae0654fce4 Merge remote-tracking branch 'origin/main' into pull_shared_indexes 2025-01-08 16:08:35 +05:30
Neeraj Gupta
8ab6109a77 [mob] Index shared files 2025-01-08 16:08:21 +05:30
Neeraj
acc8f6974a [server] Fixed typo (#4638)
## Description

## Tests
2025-01-08 15:52:37 +05:30
Neeraj Gupta
e2f62a390d [server] Fixed typoe 2025-01-08 15:47:55 +05:30
Manav Rathi
60fcba38cc [meta] Minor fix to GHCR push workflow branch tagging (#4637) 2025-01-08 15:45:27 +05:30
Manav Rathi
7d12141199 [meta] Need to qualify the ref to push from a detached HEAD 2025-01-08 15:44:14 +05:30
Manav Rathi
228e1b17e4 [web] New translations (#4636)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-08 15:16:41 +05:30
Crowdin Bot
4e6ff712a2 New Crowdin translations by GitHub Action 2025-01-08 09:44:49 +00:00
Manav Rathi
0c344baf14 [web] Translation improvements (#4635) 2025-01-08 15:14:01 +05:30
Manav Rathi
72e39a23da R 2025-01-08 15:09:44 +05:30
Manav Rathi
762f6d6f1d R 2025-01-08 15:04:17 +05:30
Manav Rathi
e4bbac174a Unused + R 2025-01-08 15:02:39 +05:30
Manav Rathi
0724a26986 R 2025-01-08 14:58:54 +05:30
Manav Rathi
55a3eddb34 Dedup 2025-01-08 14:55:38 +05:30
Manav Rathi
5754e77b20 R 2025-01-08 14:54:54 +05:30
Manav Rathi
4004ceb8b1 R 2025-01-08 14:48:07 +05:30
Manav Rathi
8692b22da1 R 2025-01-08 14:36:14 +05:30
Manav Rathi
106acba45d Dedup 2025-01-08 14:31:20 +05:30
Manav Rathi
1b97fc24d8 R 2025-01-08 14:29:47 +05:30
Manav Rathi
52450de36a [web] New translations (#4634)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-08 14:26:23 +05:30
Crowdin Bot
71038a7e28 New Crowdin translations by GitHub Action 2025-01-08 08:55:34 +00:00
Manav Rathi
61b42a0f1a [desktop] Shared indexes (#4633)
Sibling of https://github.com/ente-io/ente/pull/4569
2025-01-08 14:24:46 +05:30
Neeraj
8656f698c0 [server] Enable metadata r/w for shared files (#4569)
## Description

## Tests
Will test happy cases and update here
2025-01-08 14:23:13 +05:30
Neeraj Gupta
db4b560a3c [server] Allow write metadata for shared files 2025-01-08 13:57:46 +05:30
Manav Rathi
ac3fbf8cb1 ui 2025-01-08 13:56:10 +05:30
Manav Rathi
af56da987e shared indexes 2025-01-08 12:59:09 +05:30
Neeraj
a33f5b83d5 [mob][auth] Add certificate fingerprint (#4632)
## Description

## Tests
2025-01-08 12:28:22 +05:30
Neeraj Gupta
3fb60c17c9 [auth] Add certificate fingerprint 2025-01-08 12:27:39 +05:30
Neeraj Gupta
645023a76d [mob] Pull shared indexes 2025-01-08 12:23:24 +05:30
Neeraj
8d804940b3 [mob] Add certificate fingerprint 2025-01-08 12:22:23 +05:30
Manav Rathi
7c4fe3c61b [desktop] Fix native thumbnail gen instead of using web fallback (#4631)
Broken in nightlies because of the recent react-dropzone update.
2025-01-08 12:11:28 +05:30
Manav Rathi
60fadbb465 Pin to fix a issue where drag and drop on desktop will not obtain file path 2025-01-08 12:05:36 +05:30
Ashil
50aff81d18 [mob][photos] Use better batching when freeing up space in batches on iOS (#4630)
## Description

On iOS, deletion fails without any error if a batch has at least one
shared file. The only indicator that deletion failed is `List<String>`
returned by `PhotoManager.editor.deleteWithIds` will be empty.

So if shared files are distributed pretty evenly across list of
`localIDs` to be deleted, almost all batches would fail even with a
batch size of 10 (which was the minimum batch size before this change).

Recursively trying with a smaller batch size if the bigger batch size
fails makes it possible to delete all non-shared local files with more
system delete conformation dialogs though, but gets the work done for
users blocked on this.


```plaintext
[A, B, C, D, E]
 └─ Attempt to delete; if failure:
    ├─ [A, B]
    │  └─ Attempt to delete; if failure:
    │     ├─ [A]
    │     └─ [B]
    └─ [C, D, E]
       └─ Attempt to delete; if failure:
          ├─ [C]
          └─ [D, E]
             └─ Attempt to delete; if failure:
                ├─ [D]
                └─ [E]
2025-01-08 12:02:19 +05:30
Manav Rathi
a692a7b70c Remove unnecessary pins 2025-01-08 12:00:45 +05:30
ashilkn
fb7a441efe [mob][photos] Bump up to v0.9.76 2025-01-08 11:48:32 +05:30
Laurens Priem
50c65125a7 Clusterface (#4626)
## Description

Fixed bug where we showed "Face not clustered yet, please come back
later" toast message even for faces which had a score too low to ever be
clustered automatically.
2025-01-08 07:02:45 +01:00
Laurens Priem
0488e5013d [mob][photos] Fix sync issue adding cluster (#4623)
## Description

## Tests
2025-01-08 07:01:22 +01:00
ashilkn
5cd0a654bb [mob][photos] Show loading state when on deleting each batch 2025-01-08 11:31:07 +05:30
Alan Moyano
ac92f564fa Fix Belo icon displaying as a violet square instead of the correct icon (#4619)
Fixing the icon introduced in https://github.com/ente-io/ente/pull/4548
2025-01-08 11:30:55 +05:30
Manav Rathi
ff7763934e [web] Parse description from image metadata (#4629)
- Implements
https://github.com/ente-io/ente/discussions/3857#discussioncomment-11764990
- Tested on the samples provided therein.
2025-01-08 08:34:17 +05:30
Manav Rathi
f6ca19babc [web] Parse description from image metadata
- Implements https://github.com/ente-io/ente/discussions/3857#discussioncomment-11764990
- Tested on the samples provided therein.
2025-01-08 08:27:37 +05:30
laurenspriem
38d7438dc4 [mob][photos] Fix showing toast too often 2025-01-07 20:01:36 +01:00
laurenspriem
2cee052f3f [mob][photos] Comment 2025-01-07 19:59:14 +01:00
laurenspriem
af42576e45 [mob][photos] Simplify 2025-01-07 19:48:09 +01:00
laurenspriem
6f63158699 [mob][photos] Simplify 2025-01-07 19:45:34 +01:00
laurenspriem
2c41efb672 [mob][photos] dev log 2025-01-07 19:15:28 +01:00
ashilkn
aac9c73d05 [mob][photos] Try deleting in batches in a better way if deletion fails in one shot by splitting a batch into two if deletion fails and repeat the process recursively on each half until deletion succeeds 2025-01-07 21:26:32 +05:30
laurenspriem
92eab74917 [mob][photos] Fix sync issue adding cluster 2025-01-07 16:01:18 +01:00
Manav Rathi
ead2b3d3d6 [web] New translations (#4622)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-07 20:28:46 +05:30
Crowdin Bot
c24bb97762 New Crowdin translations by GitHub Action 2025-01-07 14:56:27 +00:00
Manav Rathi
c7a59eb880 [web] Improvements to our use of MUI (#4621) 2025-01-07 20:25:29 +05:30
Manav Rathi
16e1ab2049 fw 2025-01-07 20:06:08 +05:30
Manav Rathi
e5d2b21a97 Undep 2025-01-07 19:56:12 +05:30
Manav Rathi
0f1a6a29fe large size => fullWidth 2025-01-07 19:52:18 +05:30
Manav Rathi
e0af77181d Unneeded 2025-01-07 19:29:57 +05:30
Manav Rathi
fe0d7417af C 2025-01-07 19:21:39 +05:30
Manav Rathi
a6d420bbaa h6 2025-01-07 19:10:47 +05:30
Manav Rathi
456c52c175 Move 2025-01-07 19:07:31 +05:30
Manav Rathi
b374ee1e99 Use 2025-01-07 19:02:19 +05:30
Manav Rathi
7c44a160a0 Comment 2025-01-07 18:09:03 +05:30
Manav Rathi
15283cbc73 It's the default already 2025-01-07 18:09:03 +05:30
Manav Rathi
b5c7e9d6ac Unused 2025-01-07 18:09:03 +05:30
Manav Rathi
ec5a1d9359 -blur 2025-01-07 18:09:03 +05:30
Manav Rathi
e13797e02e Move fixed colors out of theme 2025-01-07 18:09:03 +05:30
mngshm
f0789b1fca pushing staged changes 2025-01-07 17:41:55 +05:30
ashilkn
c608550534 [mob][photos] Update log message for more clarity 2025-01-07 17:09:29 +05:30
Neeraj Gupta
2083632c20 Fix check for single file 2025-01-07 15:57:19 +05:30
Neeraj Gupta
6898f0dbcb Improve err 2025-01-07 15:57:19 +05:30
Neeraj Gupta
48a0bce211 Minor refactor 2025-01-07 15:57:19 +05:30
Neeraj Gupta
d262503b75 [server] Fix access check 2025-01-07 15:57:19 +05:30
Neeraj Gupta
af533ebc1d [server] Enable metadata fetch for shared files 2025-01-07 15:57:19 +05:30
Neeraj
65d144be77 [mob][server] Join albums via link (#4607)
## Description

## Tests
2025-01-07 15:35:07 +05:30
Neeraj Gupta
44ffb99b0b Remove unused import 2025-01-07 15:31:13 +05:30
Neeraj Gupta
93cc5cc8a2 [mob] Extract strings 2025-01-07 15:11:41 +05:30
Neeraj Gupta
7062aacf35 [mob] Handle albums with download disabled 2025-01-07 14:42:53 +05:30
ashilkn
d24555314d [mob][photos] Minor fix 2025-01-07 13:46:10 +05:30
Neeraj Gupta
e2d72c71b4 [mob] Open existing shared collection 2025-01-07 13:44:29 +05:30
Neeraj Gupta
5a593c27b0 [mob] Lint fix 2025-01-07 13:33:01 +05:30
Ashil
ebe35c285b [mob][photos] Fix null check operator used on null value exception (#4617) 2025-01-07 13:31:22 +05:30
ashilkn
99405ebc2e [mob][photos] Fix null check operator used on null value exception 2025-01-07 13:28:47 +05:30
Neeraj Gupta
9e901c78ef [server] Send email when link is joined 2025-01-07 11:45:46 +05:30
Neeraj Gupta
167d2c5d29 Merge remote-tracking branch 'origin/main' into join_change 2025-01-07 11:24:53 +05:30
Neeraj Gupta
9b9112ba4a [server] Disable join by default 2025-01-07 11:24:42 +05:30
Neeraj Gupta
c16289fca9 [server] Return correct value for enableJoin flag 2025-01-07 11:24:42 +05:30
Neeraj Gupta
ca0deb60e7 [mob] Enable join for links created by internal users 2025-01-07 11:20:50 +05:30
Manav Rathi
e8cebdc2c7 [web] New translations (#4616)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-07 11:05:21 +05:30
Crowdin Bot
9bd78de4cd New Crowdin translations by GitHub Action 2025-01-07 05:34:38 +00:00
Manav Rathi
55744a9be3 [web] Translation improvements (#4615) 2025-01-07 11:03:49 +05:30
Manav Rathi
6325e3f886 Fix 2025-01-07 10:58:11 +05:30
Manav Rathi
ad0de74721 R 2025-01-07 10:46:34 +05:30
Manav Rathi
1058dd89fb R 2025-01-07 10:44:56 +05:30
Manav Rathi
f60ea405a6 R 2025-01-07 10:43:04 +05:30
Manav Rathi
86c8b4d6b6 R 2025-01-07 10:41:55 +05:30
Manav Rathi
fddc7961ad R 2025-01-07 10:40:26 +05:30
Manav Rathi
5bf9b63bc9 Move 2025-01-07 10:38:45 +05:30
Manav Rathi
d0d1578b1a R 2025-01-07 10:37:31 +05:30
Manav Rathi
291d62ca0e R 2025-01-07 10:25:19 +05:30
Manav Rathi
e9dfb77109 R 2025-01-07 10:18:15 +05:30
Manav Rathi
34caf1f56e Fix casing 2025-01-07 10:17:21 +05:30
Manav Rathi
fb3cb54c93 Rename 2025-01-07 10:13:05 +05:30
mngshm
cf6cd23ea4 fix: formatting 2025-01-07 10:11:06 +05:30
Manav Rathi
b36faca264 Update AASA to be more specific on what links to open (#4612)
## Description

iOS sometimes falls back to opening Ente Photos app if Safari is
disabled and AASA claims all paths even if a non-matching domain link is
tapped. So making it more specific in AASA on what to open.
2025-01-07 09:48:07 +05:30
Neeraj Gupta
1d803552da extract strings 2025-01-07 09:47:35 +05:30
ashilkn
645171ae9d Update AASA to be more specific on what links to open 2025-01-06 19:50:06 +05:30
mngshm
079a84fc82 refactor: reomve unnecessary stylesheet 2025-01-06 19:13:01 +05:30
Manav Rathi
161c2c1df6 [web] Consistently use <Stack direction="row> when we want a horizontal stack (#4610) 2025-01-06 17:04:48 +05:30
Manav Rathi
7adb64f0f5 Convert Box/flex => Stack/row
> Box component is not intended to be used with Figma, it's a specific implementation based on the underlying style engine we are using which might be removed once we switched to Pigment CSS (not related to design again).
>
> https://github.com/mui/material-ui/issues/43898#issuecomment-2482313907
2025-01-06 17:00:03 +05:30
Manav Rathi
f7596c6cca to sx 2025-01-06 16:50:53 +05:30
Manav Rathi
b5cc2ed9d8 hstack 2025-01-06 16:45:38 +05:30
Neeraj Gupta
de885e45ef [mob] Hide join button is join is disabled 2025-01-06 16:32:19 +05:30
Manav Rathi
8f5cb7681e [web] Update React 18 => 19, Next 14 => 15, MUI 5 => 6 (#4609)
...and other libraries too.
2025-01-06 16:21:39 +05:30
Neeraj Gupta
d24c46610d Tweak padding 2025-01-06 16:18:07 +05:30
Manav Rathi
cbe46c4def Cleanup 2025-01-06 16:16:55 +05:30
Manav Rathi
1ea6b7fc8e Undo codemod litter 2025-01-06 16:14:55 +05:30
Manav Rathi
ada7550035 Remove dup 2025-01-06 16:11:09 +05:30
Manav Rathi
ba83c66ba6 Cleanup and dedup 2025-01-06 16:08:53 +05:30
Neeraj Gupta
fc10e46a0b [mob] Allow joining public links 2025-01-06 15:51:33 +05:30
Neeraj Gupta
928a7237a7 [mob] generated strings 2025-01-06 15:50:28 +05:30
Manav Rathi
64762b8810 v6 recommendation
https://mui.com/material-ui/migration/upgrade-to-v6/#box
2025-01-06 15:37:07 +05:30
Manav Rathi
742645fff4 Remove nested links 2025-01-06 15:33:09 +05:30
Manav Rathi
8589fbe97c Fix warning 2025-01-06 15:17:19 +05:30
Manav Rathi
5abbcd4228 Fix 2025-01-06 15:13:50 +05:30
Manav Rathi
43c464120f Fix type to match upstream update 2025-01-06 15:12:07 +05:30
Manav Rathi
61d89e01b8 Patch 2025-01-06 13:58:50 +05:30
Manav Rathi
0eb01f9cf4 Fix 2025-01-06 13:57:53 +05:30
Manav Rathi
5e3323275d Fix 2025-01-06 13:55:55 +05:30
Manav Rathi
1ca478af84 Fix 2025-01-06 13:53:48 +05:30
Manav Rathi
61ec736df8 Fix 2025-01-06 13:36:10 +05:30
Manav Rathi
fa9663dbf7 Fix 2025-01-06 13:31:31 +05:30
Manav Rathi
32a47b4020 Fix 2025-01-06 13:28:10 +05:30
Manav Rathi
9544ffee9a cast 2025-01-06 13:21:44 +05:30
Manav Rathi
79c2ad89c5 auth 2025-01-06 13:20:52 +05:30
Manav Rathi
7b45d0aa9e Update 2025-01-06 13:17:08 +05:30
Neeraj Gupta
8c3fff8015 Merge branch 'join_change' of https://github.com/ente-io/auth into join_change 2025-01-06 13:15:47 +05:30
Neeraj Gupta
79e059ccc2 [mob] Remove hardcoded urls for public collection 2025-01-06 13:15:09 +05:30
Manav Rathi
4a47305a54 Fix + accounts app 2025-01-06 13:12:03 +05:30
Manav Rathi
9c6f0b7ee6 Fix 2025-01-06 12:59:44 +05:30
Manav Rathi
670a75048e codemods + manual 2025-01-06 12:50:44 +05:30
mangesh
180f7d842b [server] Email Notification on User Login. (#4586)
# Description 

- Add functionality for sending Email Notification on Login to User's
Ente Account.
2025-01-06 12:43:23 +05:30
mngshm
2b97899562 fix: remove duplicate declaration of FilesCollectedMuteDurationInMinutes 2025-01-06 12:25:22 +05:30
mngshm
af4229d551 resolve merge conflicts 2025-01-06 12:20:43 +05:30
Manav Rathi
ac10ce7bff Restore color 2025-01-06 12:07:42 +05:30
mngshm
7c21f9ddb2 fix: bad formatting 2025-01-06 12:02:20 +05:30
Manav Rathi
1999ce4aaa Future-compat styled 2025-01-06 12:01:10 +05:30
Neeraj Gupta
d17dbe4115 Remove hardcoded endpoint 2025-01-06 11:59:55 +05:30
Neeraj Gupta
c38947c14c [mob] Add method to join public collection 2025-01-06 11:59:37 +05:30
Neeraj Gupta
6a01cda379 Merge remote-tracking branch 'origin/main' into join_change 2025-01-06 11:58:03 +05:30
mngshm
f1d8b022f7 fix: lint 2025-01-06 11:53:46 +05:30
Manav Rathi
859bf63685 codemods + manual 2025-01-06 11:51:52 +05:30
Manav Rathi
5752463360 Pin to 5.6 until the ArrayBufferLike regressions are resolved
e.g. https://github.com/microsoft/TypeScript/issues/60846, https://github.com/microsoft/TypeScript/issues/60579

Note that we can't also update the node types since we're using node 20.
2025-01-06 11:48:41 +05:30
Manav Rathi
2b14f9150f esl 2025-01-06 11:42:17 +05:30
Manav Rathi
3aa3ab37c2 fmt 2025-01-06 11:39:41 +05:30
mngshm
f34624e0d2 fix lint (?) 2025-01-06 11:39:36 +05:30
Manav Rathi
e569a25f87 Avoid recreating the style everytime
https://mui.com/system/getting-started/the-sx-prop/#dynamic-values
2025-01-06 11:35:17 +05:30
Neeraj Gupta
be7f4b7107 [auth] add padding to the generated QR code image to prevent coner ey… (#4591)
## Description
Some QR codes (especially those with smaller data) had their corner
alignment patterns (the three large squares) partially cut off, reducing
readability and making them potentially invalid for scanning.

Added padding (**20.0** on each side) around the QR code to ensure that
corner alignment patterns are never cut off.


![image](https://github.com/user-attachments/assets/bb769862-e882-436f-8dbf-58642e1221b5)
2025-01-06 11:34:05 +05:30
Neeraj Gupta
e4b7089d5e [mobile] New translations (#4604)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-01-06 11:33:28 +05:30
Neeraj Gupta
3172bc613c Request feedback on subscription cancellation (#4590) 2025-01-06 11:31:23 +05:30
Neeraj Gupta
4d5b44a4c1 Make linter happy 2025-01-06 11:29:02 +05:30
Neeraj Gupta
afe7705355 Improve canJoin check for public link 2025-01-06 11:27:54 +05:30
Neeraj Gupta
52c0bcb6cf [server] Allow client to update enableJoin flag 2025-01-06 11:27:45 +05:30
Neeraj Gupta
d4b36cb698 [server] Allow client to pass join flag 2025-01-06 11:27:37 +05:30
Neeraj Gupta
e74d705446 [server] API to enable joining collection via link 2025-01-06 11:27:22 +05:30
Manav Rathi
f13b80be1d Minor 2025-01-06 11:22:50 +05:30
Manav Rathi
b94332aaa7 codemods + manual afterwords
npx @mui/codemod@latest deprecations/all `git ls-files '**.tsx'` ; npx @mui/codemod@latest v6.0.0/styled `git ls-files '**.tsx'` ; npx @mui/codemod@latest v6.0.0/sx-prop `git ls-files '**.tsx'` ; npx @mui/codemod@latest v6.0.0/system-props `git ls-files '**.tsx'`
2025-01-06 11:19:13 +05:30
Neeraj Gupta
220d4eb4a6 [auth] Add Newgrounds icon (#4600)
## Description
Adds custom SVG icon for https://www.newgrounds.com/.
2025-01-06 11:11:42 +05:30
Neeraj Gupta
f8b17f52d5 Add Custom Icon for PostScan Mail (#4593)
https://postscanmail.com
2025-01-06 11:08:26 +05:30
Neeraj Gupta
4d6d5a0037 [auth] New translations (#4605)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-01-06 11:08:09 +05:30
Manav Rathi
4ce934a0f9 Manual cleanup after npx @mui/codemod@latest v6.0.0/system-props
git ls-files '**.tsx' | xargs -n 1 npx @mui/codemod@latest v6.0.0/system-props
2025-01-06 11:07:10 +05:30
Manav Rathi
69d0893c43 @/accounts - codemods then manual fixing
npx @mui/codemod@latest deprecations/all `git ls-files '**.tsx'` && npx @mui/codemod@latest v6.0.0/styled `git ls-files '**.tsx'` && npx @mui/codemod@latest v6.0.0/sx-prop `git ls-files '**.tsx'`
2025-01-06 10:53:30 +05:30
Manav Rathi
e210b22efd npx @mui/codemod@latest v6.0.0/system-props photo/src then cleanup 2025-01-06 10:23:42 +05:30
Manav Rathi
084fb5bbed npx @mui/codemod@latest v6.0.0/sx-prop src 2025-01-06 10:23:42 +05:30
Manav Rathi
7510be7453 Fix dep 2025-01-06 10:23:42 +05:30
Manav Rathi
9790148ba9 Fix 2025-01-06 10:23:42 +05:30
Manav Rathi
cf93f80c0c MutableRefObject is deprecated (all refs are mutable now) 2025-01-06 10:23:41 +05:30
Manav Rathi
b5418ea2e4 Vis center 2025-01-06 10:23:41 +05:30
Manav Rathi
c65a34e180 Better layout around the breakpoint 2025-01-06 10:23:41 +05:30
Manav Rathi
d427374e99 Prune 2025-01-06 10:23:41 +05:30
Manav Rathi
72ddc812bd Clean up 2025-01-06 10:23:41 +05:30
Manav Rathi
d0ab487f31 Add workaround for Chrome smooth scroll bug by doing it twice
Ref: https://github.com/facebook/react/issues/23396
2025-01-06 10:23:41 +05:30
Manav Rathi
a5156db967 Smooth scroll doesn't work with Chrome 2025-01-06 10:23:41 +05:30
Manav Rathi
a44a3183d3 Test 2 2025-01-06 10:23:41 +05:30
Manav Rathi
5af93fbbcb Testing smooth anim 2025-01-06 10:23:41 +05:30
Manav Rathi
438f4e6f50 Simplify 2025-01-06 10:23:41 +05:30
Manav Rathi
53ff75bff6 Fixes 2025-01-06 10:23:41 +05:30
Manav Rathi
83432f2a7c Dots 2025-01-06 10:23:41 +05:30
Manav Rathi
c1d0f9445d Custom carousel wip 2025-01-06 10:23:41 +05:30
Manav Rathi
b43b2410e9 Carousel migration to fix Next 15 issues 2025-01-06 10:23:41 +05:30
Manav Rathi
3e4ca320c9 Fix prop-types dep 2025-01-06 10:23:41 +05:30
Manav Rathi
ef482c4b49 Fix 2025-01-06 10:23:41 +05:30
Manav Rathi
3bea29f83b peer-deps 2025-01-06 10:23:41 +05:30
Manav Rathi
9295b15cd8 Regen 2025-01-06 10:23:41 +05:30
Manav Rathi
3ba62669df exifreader
https://github.com/mattiasw/ExifReader/releases
2025-01-06 10:23:41 +05:30
Manav Rathi
b59e97cb6c checkpoint 2025-01-06 10:23:41 +05:30
Manav Rathi
b6fa5c5b44 checkpoint 2025-01-06 10:23:41 +05:30
Manav Rathi
c52a62d944 Update React 18 => 19, Next 14 => 15, MUI 5 => 6 (wip checkpoint) 2025-01-06 10:23:41 +05:30
Manav Rathi
8d1a800cf4 [web] New translations (#4602)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-06 09:57:08 +05:30
Crowdin Bot
83cfd470d0 New Crowdin translations by GitHub Action 2025-01-06 01:17:27 +00:00
Crowdin Bot
4e46d8da42 New Crowdin translations by GitHub Action 2025-01-06 01:05:15 +00:00
Crowdin Bot
7e298b8d1d New Crowdin translations by GitHub Action 2025-01-06 00:35:59 +00:00
NRM
35fb4e8d58 Add Newgrounds entry. 2025-01-05 22:54:17 +00:00
NRM
637eabaae2 Add Newgrounds icon. 2025-01-05 22:50:19 +00:00
Prateek Sunal
7a39b6c75c [auth] Fix ~/.cache being deleted on linux (#4597)
## Description

Fixes https://github.com/ente-io/ente/issues/4536 and
https://github.com/ente-io/ente/issues/4464.

## Tests

After opening the app on linux, my 1.3G cache folder remained intact.

## Technical details

Now the path resolves to `~/.cache/io.ente.auth` instead of `~/.cache`.
[Under the
hood](ca4671cc0f/packages/path_provider/path_provider_linux/lib/src/path_provider_linux.dart (L75-L82))
it uses the app's ID and the `xdg_directories` package, so it will work
when the user has `XDG_CACHE_HOME` set to something else.
2025-01-06 00:44:14 +05:30
Prateek Sunal
d07f6f8ee1 fix: set correct cache directory for all platforms 2025-01-06 00:25:28 +05:30
Gutyina Gergő
b5d4b848fd [auth] Fix ~/.cache being deleted on linux 2025-01-05 18:49:39 +01:00
NanoBunTV
44f7872707 Add custom icon for PostScan Mail 2025-01-04 17:07:51 -06:00
Aman Raj
b33e4ea977 [auth] add padding to the generated QR code image to prevent coner eye from being cut off 2025-01-04 18:37:59 +05:30
vishnukvmd
a11ea3b41b Update template 2025-01-04 17:16:05 +05:30
vishnukvmd
f967b6b00e Request feedback on paid sub cancellation 2025-01-04 17:05:07 +05:30
mngshm
6a3ef27408 chore: set universal timezone 2025-01-04 15:48:05 +05:30
mngshm
cf56776245 add formatting to time and change email subject 2025-01-03 17:11:58 +05:30
mngshm
a0d2573a04 chore: minor changes in email template 2025-01-03 17:10:37 +05:30
vishnukvmd
afd8d4caac Fix case 2025-01-03 16:52:12 +05:30
mngshm
a052342ec4 add: formatting to time.Now() 2025-01-03 15:46:44 +05:30
Neeraj Gupta
913baf994a [server] Fix login notificaiton 2025-01-03 15:12:20 +05:30
mngshm
e6171dbec4 test: login success 2025-01-03 14:59:16 +05:30
Aman Raj
548b4e7a08 [auth] implemented import code from images having qr_code 2024-12-21 10:28:02 +05:30
Aman Raj
37cbef01fe [auth] use scan package to scan qr from images 2024-12-21 10:21:28 +05:30
569 changed files with 16033 additions and 12044 deletions

View File

@@ -1,6 +1,6 @@
name: Report a bug
description: Let us know if something's not working the way you expected.
labels: ["triage"]
labels: []
body:
- type: markdown
attributes:

View File

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

View File

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

View File

@@ -29,7 +29,7 @@ on:
- "auth-v*"
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.27.2"
jobs:
build-ubuntu:
@@ -151,7 +151,7 @@ jobs:
- name: Install dependencies for desktop build
run: |
sudo apt-get update -y
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff5 xz-utils libarchive-tools libcurl4-openssl-dev
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff6 xz-utils libarchive-tools libcurl4-openssl-dev
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
- name: Install appimagetool

View File

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

View File

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

View File

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

View File

@@ -41,4 +41,4 @@ jobs:
- name: Update branch server/ghcr to point to source commit
run: |
git push -f origin HEAD:server/ghcr
git push -f origin HEAD:refs/heads/server/ghcr

View File

@@ -4,7 +4,7 @@ on:
schedule:
# [Note: Run workflow every 24 hours]
#
# Run everyday at ~8:00 AM IST (except Sundays).
# Run every weekday at ~8:00 AM IST.
#
# First field is minute, second is hour of the day. Last is day of week,
# 0 being Sunday.
@@ -15,7 +15,7 @@ on:
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
# https://crontab.guru/
#
- cron: "25 2 * * 1-6"
- cron: "25 2 * * 1-5"
# Also allow manually running the workflow
workflow_dispatch:

1
auth/.gitignore vendored
View File

@@ -32,6 +32,7 @@
.pub-cache/
.pub/
/build/
macos/build/
# Web related
lib/generated_plugin_registrant.dart

View File

@@ -100,6 +100,16 @@ Photos](../mobile/README.md) or spreading the word.
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
## Certificate Fingerprints
- **SHA1**: 57:E8:C6:59:C3:AA:C9:38:B0:10:70:5E:90:85:BC:20:67:E6:8F:4B
- **SHA256**: BA:8B:F0:32:98:62:70:05:ED:DF:F6:B1:D6:0B:3B:FA:A1:4E:E8:BD:C7:61:4F:FB:3B:B1:1C:58:8D:9E:3A:D7
To verify these fingerprints, use the following command:
```bash
apksigner verify --print-certs <path_to_apk>
```
## ⭐️ About
To know more about Ente and the ways to get in touch or seek help, see [our main

View File

@@ -46,6 +46,7 @@
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data android:name="flutterEmbedding" android:value="2"/>
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
<meta-data android:name="io.sentry.dsn"
android:value="https://ed4ddd6309b847ba8849935e26e9b648@sentry.ente.io/9"/>

View File

@@ -44,6 +44,25 @@
],
"hex": "fd4b2d"
},
{
"title": "AzurHosts",
"slug": "azurhosts",
"altNames": [
"minenode"
]
},
{
"title": "AzurWare",
"slug": "azuware"
},
{
"title": "Badlion",
"slug": "badlion",
"altNames": [
"Badlion Client",
"BadlionClient"
]
},
{
"title": "BaiduCloud",
"slug": "baidu_cloud",
@@ -73,8 +92,7 @@
]
},
{
"title": "Belo",
"hex": "5717d4"
"title": "Belo"
},
{
"title": "Bethesda",
@@ -239,9 +257,16 @@
"Crypto com"
]
},
{
"title": "CSAM"
},
{
"title": "CSFloat"
},
{
"title": "CSGORoll",
"slug": "csgoroll"
},
{
"title": "DCS",
"altNames": [
@@ -306,7 +331,7 @@
},
{
"title": "enom",
"slug": "enom_v1"
"slug": "enom"
},
{
"title": "Epic Games",
@@ -319,6 +344,9 @@
{
"title": "Estateguru"
},
{
"title": "Fastmail"
},
{
"title": "Fidelity",
"slug": "fidelity",
@@ -329,6 +357,10 @@
{
"title": "Filen"
},
{
"title": "Finanzfluss",
"slug": "finanzfluss"
},
{
"title": "Firefox",
"slug": "mozilla"
@@ -348,6 +380,14 @@
{
"title": "GMX"
},
{
"title": "GommeHD.net",
"slug": "gommehd",
"altNames": [
"GommeHD",
"GommeHDnet"
]
},
{
"title": "Google"
},
@@ -493,6 +533,10 @@
"title": "La Poste",
"slug": "laposte"
},
{
"title": "LabyMod",
"slug": "labymod"
},
{
"title": "Lark",
"slug": "lark",
@@ -608,6 +652,10 @@
"title": "Name.com",
"slug": "name_com"
},
{
"title": "Nextcloud",
"slug": "nextcloud"
},
{
"title": "NeteaseMail",
"slug": "netease_mail",
@@ -619,6 +667,10 @@
{
"title": "NextDNS"
},
{
"title": "Newgrounds",
"slug": "newgrounds"
},
{
"title": "Newton",
"altNames": [
@@ -679,6 +731,10 @@
"欧易"
]
},
{
"title": "Parqet",
"slug": "parqet"
},
{
"title": "Parsec"
},
@@ -720,6 +776,14 @@
{
"title": "PostNL"
},
{
"title": "PostScan Mail",
"slug": "postscanmail",
"altNames": [
"Post Scan Mail",
"PostScanMail"
]
},
{
"title": "Privacy Guides",
"slug": "privacyguides"
@@ -772,6 +836,9 @@
"Registro.br"
]
},
{
"title": "reMarkable"
},
{
"title": "Restorecord"
},
@@ -854,6 +921,15 @@
"title": "Standard Notes",
"slug": "standardnotes"
},
{
"title": "Starbreeze",
"altNames": [
"Starbreeze Nebula",
"Starbreeze Account",
"PAYDAY",
"PAYDAY 3"
]
},
{
"title": "Surfshark"
},
@@ -1053,4 +1129,4 @@
]
}
]
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="537.000000pt" height="537.000000pt" viewBox="0 0 537.000000 537.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,537.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M2490 5364 c-19 -2 -78 -9 -130 -15 -219 -25 -457 -86 -675 -174
-349 -140 -623 -322 -896 -594 -432 -433 -683 -945 -770 -1571 -18 -125 -18
-525 0 -650 34 -245 91 -463 176 -675 140 -349 322 -623 594 -896 433 -432
945 -683 1571 -770 125 -18 525 -18 650 0 245 34 463 91 675 176 349 140 623
322 896 594 432 433 683 945 770 1571 8 56 14 189 14 325 0 297 -25 479 -102
745 -127 442 -351 819 -682 1151 -425 424 -928 675 -1535 765 -96 14 -481 27
-556 18z m-833 -1136 c25 -10 11 -13 -111 -24 -217 -20 -348 -69 -449 -169
-267 -262 -169 -752 266 -1335 81 -108 527 -564 658 -674 611 -507 1296 -850
1859 -932 157 -22 384 -15 490 16 207 60 338 192 380 380 21 95 21 96 32 76
16 -29 -10 -150 -50 -229 -50 -101 -125 -174 -235 -226 -541 -262 -1639 130
-2578 922 l-68 57 -189 0 -189 0 -38 -105 c-29 -82 -42 -106 -59 -110 -11 -3
-106 -4 -211 -3 l-190 3 1 25 c1 14 70 192 154 395 84 204 154 377 157 386 2
8 -33 71 -79 140 -151 226 -263 473 -303 666 -31 149 -18 312 36 431 73 167
253 280 492 311 95 13 193 12 224 -1z m278 -122 c378 -81 818 -271 1210 -524
229 -148 231 -173 3 -36 -378 227 -745 379 -1033 429 -132 23 -338 24 -422 2
-132 -35 -225 -105 -271 -205 -38 -82 -42 -209 -12 -335 24 -105 72 -233 85
-230 4 1 22 37 38 80 16 43 34 84 40 91 7 9 58 12 192 12 161 0 184 -2 197
-17 8 -10 115 -271 239 -580 123 -310 225 -556 227 -548 2 9 -37 183 -87 388
-50 204 -111 453 -135 552 -30 125 -41 184 -34 193 15 18 331 17 347 -1 6 -8
17 -45 25 -83 8 -38 44 -195 80 -349 35 -155 70 -311 76 -348 14 -77 30 -84
43 -16 5 24 51 202 103 396 52 193 94 358 94 366 0 39 26 47 163 47 73 0 138
-4 145 -8 10 -7 195 -680 226 -824 9 -39 23 -35 30 10 16 93 180 798 189 810
12 15 342 18 352 2 8 -12 -343 -1480 -357 -1498 -17 -20 -338 -13 -349 8 -6
12 -189 671 -217 783 -4 16 -11 28 -16 28 -6 0 -22 -46 -36 -103 -57 -223
-193 -704 -203 -716 -6 -8 -21 -10 -42 -6 -68 12 -40 -16 93 -94 384 -224 696
-354 995 -414 149 -30 391 -32 482 -4 171 52 254 145 274 310 3 28 11 50 16
49 17 -5 17 -147 0 -215 -98 -380 -560 -467 -1235 -233 -318 111 -643 280
-1012 527 -311 208 -551 413 -807 691 -184 200 -208 230 -311 392 -157 246
-241 427 -281 605 -65 293 43 516 295 607 141 51 387 54 601 9z"/>
<path d="M1750 2835 c-9 -24 -7 -33 16 -66 56 -81 69 -73 33 21 -27 72 -36 80
-49 45z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 400 400">
<defs>
<style>
.cls-1 {
fill: #030303;
}
.cls-1, .cls-2, .cls-3, .cls-4 {
stroke-width: 0px;
}
.cls-2 {
fill: #71470d;
}
.cls-3 {
fill: #feb730;
}
.cls-4 {
fill: #2caddc;
}
</style>
</defs>
<path class="cls-4" d="M356.2,275.9V124.1c0-9.6-5.1-18.4-13.3-23.2L213.6,25.2c-8.4-4.9-18.8-4.9-27.2,0L57.1,100.8c-8.3,4.8-13.3,13.7-13.3,23.2v151.8c0,9.6,5.1,18.4,13.3,23.2l129.3,75.6c8.4,4.9,18.8,4.9,27.2,0l129.3-75.6c8.3-4.8,13.3-13.7,13.3-23.2Z"/>
<g>
<path class="cls-1" d="M208.8,327.5c-.4-.8-1.7-4.2-2.8-7.4-1.8-5.3-2-5.6-2.3-3.1-.1,1.5-.6,2.7-1,2.7s-.8,1.6-.8,3.5c0,4-1,3.5-2.5-1.3l-1-3.3-1.3,2.8-1.3,2.8-.5-5c-.6-6.7-2.2-6.6-4.7.3-2.3,6.3-3.4,7.7-4.1,5.2-.4-1.3-1.3-1.8-3-1.8s-2.6-.4-3.4-3.3c-1.2-3.9-2-4.2-3.1-1l-.8,2.3v-2.9c-.2-2.6-.3-2.7-1.2-1.3-1,1.5-2.1,2.9-3.2,4.2l-2.2,2.6-.9-2.4c-.5-1.3-.8-2.8-.9-4.2,0-1.7-.3-3.4-.5-5l-.5-3.2-4.4,4.3-4.4,4.4-.6-3.9c-.6-4.3-1.5-4.7-5.5-2.6-1.4.7-2.7,1.2-2.8,1s-.6-1.6-1-3.2c-.7-2.8-.9-3-5.8-3.7s-5.1-.9-5.5-3.5c-.8-5-3.1-8.7-5.3-8.7s-1.8-.4-1.5-.8c.7-1.1-.9-1.1-3.1,0-1.7.9-1.7.8-1.2-3,.4-3,.3-4-.7-4.4-.7-.3-3.4-3.2-6-6.5l-5.3-6.6c-.3-.3-2.5,0-4.9.7-2.4.7-4.5,1.2-4.7,1s.6-3.1,1.7-6.5c2-6.4,2-7.6,0-7.6s-1.2-1.2-1.2-5,0-5-2.9-5.9l-2.9-.9,1.2-3c1.7-4.1,1-5.3-3-5.3s-3.4-.3-3.4-.7,1.3-2.4,2.9-4.6,2.9-4,2.9-4.2-1.2-.7-2.7-1c-1.5-.3-2.9-.8-4.3-1.4-1.4-.8-1.3-1.1,1.6-4.1l3.2-3.3-2.7.5c-2.7.5-3.9-.7-1.4-1.6,1.9-.7,1.5-1.8-1.3-2.8-2-.8-2.5-1.4-2.5-3.5s-.6-2.9-1.3-3.3c-1.1-.6-1.1-.9.6-2,1.2-.8,2.5-1.4,3.8-1.9,1.2-.3,2-1.4,1.9-2.6,0-1.7-.5-2-3.1-2.3l-3.1-.3,2.3-1.2c2.7-1.4,2.9-2.3.6-3-2.2-.7-2.2-2.1,0-2.1s2.1-3.8-1.3-5.9c-2.5-1.6-2.8-2-1.7-2.6.7-.4,1.3-1.7,1.3-2.8,0-1.3.4-2.5,1-3.6.8-1.3.6-2.1-.8-4.6-2.5-4.2-2.6-11.8-.2-12.6,2.6-.8,2.5-3.9-.3-6.9l-2.5-2.7,2.6-.9c2.6-.9,4.1-3.3,3.1-5-.3-.5-.1-1.9.4-3.1.6-1.5,1-3.1,1.2-4.8.1-1.3.4-2.5.8-3.8,2.5-6.8,3.2-10.3,2.4-12.4s-.6-2.5,2.9-4.7c2.2-1.4,3.7-2.9,3.7-3.9s1-2.8,2.3-4.3,3.4-4.2,4.6-5.9c1.9-2.5,2.9-3.1,5.1-3.1s5.5-2,5.5-3.9,1.8-1,4-1.3,5.1-1.1,6.4-1.9,4-1.6,6-1.7,4.2-.6,4.9-1.2,1.7-.9,2.3-.8c3.8.5,6.5-.2,7-1.8s.7-1.6,2-.4c2.2,2,6.2,1.6,8.5-.8l2-2.1,1.1,2.1c1.4,2.6,4.4,2.8,7.7.4,2-1.5,2.8-1.6,5.6-.9,1.8.5,4.3,1.1,5.6,1.3,1.3.3,2.3,1.1,2.3,1.8,0,1.1,3.1,2.9,4.9,2.9.3,0,1.3-1.1,2.2-2.5l1.7-2.5,2.6,3.1,2.6,3.1,4.3-2.7,4.3-2.7,1.9,1.7c1.8,1.7,2.1,1.7,11.9.6,5.5-.7,11.9-1.2,14.2-1.2,2.9-.1,5.9-.5,8.7-1.3,4.7-1.3,5.9-1.1,5.9.8s2.4,2.1,6.3,0l3.8-2.1-.2,2.8c-.2,2.7-.1,2.8,3.1,3.1,1.8.1,4.4,1,5.7,2,1.5,1.1,4.4,1.9,7.7,2.3,5.3.5,8.7,2.4,8.7,4.8s1.6,2.3,3.6,3.7,4.1,3.6,4.7,4.8,3,4.2,5.3,6.5c3.9,4,4.1,4.3,2.4,4.9-2.9.9-2,2.9,2.2,4.6,3.7,1.5,4,2.3,1.8,4.7-1.8,1.9-1.8,2.1-.4,3.1,1.2.9,1.3,1.5.6,2.7-1.3,2.4-.2,6.2,2.2,8.3,2,1.7,2.1,1.9.7,3.8-1.8,2.6-1.8,3.7.5,6.7l1.9,2.5-1.8,1.4c-2.6,2-1.8,7.5,1.5,10.7,3,2.9,3,3.7,0,3.7s-2.5.4-2.8,2.5c-.2,1.4,0,3,.3,3.6s.7,2.1.7,3.3.7,2.6,1.5,3.1c1.3.7,1.1,1-1.3,2.3-1.5.8-2.7,2-2.7,2.5,0,.8-.2,1.5-.5,2.2-.3.9.2,1.3,1.9,1.6l2.4.3-2.3,1.1c-1.3.6-2.3,1.4-2.3,1.7s1,1.1,2.3,1.7l2.3,1.2-2.7.3c-3.7.4-3.9,3.7-.2,5.2,3.4,1.4,4.8,3.2,3,3.9-.8.3-1.3,1.5-1.3,3s-.5,2.7-2.3,3.4c-1.3.5-2.4,1.1-2.6,1.2s.6,1,1.7,2l2,1.7-3.3-.4-3.3-.5,3.2,2.9c3.6,3.3,3.4,4-2,5.6l-3.6,1,3,3.9c1.6,2.2,3,4.3,3,4.8s-1.5.9-3.3.9c-4.1,0-4.6.8-3,4.7.7,1.7,1.3,3.2,1.3,3.3s-1.3.7-2.9,1.2c-2.9,1-2.9,1-2.9,5.9s-.3,5-1.1,5-1.8.5-2.6,1.1c-1.4,1-1.4,1.4.4,7.5,1,3.5,1.6,6.7,1.4,7s-2.9,0-5.8-.8l-5.3-1.3-4.8,4.8-4.8,4.8,1.1,5.2c.6,2.9.9,5.2.6,5.2s-1.5-.6-2.6-1.2c-5.2-2.9-8.2-1-10.1,6.3l-1,4-4.9.5c-4.8.5-4.9.6-5.8,3.9-.5,1.8-1.1,3.3-1.2,3.3s-1.7-.6-3.3-1.4-3.2-1.2-3.5-.9-.7,3.2-1,6.4-.7,5.9-1,5.9-2.4-1.9-4.6-4.1c-2.2-2.3-4.4-3.9-4.8-3.7s-.7,1.7-.7,3.2-.5,3.4-1.1,4.3c-1,1.4-1.3,1.3-3.5-1.7-3.9-5.3-4-5.3-3.4.5.5,5,.4,5.3-.7,3.8-.7-.9-1.3-1.9-1.3-2.3,0-2-1.5-.3-2.2,2.5-.6,2.6-1.2,3.2-3.1,3.4-1.3.1-2.8,1-3.5,2-1.1,1.6-1.2,1.6-2,.2h0Z"/>
<path class="cls-3" d="M197.3,280c-1.3-4.3-2.3-4.9-4.4-2.3-.9,1.2-2.4,2.2-3.3,2.2-1.6,0-2.3-1.2-5.1-8.3l-.8-2.1-1.3,3.1c-1.6,4-3.3,3.3-4.1-1.6l-.6-3.8-1.8,2.3-1.8,2.3-17.8-10.3c-17.1-9.9-17.8-10.4-19.4-14.1-1.7-3.9-6.9-10.1-8.6-10.1s-1.8-.8-2.7-1.9l-1.8-1.9,4.1-5.4,4.1-5.4-3.9-.8-3.9-.8,4.1-2.2,4.1-2.2-4.4-2.3c-4.7-2.5-5.6-4.8-2.9-7.5,1.3-1.3,1.3-1.5-.2-3-1.4-1.6-1.4-1.7,0-3.3,1.3-1.5,1.3-1.8.2-3-2.4-2.4-1.6-4.5,2.9-7.3l4.3-2.7-4-2.1-4-2.1,3.9-.8,3.9-.7-4.2-5.4-4.2-5.4,1.9-2,1.9-2,11.1,11.1,11.1,11.1v12.8l1.8-.3c1.1-.2,8.9-1.4,17.4-2.8,21-3.4,19.2-2.7,19.2-6.7v-3.3h25.9v3.3c0,3.9-1.9,3.3,19.2,6.8,8.5,1.4,16,2.5,17,2.7.7.2,2,.3,2,.3,0,0,.2-2.3.2-6.2v-6.6l10-10c7.7-7.7,10.3-9.8,11-9,1.1,1.1,1.2.9-4.5,7.9l-3.2,3.9,4.3.6,4.3.6-4.4,2.3-4.4,2.3,4.7,2.7c2.6,1.4,4.7,3.2,4.7,3.8s-.7,2.1-1.8,3.3l-1.8,2.2,2.2,1c2,.9,2.9,2.3,1.5,2.4-.3,0-1.3.6-2.2,1.2-1.5,1.1-1.4,1.3.3,2.9,2.6,2.6,1.8,4.3-3.3,7l-4.5,2.4,4.4,2.3,4.4,2.3-3.9.6c-2.2.3-3.9.8-3.9,1s1.7,2.6,3.7,5.3c2.1,2.7,3.8,5.2,3.7,5.6,0,.4-2.7,2.9-5.9,5.6-4.1,3.5-6.5,6.3-8.2,9.7l-2.4,4.8-17.7,10.2-17.7,10.2-2-2.3-2-2.3v2.9c0,5.6-1.3,5.6-3.3,0-1-2.8-2-5.1-2.1-5.1s-1.4,3.1-2.9,6.9c-1.5,3.8-3,7.2-3.3,7.6s-1.7-.3-2.9-1.5c-1.3-1.3-2.3-2.1-2.4-2s-.8,1.3-1.4,2.6l-1.3,2.3-.8-3.6ZM189.4,257.6l9.7-2.7,11.2,2.7c5.8,1.5,10.7,2,10.9,1.8.9-.9-1.2-2-6.5-3.3-3-.8-7.4-1.9-9.9-2.7l-4.4-1.7.3-8.8.2-9.3,12.4-7.8c6.8-4.3,12.6-7.9,12.9-8.2s-11.6-.5-26.4-.5-26.8.3-26.8.7,5.6,4,12.4,8.2l12.3,7.6v18.2l-9.5,3.4c-5.3,1.4-9.7,3-9.9,3.6-.5,1.3-.7,1.8,11.2-1.3h0ZM188,182.7v-5.3l-18.6-3.1c-10.3-1.7-19.5-2.9-19.8-3.1v9.5l-8.7-8.7c-4.8-4.8-8.6-9.2-8.5-9.8s.8-1.8,1.4-2.6,2.7-3.7,4.3-6.3c2.5-3.9,3.6-4.8,6.1-5.3,1.7-.3,4.5-1.8,6.4-3.4,2.6-2.1,3.9-2.7,5.4-2.4,1.9.5,3.2-.5,8.3-6.9l1.5-1.9,5.4,4.3,5.4,4.3.9-4.1.9-4.1,2,4c1.1,2.2,2.2,4,2.5,4s1.4-1.9,2.5-4.2c2.2-4.6,4-5.3,6.9-2.7,1.6,1.4,1.7,1.3,3.6-1.1,1.1-1.3,2-2.1,2-1.6s.5,1.6,1.1,2.3c1,1.4,1.3,1.4,4.1-.3l3-1.8,2.7,5,2.7,5,2.2-4.3,2.2-4.3.6,4c.3,2.2.8,4,.9,4s2.7-1.8,5.7-4.2l5.3-4.2,3.8,4.5c3.3,3.8,4.3,4.5,6.7,4.4,2.1,0,3.5.6,5.4,2.5,1.6,1.6,3.8,2.8,5.8,3.1,2.8.5,3.6,1.2,6.7,6.1,1.9,3.1,5,6.7,6.8,7.9s3.3,2.6,3.3,2.9-3.4,3.9-7.5,8.1l-7.5,7.5v-4.7c0-2.7-.3-4.8-.7-4.8s-8.9,1.3-19.1,3l-18.8,3.3v4.8l-12.4.3c-6.7.3-11.8,0-13.3,0h0Z"/>
<g>
<circle class="cls-2" cx="188.4" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="181.7" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="175" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="181.7" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="188.4" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="175" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="181.7" cy="250.1" r="1.7"/>
<circle class="cls-2" cx="208.5" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="215.1" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="221.8" cy="236.7" r="1.7"/>
<circle class="cls-2" cx="208.5" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="215.1" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="221.8" cy="243.4" r="1.7"/>
<circle class="cls-2" cx="215.1" cy="250.1" r="1.7"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<circle cx="512" cy="512" r="512" fill="#9a2857"/>
<path d="M727 278.6q-99 37.09-197.74 74.76a27.83 27.83 0 0 1-20.85.41q-102.54-36.2-205.09-72.35c-4.45-1.57-9-2.82-14.22-4.56v469.89c3.42-1.16 5.67-1.83 7.84-2.7 69-28.07 138.13-55.9 206.95-84.41a34.06 34.06 0 0 1 29.52.36c66.62 29.54 133.53 58.41 201.5 88V276c-3.35 1.09-5.67 1.74-7.91 2.6Zm-208 339-.57-225.6c18.21-6.66 36.44-13.21 54.6-20 42.69-15.8 85.34-31.83 129.09-48.23v373.44C640.57 671 579.79 644.3 519 617.63Zm162.1-107a14 14 0 0 1-12.86 13.31 14.34 14.34 0 0 1-13.66-12.66c-.32-5.93 6.92-13.46 13-13.53a14.58 14.58 0 0 1 13.51 12.88Z" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 683 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 203.55556 203.55501"
version="1.1"
id="svg14"
sodipodi:docname="Fastmail_logo_2019.svg"
width="203.55556"
height="203.55501"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata20">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1136"
id="namedview16"
showgrid="false"
inkscape:zoom="0.55887135"
inkscape:cx="495.8288"
inkscape:cy="103.69084"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg14"
inkscape:document-rotation="0" />
<desc
id="desc2">Fastmail</desc>
<path
d="M 168.6788,57.190848 A 80.391313,80.391313 0 0 1 34.908803,146.39084 l -17.81,11.86 A 101.78194,101.78194 0 0 0 186.4788,45.340848 Z"
fill="#69b3e7"
id="path6" />
<path
d="M 21.158803,101.42084 A 80.39,80.39 0 0 1 168.6788,57.190848 l 17.8,-11.86 A 101.78471,101.78471 0 1 0 17.098803,158.25084 l 17.81,-11.86 a 80,80 0 0 1 -13.75,-44.97 z"
fill="#0067b9"
id="path8" />
<path
d="M 53.158803,133.68084 H 146.5288 a 3.41,3.41 0 0 0 3.41,-3.41 V 69.190848 Z"
fill="#333e48"
id="path10" />
<path
class="opacity"
d="M 101.5488,101.42084 53.158803,69.190848 v 64.519992 z"
fill="#ffc107"
id="path12" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: $$$/GeneralStr/196=Adobe Illustrator 27.6.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 518.4 476.9" style="enable-background:new 0 0 518.4 476.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#4D6BDD;}
.st1{fill:#FFFFFF;}
.st2{fill:#FFD749;}
.st3{fill:#FF6B4A;}
.st4{fill:#89A3F4;}
.st5{fill:#FCE088;}
.st6{fill:#FC9381;}
.st7{fill:#C2D3FF;}
.st8{fill:#FCECC0;}
.st9{fill:#F9BEB7;}
</style>
<g>
<g>
<ellipse transform="matrix(0.7071 -0.7071 0.7071 0.7071 -94.1312 252.3384)" class="st0" cx="257.5" cy="239.8" rx="237.1" ry="237.1"/>
<g>
<g>
<g>
<path class="st1" d="M350.6,211.4c-8.9-9.6-12.2-30.5-12.2-30.5l-2.6-12c0,0-3.1-11.3-5.4-14.6c-1-2.6-2.8-9.7,3.5-16.9
c0,0,6.3-8.1-2.8-14.6c0,0-10-8.3-17.2,1.2c0,0-6.7,12.3-16.4,10.4c-2.6-0.7-4.3-1-4.3-1s-21.7-4.2-35.7-4.3
c-14,0-35.7,4.3-35.7,4.3s-1.6,0.3-4.3,1c-9.6,1.8-16.4-10.4-16.4-10.4c-7.2-9.6-17.2-1.2-17.2-1.2c-9.2,6.6-2.8,14.6-2.8,14.6
c6.3,7.2,4.5,14.4,3.5,16.9c-2.3,3.4-5.4,14.6-5.4,14.6l-2.6,12c0,0-3.3,20.8-12.2,30.5c0,0-60.2,54.1-19.4,109.4
c0,0,26.8,31.8,71,7.2c0,0,20.6-11.4,41.5-11.5c20.8,0,41.5,11.5,41.5,11.5c44.2,24.6,70.9-7.2,70.9-7.2
C410.8,265.5,350.6,211.4,350.6,211.4z M217.8,257.2c-4.2,5.6-14.6,5-23.2-1.4c-8.6-6.4-12.2-16.2-8-21.8
c4.2-5.6,14.6-5,23.2,1.4C218.4,241.8,222,251.6,217.8,257.2z M224.8,196.7c-7.6,0-13.8-7.1-13.8-12.4h11.4
c1.3,0,1.7-2.2,0.9-3.3l-7.2-9.6c2.4-1.9,5.4-3.4,8.7-3.4c7.6,0,13.8,6.7,13.8,14.3C238.7,190,232.5,196.7,224.8,196.7z
M276.4,184.3h11.4c1.3,0,1.7-2.2,0.9-3.3l-7.2-9.6c2.4-1.9,5.4-3.4,8.7-3.4c7.6,0,13.8,6,13.8,13.6c0,7.6-6.2,15.2-13.8,15.2
C282.6,196.8,276.4,189.6,276.4,184.3z M320.5,254.4c-8.6,6.4-19,7-23.2,1.4c-4.2-5.7-0.6-15.4,8-21.8c8.6-6.4,19-7,23.2-1.4
C332.7,238.2,329.2,248,320.5,254.4z"/>
</g>
<g>
<path class="st1" d="M257.6,331.6c-27.6,0-39.9,15.3-39.9,15.3s-12.4,13.4,39.9,13.4c52.3,0,39.9-13.4,39.9-13.4
S285.2,331.6,257.6,331.6z"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,243 @@
<svg width="86" height="79" version="1.1" viewBox="0 0 86 79" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><image width="86" height="79" preserveAspectRatio="none" xlink:href="data:image/png;base64,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
AAvYWZcFHibQAAAAAElFTkSuQmCC
"/></svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
id="svg1"
width="533.33331"
height="533.33331"
viewBox="0 0 533.33331 533.33331"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-199.8565,-316.05771)"
id="path6" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath8">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-154.47981,-66.407704)"
id="path8" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath10">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-173.84721,-187.2259)"
id="path10" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath12">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-224.58621,-187.2259)"
id="path12" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath14">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-116.893,-254.432)"
id="path14" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath16">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-245.23801,-66.407704)"
id="path16" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath18">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-282.99751,-254.432)"
id="path18" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath20">
<path
d="M 0,400 H 400 V 0 H 0 Z"
transform="translate(-179.5,-68.443902)"
id="path20" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath22">
<path
d="M 0,400 H 400 V 0 H 0 Z"
id="path22" />
</clipPath>
</defs>
<g
id="layer-MC1">
<path
id="path1"
d="m 0,0 -45.38,24.103 -5.988,3.182 -2.203,6.628 -11.87,35.716 -20.153,16.347 -62.304,50.532 -10.044,8.146 5.074,11.876 35.049,82.011 -4.269,75.046 -2.054,36.132 29.25,-21.284 49.904,-36.312 48.547,13.344 4.5,1.236 4.498,-1.236 48.548,-13.344 49.903,36.312 29.251,21.284 -2.054,-36.132 -4.269,-75.046 35.048,-82.011 5.074,-11.876 -10.043,-8.146 L 101.711,85.976 81.557,69.629 69.687,33.913 67.484,27.285 61.497,24.103 16.117,0 8.059,-4.281 Z M -23.274,51.29 8.059,34.649 39.39,51.29 l 15.394,46.323 0.941,2.35 21.632,42.862 32.587,64.568 -9.139,21.384 -1.57,3.673 0.227,3.987 2.44,42.897 -27.26,-19.837 -6.61,-4.809 -7.964,2.189 -52.009,14.297 -52.012,-14.297 -7.962,-2.189 -6.609,4.809 -27.262,19.837 2.44,-42.897 0.227,-3.987 -1.57,-3.673 -9.138,-21.382 32.588,-64.57 21.631,-42.862 0.94,-2.35 z m -70.522,85.48 -3.125,63.385 -19.311,-45.188 z m 226.146,18.197 -19.311,45.184 -3.128,-63.381 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,255.73453,496.95893)" />
<path
id="path2"
d="m 0,0 -45.38,24.104 -17.597,52.95 -21.632,42.862 1.767,-35.821 -62.304,50.532 36.618,85.685 -4.495,79.032 56.513,-41.123 56.51,15.534 56.51,-15.534 56.513,41.123 -4.496,-79.032 36.618,-85.685 L 82.841,84.095 84.608,119.916 62.976,77.054 45.379,24.104 Z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,266.47933,476.71373)" />
<path
id="path3"
d="m 0,0 -45.379,24.104 -3.421,1.818 -1.26,3.787 -17.324,52.131 -0.561,1.11 0.572,-11.603 -17.042,13.823 -62.303,50.532 -5.739,4.654 2.899,6.787 35.721,83.585 -4.365,76.755 -1.174,20.647 16.714,-12.163 52.736,-38.374 51.96,14.283 2.571,0.706 2.57,-0.706 51.961,-14.283 52.735,38.374 16.715,12.163 -1.174,-20.647 -4.365,-76.755 35.721,-83.585 2.898,-6.787 -5.739,-4.654 L 93.625,85.17 76.583,71.347 77.155,82.95 76.594,81.84 59.269,29.709 58.01,25.922 54.588,24.104 9.21,0 4.605,-2.446 Z m -32.748,39.639 37.353,-19.84 37.352,19.84 16.338,49.163 0.538,1.344 21.633,42.861 20.806,41.226 -2.274,-46.102 -0.688,-13.936 39.523,32.055 -33.717,78.899 -0.898,2.099 0.129,2.277 3.323,58.385 -39.799,-28.96 -3.777,-2.748 -4.55,1.251 -53.939,14.827 -53.939,-14.827 -4.55,-1.251 -3.777,2.748 -39.798,28.96 3.32,-58.385 0.131,-2.277 -0.898,-2.099 -33.718,-78.899 39.523,-32.056 -0.687,13.937 -2.274,46.101 20.807,-41.225 21.632,-42.861 0.537,-1.344 z"
style="fill:#000d26;fill-opacity:1;fill-rule:nonzero;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,260.33933,488.498)" />
<path
id="path4"
d="m 0,0 -45.38,24.104 -17.597,52.95 -21.632,42.862 1.767,-35.821 -62.304,50.532 36.618,85.685 -4.495,79.032 56.513,-41.123 56.51,15.534 56.51,-15.534 56.513,41.123 -4.496,-79.032 36.618,-85.685 L 82.841,84.095 84.608,119.916 62.976,77.054 45.379,24.104 Z"
style="fill:#008fe8;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,266.47933,476.92973)" />
<path
id="path5"
d="m 0,0 56.511,-15.533 56.513,41.122 -4.496,-79.032 36.62,-85.685 -62.306,-50.532 1.767,35.821 L 62.013,-196.22 45.378,-249.65 0,-273.754 l -0.665,0.353 c 0,0 -3.805,-0.865 -0.53,26.953 3.274,27.818 -1.05,78.74 -2.395,121.674 v -0.001 l -9.525,-8.658 8.842,43.362 -20.08,-8.665 19.549,35.619 -24.589,-4.137 17.15,23.546 -27.686,-9.391 29.551,40.46 -46.132,-2.894 55.845,15.351 z"
style="fill:#3bb4ff;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,266.47533,111.92307)"
clip-path="url(#clipPath6)" />
<path
id="path7"
d="m 0,0 -17.596,52.949 -21.633,42.862 1.766,-35.821 -62.303,50.532 36.618,85.685 -4.464,78.475 41.419,-97.788 -27.817,11.282 -5.738,-35.7 -7.627,16.399 -3.771,-32.944 -4.781,12.116 -13.554,-35.107 26.294,-23.118 0.958,21.19 14.583,-29.362 0.109,44.478 33.394,-60.557 2.569,14.938 L 4.8,3.564 l 36.833,-19.011 -1.88,-5.67 z"
style="fill:#00619e;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,205.97307,444.78973)"
clip-path="url(#clipPath8)" />
<path
id="path9"
d="M 0,0 -50.69,20.972 -39.263,-3.23 -3.426,-14.233 8.692,-27.173 Z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,231.79627,283.6988)"
clip-path="url(#clipPath10)" />
<path
id="path11"
d="M 0,0 50.691,20.972 39.263,-3.23 3.427,-14.233 -8.692,-27.173 Z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,299.44827,283.6988)"
clip-path="url(#clipPath12)" />
<path
id="path13"
d="m 0,0 -35.476,9.923 5.419,77.292 14.697,-70.121 z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,155.85733,194.09067)"
clip-path="url(#clipPath14)" />
<path
id="path15"
d="M 0,0 17.597,52.949 39.23,95.811 37.463,59.99 l 62.304,50.532 -36.619,85.685 4.464,78.475 -41.418,-97.788 27.817,11.282 5.738,-35.7 7.626,16.399 3.771,-32.944 4.783,12.116 L 89.481,112.94 62.061,88.694 61.666,119.06 48.773,79.076 47.538,126.128 14.144,65.571 11.575,80.509 -4.799,3.564 l -36.834,-19.011 1.881,-5.67 z"
style="fill:#d6efff;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,326.984,444.78973)"
clip-path="url(#clipPath16)" />
<path
id="path17"
d="M 0,0 35.304,9.923 30.056,87.215 15.36,17.094 Z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,377.33,194.09067)"
clip-path="url(#clipPath18)" />
<path
id="path19"
d="M 0,0 20.501,-11.245 41,0 v 7.634 9.868 L 29.715,22.437 20.462,26.512 11.197,22.437 0,17.502 V 7.634 Z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,239.33333,442.0748)"
clip-path="url(#clipPath20)" />
<path
id="path21"
d="m 194.5,66.895 h 11 v -28 h -11 z"
style="fill:#000d26;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="matrix(1.3333333,0,0,-1.3333333,0,533.33333)"
clip-path="url(#clipPath22)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="153.355%" id="a"><stop stop-color="#FF9D00" offset="0%"/><stop stop-color="#FF0B33" offset="100%"/></linearGradient></defs><path d="M31.81 8a9.088 9.088 0 0 1 9.088 9.088v62.125A3.787 3.787 0 0 1 37.11 83h-8.33a3.787 3.787 0 0 1-3.787-3.787V27.537a3.787 3.787 0 0 0-3.787-3.787h-1.515a3.787 3.787 0 0 0-3.786 3.787v51.676A3.787 3.787 0 0 1 12.118 83H3.787A3.787 3.787 0 0 1 0 79.213V11.787A3.787 3.787 0 0 1 3.787 8h28.022Zm49.102 0A9.088 9.088 0 0 1 90 17.088v15.633a3.03 3.03 0 0 1-3.03 3.029H76.368a3.03 3.03 0 0 1-3.029-3.03v-6.698a2.272 2.272 0 0 0-2.272-2.272H67.28a2.272 2.272 0 0 0-2.272 2.272v38.963c0 .837.678 1.515 1.515 1.515h6.059c.836 0 1.514-.678 1.514-1.515V57.5h-1.514a3.03 3.03 0 0 1-3.03-3.03v-9.69a3.03 3.03 0 0 1 3.03-3.03h14.39A3.03 3.03 0 0 1 90 44.78v29.132A9.088 9.088 0 0 1 80.912 83H58.19a9.088 9.088 0 0 1-9.089-9.088V17.088A9.088 9.088 0 0 1 58.191 8h22.72Z" fill="url(#a)" fill-rule="evenodd"/><style xmlns="" data-source="base" class="dblt-ykjmwcnxmi"/><style xmlns="" data-source="stylesheet-processor" class="dblt-ykjmwcnxmi"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Layer_1"
width="121.48518"
height="55.305733"
x="0"
y="0"
enable-background="new 0 0 196.6 72"
version="1.1"
viewBox="0 0 113.89219 51.848675"
xml:space="preserve"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><metadata
id="metadata20" /><defs
id="defs18" /><path
id="path1052"
d="M 57.032896,-3.3856248e-4 C 45.227625,-3.3856248e-4 35.221679,8.0028574 32.120504,18.846282 29.425259,13.094765 23.58457,9.0653444 16.85711,9.0653444 7.60526,9.0653444 0,16.670607 0,25.922452 c 0,9.251833 7.60526,16.860567 16.85711,16.860567 6.72746,0 12.568149,-4.031885 15.263395,-9.784412 3.101175,10.84425 13.10712,18.850106 24.912391,18.850106 11.717964,0 21.67289,-7.885111 24.853382,-18.607048 2.745036,5.621934 8.513436,9.541354 15.145342,9.541354 9.25185,0 16.86057,-7.608734 16.86057,-16.860567 0,-9.251845 -7.60872,-16.8571076 -16.86057,-16.8571076 -6.631906,0 -12.400306,3.9169646 -15.145342,9.5378906 C 78.705786,7.8821364 68.75086,-3.3856248e-4 57.032896,-3.3856248e-4 Z m 0,9.89551796248 c 8.911648,0 16.030748,7.1156526 16.030748,16.0272726 0,8.911605 -7.1191,16.030737 -16.030748,16.030737 -8.911593,0 -16.027247,-7.119132 -16.027247,-16.030737 0,-8.91162 7.115653,-16.0272706 16.027247,-16.0272726 z M 16.85711,18.960863 c 3.90438,0 6.96505,3.057188 6.96505,6.961589 0,3.904386 -3.06067,6.965049 -6.96505,6.965049 -3.90439,0 -6.96161,-3.060663 -6.96161,-6.965049 0,-3.904401 3.05722,-6.961589 6.96161,-6.961589 z m 80.17451,0 c 3.90442,0 6.96506,3.057188 6.96506,6.961589 0,3.904386 -3.06066,6.965049 -6.96506,6.965049 -3.90436,0 -6.961576,-3.060663 -6.961576,-6.965049 0,-3.904401 3.057226,-6.961589 6.961576,-6.961589 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0082c9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.5659;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /></svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="550.00049"
height="398.08325"
viewBox="0 0 550.00049 398.08325"
fill="none"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<path
d="m 141.11125,269.62825 133.889,-77.073 223.151,128.456 -133.892,77.072 z m -104.137,-59.944 c -49.299,-28.379 -49.299,-74.387 0,-102.763 l 44.63,-25.693 133.889,77.073 -133.889,77.073 z m 297.533,-51.383 133.889,-77.073 44.63,25.693 c 49.299,28.376 49.299,74.384 0,102.763 l -44.63,25.69 z m -193.396,-111.327 44.63,-25.69 c 49.296,-28.379 129.222,-28.379 178.518,0 l 44.63,25.69 -133.889,77.073 z"
fill="#ffffff"
id="path1"
style="fill:#009991;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 794 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 960">
<path fill="#000000" d="M494.86,409.59l-37.52-83.51h-35.35v1.44c2.89,2.52,4.69,9.56,4.69,17.31v80.63c0,12.8-1.62,19.12-4.33,21.83v1.44h20.56s0-1.44,0-1.44c-2.71-2.71-5.41-7.22-5.41-21.83v-80.99s46.18,104.26,46.18,104.26h5.23l46.19-104.61v84.05c0,10.1-1.62,16.42-4.33,19.12v1.44h34.81s0-1.44,0-1.44c-2.71-2.71-4.33-9.01-4.33-19.12v-83.34c0-7.76,1.81-14.79,4.69-17.31v-1.44h-34.09l-36.98,83.51h0ZM378.21,373.87v-20.2h-.73l-31.03,11.19v1.27c3.79,3.25,6.49,10.28,6.49,20.92v41.12c0,10.1-1.62,16.42-4.33,19.12v1.44h35.71s0-1.44,0-1.44c-3.06-2.35-6.14-6.68-6.14-19.12v-47.98c3.79-3.6,9.56-5.6,16.96-5.6,6.14,0,11.9,1.08,16.23,3.25h1.44s0-22.54,0-22.54c-1.62-.36-3.97-.54-6.49-.54-12.44,0-22.37,8.66-28.14,19.12h.01Z"/>
</svg>

After

Width:  |  Height:  |  Size: 784 B

View File

@@ -0,0 +1 @@
<svg id="Lager_1" data-name="Lager 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 189.11 188.93"><defs><style>.cls-1{fill:#fff;}</style></defs><path d="M515.5,279.22a94.56,94.56,0,1,1-94.56-94.47A94.51,94.51,0,0,1,515.5,279.22Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M388.45,300.05c-1.94,8.41-12.59,1.73-15.15,12-2.42,9.71,7.54,19.77,1.62,19.42-8.11-.48-18-2.84-12.78,11.64-2.5-16.77,14.88-4.2,18.93-9.7s-5.92-19.23,2.81-19.12,11.89,2,15.58-3.46C395.14,308,392.36,305.21,388.45,300.05Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M412.37,239.33c11.71-12.4-2.75-9.08-2.75-18.16.07-5.18,15.13-6.72,17.07-12s-20.14-9.51-5.84-18.11c-8.05,11.07,10.86,9.87,10.43,18.11-.36,6.62-11.08,9-11.08,12.07-.21,5.56,15.66,5.72,9.2,18.3A39.57,39.57,0,0,0,412.37,239.33Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M442.81,245.1c1.86-4.54,6-10.44,14.59-8,14.41,4.09,1.48-9.39,10.51-14.21,7.66-4.11,11.06,6.13,20.79,3.31-6.61,7.84-14.16-4.16-18.5,2.24-3.85,5.66,3.15,11.12.91,15.22-3.51,6.36-10.36.78-13.8,3.33s-3,6.88-3,10.37C451.87,252.48,447.08,248.24,442.81,245.1Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M459.71,270.1c10.31,9.5,11-3.49,17.62-3.5,5.78,0,8.12,17.32,14.11,17.51,6.79.2,10.64-15.69,18.73-5-9.61-5.29-11.14,9.84-18.53,10-10.84.18-11.22-12.56-14.53-12.56-4.54.22-4.5,17.44-17.9,10.43A36.93,36.93,0,0,0,459.71,270.1Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M441.56,311.37c8.81,5.91.67,11.88,5.51,16.58,3.45,3.31,13.88-4,18.59-2.52,3,1-2.63,9.82,1.92,13.41,3.83,3,11.91,2.08,15.82-.8-5.36.62-11.13,1.45-13.45-3.86s3.81-12.27,1.3-15.35c-2.19-2.67-16,5.2-15-4.28.43-3.77,3.15-12-2.92-14.27A40.5,40.5,0,0,1,441.56,311.37Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M412.93,316.48c-2.42,10.89,6.09,12.37,6.25,16.28.24,5.88-9.29,6.94-9.12,14.06.11,4.61,16.23,9.05,10.49,18.07,8.06-6.25-4-13.61-3.82-17.92.29-8,14.07-6.12,13.8-15.05-.21-7.85-6.11-5.67-.93-15.45A42.33,42.33,0,0,1,412.93,316.48Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M382.27,270.8c-13.19-4.74-16.29,11-20,10.81S354,266,349.36,270.07c-8.09,7.13-6.68,12.48-14.61,9.24,7.33,7.23,9.09-1.91,15-5.25,5-2.8,4.85,16.63,12.69,16.83,4.33.11,9.5-7,12.18-7a11.29,11.29,0,0,1,8.15,3.9A39,39,0,0,1,382.27,270.8Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M387.73,257.21c-8.38-2.34-6.54-10.82-5.79-16.22.72-5.23.37-8.75-8-3.9s-14.66-4.52-9.71-9.8c4.33-4.63-2-7.48-6.53-6.16,1.56-1.92,9.08-5.59,11.55,2,1.34,4.12-2.73,7.4-.53,9.09,4.09,3.13,9.78-8.44,16.32-6.12,5.79,2.06,3.4,6.33,5.69,13.72,1.09,3.47,3.89,5.43,7.74,5.77A38.31,38.31,0,0,0,387.73,257.21Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M409.85,272.86c-2.28-.32-1.89-2.08-1.89-2.08l-2.61-1s-.83,5.07,4.25,5.06c4.82,0,5.61-2.24,5.68-2.75a31,31,0,0,0-3.14-.53C411.75,272.16,411.73,273.13,409.85,272.86Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M434.69,270.35a1.63,1.63,0,0,1-1.34,2.51c-1.88.27-2.14-.57-2.41-1.42-1,.19-2.36.33-3.45.57.07.52,1.72,3.07,6.46,2.23,5.18-.92,3.34-5,3.34-5S435.55,270,434.69,270.35Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M420.74,293.72c-14.62.21-22.05-3.89-23.72-5.91-.63,2.23,7,17.47,24.38,17.32C440.23,305,445,287.89,445,285.06,442.31,288.11,439.06,293.44,420.74,293.72Z" transform="translate(-326.39 -184.75)"/><path class="cls-1" d="M420.91,241.27a36.51,36.51,0,1,0,36.51,36.51A36.5,36.5,0,0,0,420.91,241.27ZM422,267.54c1.51,3,.26,4.91,10.47,1.74,3.82-1.17,10.61-7.94,16.46-1.64-4.15-3.13-9.22-.58-8.93,1.15-.19.92.14,5-5.42,6.26-5.32,1.19-7.78-1.85-8.5-2.64C422.12,272.47,421.79,269.07,422,267.54Zm1.77,14.94c-1.27.94,1.15-2.3,2.81-1.6s-1,4.28-.31,2.09C426.83,281.18,425.19,281.39,423.74,282.48Zm-13-12.82c10,2.92,9.33.72,9.67-.19.11.66-.11,3-4.05,2.94-.71.79-.92,3.65-6.58,3.61-6.84,0-7.21-5.11-7.31-6.29-.21-2.68-5.71-2.67-8.31-2.09C400.29,264.68,406.86,268.54,410.7,269.66Zm6.4,14.28c.33,1.19-2.53-1.32-.3-2.14s3.53,1.73,3,1.33C418.21,282,416.5,281.71,417.1,283.94Zm29.71,0c-.65,7-5.71,21.68-25.34,21.87-16.91.16-25.79-11.3-26.29-18.11-1.12,1.22-1.7,3.22-1.68,5.77-.48-1.06-1.07-6,1.56-8a3.56,3.56,0,0,1,3.33-.23c-1.24.65-.88.25-1.34.72.66,1.63,8.88,7.06,23.49,7.05,16.14,0,22-5.63,24.36-10.67a4.44,4.44,0,0,0-2.6-1.14,5.06,5.06,0,0,1,4.78.25c1.65,1.14,2.74,4.23,2.6,7.56C449.46,287.4,448.4,284.46,446.81,284Z" transform="translate(-326.39 -184.75)"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,122 +1,38 @@
{
"images": [
"images" : [
{
"size": "20x20",
"idiom": "iphone",
"filename": "Icon-App-20x20@2x.png",
"scale": "2x"
"filename" : "Icon-App-1024x1024@1x.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
},
{
"size": "20x20",
"idiom": "iphone",
"filename": "Icon-App-20x20@3x.png",
"scale": "3x"
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"filename" : "Dark mode-1024@1x.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "Icon-App-29x29@1x.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "Icon-App-29x29@2x.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "iphone",
"filename": "Icon-App-29x29@3x.png",
"scale": "3x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "Icon-App-40x40@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "iphone",
"filename": "Icon-App-40x40@3x.png",
"scale": "3x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "Icon-App-60x60@2x.png",
"scale": "2x"
},
{
"size": "60x60",
"idiom": "iphone",
"filename": "Icon-App-60x60@3x.png",
"scale": "3x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "Icon-App-20x20@1x.png",
"scale": "1x"
},
{
"size": "20x20",
"idiom": "ipad",
"filename": "Icon-App-20x20@2x.png",
"scale": "2x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "Icon-App-29x29@1x.png",
"scale": "1x"
},
{
"size": "29x29",
"idiom": "ipad",
"filename": "Icon-App-29x29@2x.png",
"scale": "2x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "Icon-App-40x40@1x.png",
"scale": "1x"
},
{
"size": "40x40",
"idiom": "ipad",
"filename": "Icon-App-40x40@2x.png",
"scale": "2x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "Icon-App-76x76@1x.png",
"scale": "1x"
},
{
"size": "76x76",
"idiom": "ipad",
"filename": "Icon-App-76x76@2x.png",
"scale": "2x"
},
{
"size": "83.5x83.5",
"idiom": "ipad",
"filename": "Icon-App-83.5x83.5@2x.png",
"scale": "2x"
},
{
"size": "1024x1024",
"idiom": "ios-marketing",
"filename": "Icon-App-1024x1024@1x.png",
"scale": "1x"
"appearances" : [
{
"appearance" : "luminosity",
"value" : "tinted"
}
],
"filename" : "Tinted icon-1024@1x.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
}
],
"info": {
"version": 1,
"author": "xcode"
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
@@ -14,10 +17,17 @@
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI"/>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"></imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
</imageView>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" systemColor="labelColor"/>
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
@@ -34,11 +44,14 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="1153" height="1153"/>
<image name="LaunchBackground" width="1" height="1"/>
<image name="LaunchImage" width="288" height="288"/>
<systemColor name="labelColor">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -63,6 +63,8 @@
<string>Main</string>
<key>UIStatusBarHidden</key>
<false/>
<key>FlutterDeepLinkingEnabled</key>
<false/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>

View File

@@ -496,7 +496,7 @@ ElevatedButtonThemeData buildElevatedButtonThemeData({
fontFamily: 'Inter-SemiBold',
fontSize: 18,
),
padding: const EdgeInsets.symmetric(vertical: 18),
padding: const EdgeInsets.symmetric(vertical: 8),
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(4)),
),

View File

@@ -196,6 +196,7 @@
"scanAQrCode": "مسح رمز QR",
"enterDetailsManually": "أدخل التفاصيل يدوياً",
"edit": "تعديل",
"share": "مشاركة",
"copiedToClipboard": "تم النسخ إلى الحافظة",
"copiedNextToClipboard": "تم نسخ الرموز التالية إلى الحافظة",
"error": "خطأ",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Използвайте ключ за възстановяване",
"incorrectPasswordTitle": "Грешна парола",
"welcomeBack": "Добре дошли отново!",
"emailAlreadyRegistered": "Имейлът вече е регистриран.",
"emailNotRegistered": "Имейлът не е регистриран.",
"madeWithLoveAtPrefix": "направено с ❤️ от ",
"supportDevs": "Абонирайте се за <bold-green>ente</bold-green>, за да ни подкрепите",
"supportDiscount": "Използвайте промокод „AUTH“, за да получите 10% отстъпка през първата година",

View File

@@ -1 +1,504 @@
{}
{
"account": "Účet",
"unlock": "Odemknout",
"recoveryKey": "Obnovovací klíč",
"counterAppBarTitle": "Počítadlo",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Bezpečně zálohujte své 2FA kódy",
"onBoardingGetStarted": "Začínáme",
"setupFirstAccount": "Nastavte si první účet",
"importScanQrCode": "Skenovat QR kód",
"qrCode": "QR kód",
"importEnterSetupKey": "Zadejte nastavovací klíč",
"importAccountPageTitle": "Zadejte podrobnosti o účtu",
"secretCanNotBeEmpty": "Tajný klíč nemůže být prázdný",
"bothIssuerAndAccountCanNotBeEmpty": "Pole vydavatel a účet nesmějí být prázdná",
"incorrectDetails": "Nesprávné podrobnosti",
"pleaseVerifyDetails": "Prosím, ověřte podrobnosti a zkuste to znovu",
"codeIssuerHint": "Vydavatel",
"codeSecretKeyHint": "Tajný klíč",
"secret": "Tajný klíč",
"all": "Vše",
"notes": "Poznámky",
"notesLengthLimit": "Poznámky mohou být maximálně {count} znaků dlouhé",
"@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": "Účet (you@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Druh klíče",
"sessionExpired": "Relace vypršela",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Přihlaste se, prosím, znovu",
"loggingOut": "Odhlašování...",
"timeBasedKeyType": "Časově založený (TOTP)",
"counterBasedKeyType": "Založeno na čítači (HOTP)",
"saveAction": "Uložit",
"nextTotpTitle": "další",
"deleteCodeTitle": "Odstranit kód?",
"deleteCodeMessage": "Opravdu chcete smazat tento kód? Tato akce je nevratná.",
"trashCode": "Přesunout kód do koše?",
"trashCodeMessage": "Opravdu chcete přesunout kód pro {account} do koše?",
"trash": "Koš",
"viewLogsAction": "Zobrazit logy",
"sendLogsDescription": "Tímto se odešlou protokoly, které nám pomohou vyladit váš problém. I když přijímáme opatření, abychom zajistili, že citlivé informace nebudou protokolovány, doporučujeme Vám si tyto protokoly prohlédnout, před sdílením prohlédnout.",
"preparingLogsTitle": "Příprava logů...",
"emailLogsTitle": "Zaslat logy e-mailem",
"emailLogsMessage": "Pošlete prosím logy na {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Kopírovat e-mail",
"exportLogsAction": "Exportovat logy",
"reportABug": "Nahlásit chybu",
"crashAndErrorReporting": "Hlášení pádů a chyb",
"reportBug": "Nahlásit chybu",
"emailUsMessage": "Pošlete nám prosím e-mail na {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Kontaktovat podporu",
"rateUsOnStore": "Ohodnoťte nás na {storeName}",
"blog": "Blog",
"merchandise": "E-shop",
"verifyPassword": "Ověření hesla",
"pleaseWait": "Čekejte prosím...",
"generatingEncryptionKeysTitle": "Generování šifrovacích klíčů...",
"recreatePassword": "Znovu vytvořit heslo",
"recreatePasswordMessage": "Aktuální zařízení není dostatečně výkonné k ověření Vašeho hesla, potřebujeme ho proto obnovit způsobem, který bude fungovat se všemi zařízeními. \n\nPřihlaste se, prosím, použitím svého obnovovacího klíče a obnovte heslo (můžete použít stejné, pokud chcete).",
"useRecoveryKey": "Použít obnovovací klíč",
"incorrectPasswordTitle": "Nesprávné heslo",
"welcomeBack": "Vítejte zpět!",
"madeWithLoveAtPrefix": "vyrobeno s ❤️ v ",
"supportDevs": "Předplaťte si <bold-green>ente</bold-green>, abyste nás podpořili",
"supportDiscount": "Použijte kód \"AUTH\" pro získání 10% slevy na první rok",
"changeEmail": "Změnit e-mail",
"changePassword": "Změnit heslo",
"data": "Data",
"importCodes": "Importovat kódy",
"importTypePlainText": "Prostý text",
"importTypeEnteEncrypted": "Šifrovaný export z Ente",
"passwordForDecryptingExport": "Heslo pro dešifrování exportu",
"passwordEmptyError": "Heslo nemůže být prázdné",
"importFromApp": "Importovat kódy z {appName}",
"importGoogleAuthGuide": "Exportujte své účty z Google Authenticator do QR kódu pomocí možnosti \"Transfer Accounts\". Potom pomocí jiného zařízení naskenujte QR kód.\n\nTip: Pro vyfocení QR kódu můžete použít webovou kameru svého notebooku..",
"importSelectJsonFile": "Vybrat soubor JSON",
"importSelectAppExport": "Vybrat soubor exportovaný z {appName}",
"importEnteEncGuide": "Vyberte šifrovaný JSON soubor exportovaný z Ente",
"importRaivoGuide": "Použijte možnost \"Export OTPs to Zip archive\" v nastavení aplikace Raivo.",
"importBitwardenGuide": "Použijte možnost \"Export vault\" v Bitwarden Tools a inportujte nešifrovaný soubor JSON.",
"importAegisGuide": "Použijte možnost \"Export the vault\" v nastavení aplikace Aegis.",
"import2FasGuide": "Použijte možnost \"Settings->Backup -Export\" v 2FA.\n\nPokud je Vaše záloha šifrovaná, budete muset zadat heslo pro její odemčení",
"importLastpassGuide": "V nastavení aplikace Lastpass Authenticator vyberte možnost \"Transfer accounts\" a poté \"Export accounts to file\". Vygenerovaný soubor JSON následně nahrajte sem.",
"exportCodes": "Exportovat kódy",
"importLabel": "Importovat",
"importInstruction": "Vyberte, prosím, soubor obsahující seznam Vašich kódů v následujícím formátu",
"importCodeDelimiterInfo": "Kódy mohou být odděleny čárkou nebo novým řádkem",
"selectFile": "Vybrat soubor",
"emailVerificationToggle": "Ověření pomocí e-mailu",
"emailVerificationEnableWarning": "Abyste předešli uzamčení svého účtu, nezapomeňte si před povolením ověření e-mailem uložit kopii svého 2FA emailu mimo Ente Auth.",
"authToChangeEmailVerificationSetting": "Pro změnu ověření pomocí emailu se musíte ověřit",
"authenticateGeneric": "Ověřte se, prosím",
"authToViewYourRecoveryKey": "Pro zobrazení svého obnovovacího klíče se, prosím, ověřte",
"authToChangeYourEmail": "Pro změnu svého e-mailu se, prosím, ověřte",
"authToChangeYourPassword": "Pro změnu svého hesla se, prosím, ověřte",
"authToViewSecrets": "Pro zobrazení svých tajných údajů se musíte ověřit",
"ok": "Ok",
"cancel": "Zrušit",
"yes": "Ano",
"no": "Ne",
"email": "E-mail",
"support": "Podpora",
"general": "Hlavní",
"settings": "Nastavení",
"copied": "Zkopírováno",
"pleaseTryAgain": "Zkuste to prosím znovu",
"existingUser": "Stávající uživatel",
"newUser": "Nový uživatel Ente",
"delete": "Smazat",
"enterYourPasswordHint": "Zadejte své heslo",
"forgotPassword": "Zapomenuté heslo",
"oops": "Jejda",
"suggestFeatures": "Navrhnout funkce",
"faq": "Často kladené dotazy (FAQ)",
"somethingWentWrongMessage": "Něco se pokazilo. Zkuste to prosím znovu",
"leaveFamily": "Odejít z rodiny",
"leaveFamilyMessage": "Jste si jisti, že chcete opustit rodinný plán?",
"inFamilyPlanMessage": "Jste v rodinném tarifu!",
"hintForMobile": "Pro odstranění nebo úpravu kódu dlouze podržte.",
"hintForDesktop": "Pro úpravu nebo smazáno klikněte na kód pravým tlačítkem.",
"scan": "Skenovat",
"scanACode": "Skenovat kód",
"verify": "Ověřit",
"verifyEmail": "Ověřit e-mail",
"enterCodeHint": "Zadejte 6místný kód ze své autentizační aplikace",
"lostDeviceTitle": "Ztratili jste zařízení?",
"twoFactorAuthTitle": "Dvoufaktorové ověření",
"verifyPasskey": "Ověřit přístupový klíč",
"loginWithTOTP": "Přihlášení s TOTP",
"recoverAccount": "Obnovit účet",
"enterRecoveryKeyHint": "Zadejte svůj obnovovací klíč",
"recover": "Obnovit",
"contactSupportViaEmailMessage": "Prosím zašlete e-mail na ",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Neplatný QR kód",
"noRecoveryKeyTitle": "Nemáte obnovovací klíč?",
"enterEmailHint": "Zadejte svou e-mailovou adresu",
"invalidEmailTitle": "Neplatná e-mailová adresa",
"invalidEmailMessage": "Prosím, zadejte platnou e-mailovou adresu.",
"deleteAccount": "Odstranit účet",
"deleteAccountQuery": "Mrzí nás, že odcházíte. Máte nějaké problémy s aplikací?",
"yesSendFeedbackAction": "Ano, poslat zpětnou vazbu",
"noDeleteAccountAction": "Ne, odstranit účet",
"initiateAccountDeleteTitle": "Pro zahájení odstranění účtu se, prosím, ověřte",
"sendEmail": "Odeslat e-mail",
"createNewAccount": "Vytvořit nový účet",
"weakStrength": "Slabé",
"strongStrength": "Silné",
"moderateStrength": "Střední",
"confirmPassword": "Potvrzení hesla",
"close": "Zavřít",
"oopsSomethingWentWrong": "Jejda, něco se pokazilo.",
"selectLanguage": "Vybrat jazyk",
"language": "Jazyk",
"social": "Sociální sítě",
"security": "Zabezpečení",
"lockscreen": "Zamykací obrazovka",
"authToChangeLockscreenSetting": "Pro změnu nastavení uzamčení obrazovky se musíte ověřit",
"deviceLockEnablePreSteps": "Pro aktivaci zámku zařízení si nastavte přístupový kód zařízení nebo zámek obrazovky v nastavení systému.",
"viewActiveSessions": "Zobrazit aktivní relace",
"authToViewYourActiveSessions": "Pro zobrazení svých aktivních relací se, prosím, ověřte",
"searchHint": "Vyhledávejte...",
"search": "Hledání",
"sorryUnableToGenCode": "Omlouváme se, nepodařilo se vygenerovat kód pro {issuerName}",
"noResult": "Žádné výsledky",
"addCode": "Přidat kód",
"scanAQrCode": "Naskenovat QR kód",
"enterDetailsManually": "Vložit údaje ručně",
"edit": "Upravit",
"share": "Sdílet",
"shareCodes": "Sdílet kódy",
"shareCodesDuration": "Vyberte dobu, po kterou chcete kódy sdílet.",
"restore": "Obnovit",
"copiedToClipboard": "Zkopírováno do schránky",
"copiedNextToClipboard": "Další kód zkopírován do schránky",
"error": "Chyba",
"recoveryKeyCopiedToClipboard": "Obnovovací klíč byl zkopírován",
"recoveryKeyOnForgotPassword": "Tento klíč je jedinou cestou pro obnovení Vašich dat, pokud zapomenete heslo.",
"recoveryKeySaveDescription": "Tento 24místný klíč neuchováváme, uschovejte ho, prosím, na bezpečném místě.",
"doThisLater": "Udělat později",
"saveKey": "Uložit klíč",
"save": "Uložit",
"send": "Odeslat",
"saveOrSendDescription": "Chcete toto uložit do paměti zařízení (ve výchozím nastavení do složky Stažené soubory), nebo odeslat do jiných aplikací?",
"saveOnlyDescription": "Chcete toto uložit do paměti zařízení (ve výchozím nastavení do složky Stažené soubory)?",
"back": "Zpět",
"createAccount": "Vytvořit účet",
"passwordStrength": "Síla hesla: {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": "Heslo",
"signUpTerms": "Souhlasím s <u-terms>podmínkami služby</u-terms> a <u-terms>zásadami ochrany osobních údajů</u-terms>",
"privacyPolicyTitle": "Podmínky ochrany osobních údajů",
"termsOfServicesTitle": "Podmínky",
"encryption": "Šifrování",
"setPasswordTitle": "Nastavit heslo",
"changePasswordTitle": "Změnit heslo",
"resetPasswordTitle": "Obnovit heslo",
"encryptionKeys": "Šifrovací klíče",
"passwordWarning": "Vaše heslo neuchováváme. Pokud ho zapomenete, <underline>nemůžeme Vaše data dešifrovat</underline>",
"enterPasswordToEncrypt": "Zadejte heslo, kterým můžeme zašifrovat Vaše data",
"enterNewPasswordToEncrypt": "Zadejte nové heslo, kterým můžeme šifrovat Vaše data",
"passwordChangedSuccessfully": "Heslo úspěšně změněno",
"generatingEncryptionKeys": "Generování šifrovacích klíčů...",
"continueLabel": "Pokračovat",
"insecureDevice": "Nezabezpečené zařízení",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Omlouváme se, na tomto zařízení nemůžeme vygenerovat bezpečné klíče.\n\nprosím přihlaste se z jiného zařízení.",
"howItWorks": "Jak to funguje",
"ackPasswordLostWarning": "Rozumím, že při zapomenutí hesla mohu ztratit svá data, protože jsou zabezpečena <underline>koncovým šifrováním</underline>.",
"loginTerms": "Kliknutím na přihlášení souhlasím s <u-terms>podmínkami služby</u-terms> a <u-policy>zásadami ochrany osobních údajů</u-policy>",
"logInLabel": "Přihlásit se",
"logout": "Odhlásit se",
"areYouSureYouWantToLogout": "Opravdu se chcete odhlásit?",
"yesLogout": "Ano, odhlásit se",
"exit": "Konec",
"theme": "Motiv",
"lightTheme": "Světlý",
"darkTheme": "Tmavý",
"systemTheme": "Systém",
"verifyingRecoveryKey": "Ověřování obnovovacího klíče...",
"recoveryKeyVerified": "Obnovovací klíč byl ověřen",
"recoveryKeySuccessBody": "Skvělé! ",
"invalidRecoveryKey": "Vámi zadaný obnovovací klíč není platný. Prosím, ujistěte se, že obsahuje 24 slov, zkontrolujte také jejich hláskování.\n\nPokud jste zadali starší obnovovací kód, ujistěte se, že je dlouhý 64 znaků a zkontrolujte každý z nich.",
"recreatePasswordTitle": "Resetovat heslo",
"recreatePasswordBody": "Aktzální zařízení není dostatečně výkonné pro ověření Vašeho hesla, ale můžeme ho regenerovat způsobem, který funguje ve všech zařízením.\n\nPřihlašte se pomocí obnovovacího klíče a znovu si vygenerujte své heslo (můžete použít opět stejné, pokud chcete).",
"invalidKey": "Neplatný klíč",
"tryAgain": "Zkusit znovu",
"viewRecoveryKey": "Zobrazit obnovovací klíč",
"confirmRecoveryKey": "Potvrdit obnovovací klíč",
"recoveryKeyVerifyReason": "Váš obnovovací klíč je jedinou cestou pro obnovení Vašich fotek, pokud zapomenete heslo. Můžete ho najít v Nastavení > Účet.\n\nZadejte, prosím, svůj obnovovací klíč pro ověření, že si ho pamatujete správně.",
"confirmYourRecoveryKey": "Potvrďte svůj obnovovací klíč",
"confirm": "Potvrdit",
"emailYourLogs": "Zašlete své logy e-mailem",
"pleaseSendTheLogsTo": "Pošlete prosím logy na \n{toEmail}",
"copyEmailAddress": "Kopírovat e-mailovou adresu",
"exportLogs": "Exportovat logy",
"enterYourRecoveryKey": "Zadejte svůj obnovovací klíč",
"tempErrorContactSupportIfPersists": "Vypadá to, že se něco pokazilo. Zkuste to znovu po delší době. Pokud chyba přetrvává, kontaktujte náš tým podpory.",
"networkHostLookUpErr": "Nelze se připojit k Ente, zkontrolujte, prosím, nastavení své sítě a kontaktujte podporu, pokud chyba přetrvává",
"networkConnectionRefusedErr": "Nepodařilo se připojit k Ente, zkuste to po nějaké době znovu. Pokud chyba přetrvává, kontaktujte, prosím, podporu.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Vypadá to, že se něco pokazilo. Zkuste to prosím znovu po nějaké době. Pokud chyba přetrvává, kontaktujte prosím naši podporu.",
"about": "O aplikaci",
"weAreOpenSource": "Jsme open source!",
"privacy": "Soukromí",
"terms": "Podmínky",
"checkForUpdates": "Zkontrolovat aktualizace",
"checkStatus": "Zkontrolovat stav",
"downloadUpdate": "Stáhnout",
"criticalUpdateAvailable": "Je k dispozici kritická aktualizace",
"updateAvailable": "Je k dispozici aktualizace",
"update": "Aktualizace",
"checking": "Probíhá kontrola...",
"youAreOnTheLatestVersion": "Máte nejnovější verzi",
"warning": "Upozornění",
"exportWarningDesc": "Exportovaný soubor obsahuje citlivé informace. Uložte jej bezpečně.",
"iUnderStand": "Rozumím",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Pro export svých kódů se, prosím, ověřte",
"importSuccessTitle": "Paráda!",
"importSuccessDesc": "Importovali jste {count} kódů!",
"@importSuccessDesc": {
"placeholders": {
"count": {
"description": "The number of codes imported",
"type": "int",
"example": "1"
}
}
},
"sorry": "Omlouváme se",
"importFailureDesc": "Nelze analyzovat vybraný soubor.\nProsím napište na support@ente.io, pokud potřebujete pomoc!",
"pendingSyncs": "Upozornění",
"pendingSyncsWarningBody": "Některé z Vašich kódů nebyly zálohované.\n\nPřed odhlášením se, prosím, ujistěte o jejich záloze.",
"checkInboxAndSpamFolder": "Pro dokončení ověření prosím zkontrolujte, prosím, svou doručenou poštu (a spamy)",
"tapToEnterCode": "Klepnutím zadejte kód",
"resendEmail": "Odeslat e-mail znovu",
"weHaveSendEmailTo": "Odeslali jsme e-mail 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"
}
}
},
"manualSort": "Vlastní",
"editOrder": "Upravit pořadí",
"mostFrequentlyUsed": "Nejpoužívanější",
"mostRecentlyUsed": "Naposledy použité",
"activeSessions": "Aktivní relace",
"somethingWentWrongPleaseTryAgain": "Něco se pokazilo. Zkuste to, prosím, znovu",
"thisWillLogYouOutOfThisDevice": "Tato akce Vás odhlásí z tohoto zařízení!",
"thisWillLogYouOutOfTheFollowingDevice": "Toto Vás odhlásí z následujícího zařízení:",
"terminateSession": "Ukončit relaci?",
"terminate": "Ukončit",
"thisDevice": "Toto zařízení",
"toResetVerifyEmail": "Pro obnovení hesla obnovte, prosím, nejprve svůj e-mail.",
"thisEmailIsAlreadyInUse": "Tento e-mail je již používán",
"verificationFailedPleaseTryAgain": "Ověření selhalo, přihlaste se, prosím, znovu",
"yourVerificationCodeHasExpired": "Váš ověřovací kód vypršel",
"incorrectCode": "Nesprávný kód",
"sorryTheCodeYouveEnteredIsIncorrect": "Omlouváme se, zadaný kód je nesprávný",
"emailChangedTo": "E-mail změněn na {newEmail}",
"authenticationFailedPleaseTryAgain": "Ověření selhalo, zkuste to, prosím, znovu",
"authenticationSuccessful": "Ověření bylo úspěšné!",
"twofactorAuthenticationSuccessfullyReset": "Dvoufázové ověření bylo úspěšně obnoveno",
"incorrectRecoveryKey": "Nesprávný obnovovací klíč",
"theRecoveryKeyYouEnteredIsIncorrect": "Vámi zadaný obnovovací klíč je nesprávný",
"enterPassword": "Zadejte heslo",
"selectExportFormat": "Vyberte formát exportu",
"exportDialogDesc": "Šifrované exporty budou chráněny heslem dle vašeho výběru.",
"encrypted": "Šifrovaný",
"plainText": "Prostý text",
"passwordToEncryptExport": "Heslo pro šifrování exportu",
"export": "Export",
"useOffline": "Použít bez zálohování",
"signInToBackup": "Pro zálohování vašich kódů se přihlaste",
"singIn": "Přihlásit se",
"sigInBackupReminder": "Exportujte prosím své kódy, abyste se ujistili, že máte zálohu, ze které můžete obnovit.",
"offlineModeWarning": "Zvolili jste si pokračovat bez zálohování. Provádějte, prosím, manuální zálohy pro jistotu bezpečí svých kódů.",
"showLargeIcons": "Zobrazit velké ikony",
"compactMode": "Kompaktní režim",
"shouldHideCode": "Skrýt kódy",
"doubleTapToViewHiddenCode": "Pro zobrazení kódu můžete dvakrát klepnout na záznam",
"focusOnSearchBar": "Zaměřit hledání při spuštění aplikace",
"confirmUpdatingkey": "Opravdu chcete aktualizovat tajný klíč?",
"minimizeAppOnCopy": "Minimalizovat aplikaci po zkopírování",
"editCodeAuthMessage": "Pro úpravu kódu se ověřte",
"deleteCodeAuthMessage": "Pro odstranění kódu se ověřte",
"showQRAuthMessage": "Pro zobrazení QR kódu se ověřte",
"confirmAccountDeleteTitle": "Potvrdit odstranění účtu",
"confirmAccountDeleteMessage": " ",
"androidBiometricHint": "Ověřte svou identitu",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Nerozpoznáno. Zkuste znovu.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Úspěch",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Zrušit",
"@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": "Je požadováno ověření",
"@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": "Je požadováno biometrické ověření",
"@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": "Jsou vyžadovány přihlašovací údaje zařízení",
"@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": "Jsou vyžadovány přihlašovací údaje zařízení",
"@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": "Jít do nastavení",
"@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": "Na Vašem zařízení není nastaveno biometrické ověřování. Pro aktivaci běžte do 'Nastavení > Zabezpečení'.",
"@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": "Biometrické ověřování není povoleno. Pro povolení zamkněte a odemkněte obrazovku.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "Na Vašem zařízení není nastaveno biometrické ověřování. Nastavte si na svém telefonu Touch ID nebo Face ID, prosím.",
"@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": "Žádné připojení k internetu",
"pleaseCheckYourInternetConnectionAndTryAgain": "Zkontrolujte, prosím, své připojení k internetu a zkuste to znovu.",
"signOutFromOtherDevices": "Odhlásit z ostatních zařízení",
"signOutOtherBody": "Pokud si myslíte, že by někdo mohl znát Vaše heslo, můžete vynutit odhlášení ostatních zařízení používajících Váš účet.",
"signOutOtherDevices": "Odhlásit z ostatních zařízení",
"doNotSignOut": "Neodhlašovat",
"hearUsWhereTitle": "Jak jste se dozvěděli o Ente? (volitelné)",
"hearUsExplanation": "Ne sledujeme instalace aplikace. Pomůže nám, když nám sdělíte, kde jste nás našli!",
"recoveryKeySaved": "Obnovovací klíč uložen do složky Stažené soubory!",
"waitingForBrowserRequest": "Čekání na požadavek prohlížeče...",
"waitingForVerification": "Čekání na ověření...",
"passkey": "Přístupový klíč",
"passKeyPendingVerification": "Ověřování stále probíhá",
"loginSessionExpired": "Relace vypršela",
"loginSessionExpiredDetails": "Vaše relace vypršela. Přihlaste se, prosím, znovu.",
"developerSettingsWarning": "Opravdu chcete změnit nastavení pro vývojáře?",
"developerSettings": "Nastavení pro vývojáře",
"serverEndpoint": "Koncový bod serveru",
"invalidEndpoint": "Neplatný koncový bod",
"invalidEndpointMessage": "Zadaný koncový bod je neplatný. Zadejte prosím platný koncový bod a zkuste to znovu.",
"endpointUpdatedMessage": "Koncový bod byl úspěšně aktualizován",
"customEndpoint": "Připojeno k {endpoint}",
"pinText": "Připnout",
"unpinText": "Odepnout",
"pinnedCodeMessage": "{code} byl připnut",
"unpinnedCodeMessage": "{code} byl odepnut",
"pinned": "Připnuté",
"tags": "Tagy",
"createNewTag": "Vytvořit nový tag",
"tag": "Tag",
"create": "Vytvořit",
"editTag": "Upravit tag",
"deleteTagTitle": "Odstranit tag?",
"deleteTagMessage": "Jste si jistí, že chcete odstranit tento tag? Akce je nevratná.",
"somethingWentWrongParsingCode": "Nepovedlo se ",
"updateNotAvailable": "Aktualizace není dostupná",
"viewRawCodes": "Zobrazit nezpracované kódy",
"rawCodes": "Nezpracované kódy",
"rawCodeData": "Nezpracovaná kódová data",
"appLock": "Zámek aplikace",
"noSystemLockFound": "Zámek systému nenalezen",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Pro aktivaci zámku aplikace si pro prosím nastavte zámek obrazovky v nastavení svého systému.",
"autoLock": "Automatické zamykání",
"immediately": "Ihned",
"reEnterPassword": "Zadejte heslo znovu",
"reEnterPin": "Zadejte PIN znovu",
"next": "Další",
"tooManyIncorrectAttempts": "Příliš mnoho neúspěšných pokusů",
"tapToUnlock": "Pro odemčení klepněte",
"setNewPassword": "Nastavit nové heslo",
"deviceLock": "Zámek zařízení",
"hideContent": "Skrýt obsah",
"hideContentDescriptionAndroid": "Skryje obsah aplikace ve ",
"hideContentDescriptioniOS": "Skryje obsah aplikace při přepínání úloh",
"autoLockFeatureDescription": "Interval, po kterém se aplikace běžící na pozadí uzamkne",
"appLockDescription": "Vyberte si mezi zámkem obrazovky svého zařízení a vlastním zámkem obrazovky s PIN kódem nebo heslem.",
"pinLock": "Uzamčení na PIN",
"enterPin": "Zadejte PIN",
"setNewPin": "Nadra",
"importFailureDescNew": "Nelze analyzovat vybraný soubor.",
"appLockNotEnabled": "Zámek aplikaci není aktivní",
"appLockNotEnabledDescription": "Aktivujte, prosím, zámek aplikace v 'Nastavení > Zámek aplikace'",
"authToViewPasskey": "Pro zobrazení přístupového klíče se, prosím, ověřte",
"appLockOfflineModeWarning": "Zvolili jste si pokračování bez zálohování. Pokud zapomenete heslo do aplikace, přístup k datům bude uzamčen.",
"duplicateCodes": "Duplikovat kódy",
"noDuplicates": "✨ Žádné duplikáty",
"youveNoDuplicateCodesThatCanBeCleared": "Nemáte žádné duplicitní kódy k odstranění",
"deduplicateCodes": "Deduplikovat kódy",
"deselectAll": "Zrušit výběr všech položek",
"selectAll": "Vybrat vše",
"deleteDuplicates": "Odstranit duplikáty",
"plainHTML": "Prosté HTML"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Use recovery key",
"incorrectPasswordTitle": "Incorrect password",
"welcomeBack": "Welcome back!",
"emailAlreadyRegistered": "Email already registered.",
"emailNotRegistered": "Email not registered.",
"madeWithLoveAtPrefix": "made with ❤️ at ",
"supportDevs": "Subscribe to <bold-green>ente</bold-green> to support us",
"supportDiscount": "Use coupon code \"AUTH\" to get 10% off first year",

View File

@@ -6,11 +6,11 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Sécurisez vos codes A2F",
"onBoardingBody": "Sauvegarder vos codes A2F",
"onBoardingGetStarted": "Premiers pas",
"setupFirstAccount": "Configurez votre premier compte",
"importScanQrCode": "Scannez un QR Code",
"qrCode": "Code QR",
"qrCode": "QR Code",
"importEnterSetupKey": "Saisir une clé de configuration",
"importAccountPageTitle": "Saisir les détails du compte",
"secretCanNotBeEmpty": "La clé secrète ne peut pas être vide",
@@ -20,6 +20,7 @@
"codeIssuerHint": "Émetteur",
"codeSecretKeyHint": "Clé secrète",
"secret": "Confidentiel",
"all": "Tout",
"notes": "Notes",
"notesLengthLimit": "Les notes peuvent contenir au maximum {count} caractères",
"@notesLengthLimit": {
@@ -87,6 +88,8 @@
"useRecoveryKey": "Utiliser la clé de récupération",
"incorrectPasswordTitle": "Mot de passe incorrect",
"welcomeBack": "Bon retour parmi nous !",
"emailAlreadyRegistered": "E-mail déjà enregistré.",
"emailNotRegistered": "E-mail non enregistré.",
"madeWithLoveAtPrefix": "fait avec ❤️ à ",
"supportDevs": "Abonnez-vous à <bold-green>ente</bold-green> pour nous soutenir",
"supportDiscount": "Utilisez le code coupon \"AUTH\" pour obtenir 10% de réduction sur la première année",
@@ -155,6 +158,7 @@
"twoFactorAuthTitle": "Authentification à deux facteurs",
"passkeyAuthTitle": "Vérification du code d'accès",
"verifyPasskey": "Vérifier le code d'accès",
"loginWithTOTP": "Se connecter avec un code TOTP",
"recoverAccount": "Récupérer un compte",
"enterRecoveryKeyHint": "Saisissez votre clé de récupération",
"recover": "Restaurer",
@@ -256,6 +260,10 @@
"areYouSureYouWantToLogout": "Êtes-vous sûr de vouloir vous déconnecter ?",
"yesLogout": "Oui, se déconnecter",
"exit": "Quitter",
"theme": "Thème",
"lightTheme": "Clair",
"darkTheme": "Sombre",
"systemTheme": "Système",
"verifyingRecoveryKey": "Vérification de la clé de récupération...",
"recoveryKeyVerified": "Clé de récupération vérifiée",
"recoveryKeySuccessBody": "Parfait ! Votre clé de récupération est valide. Merci pour la vérification.\n\nN'oubliez pas de garder cette clé de récupération en lieu sûr.",
@@ -326,6 +334,10 @@
}
}
},
"manualSort": "Personnaliser",
"editOrder": "Modifier la commande",
"mostFrequentlyUsed": "Utilisé fréquemment",
"mostRecentlyUsed": "Utilisé récemment",
"activeSessions": "Sessions actives",
"somethingWentWrongPleaseTryAgain": "Quelque chose s'est mal passé, veuillez recommencer",
"thisWillLogYouOutOfThisDevice": "Cela vous déconnectera de cet appareil !",
@@ -445,6 +457,9 @@
"customEndpoint": "Connecté à {endpoint}",
"pinText": "Épingler",
"unpinText": "Désépingler",
"pinnedCodeMessage": "{code} épinglé",
"unpinnedCodeMessage": "{code} désépinglé",
"pinned": "Épinglé",
"tags": "Tags",
"createNewTag": "Créer un nouveau tag",
"tag": "Tag",
@@ -470,12 +485,24 @@
"setNewPassword": "Définir un nouveau mot de passe",
"deviceLock": "Verrouillage de l'appareil",
"hideContent": "Masquer le contenu",
"hideContentDescriptionAndroid": "Masque le contenu de l'application sur le menu et désactive les captures d'écran",
"hideContentDescriptioniOS": "Masque le contenu de l'application sur le menu",
"autoLockFeatureDescription": "Délai après lequel l'application se verrouille une fois qu'elle a été mise en arrière-plan",
"appLockDescription": "Choisissez entre l'écran de verrouillage par défaut de votre appareil et un écran de verrouillage par code PIN ou mot de passe personnalisé.",
"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é.",
"appLockNotEnabled": "Verrouillage d'application désactivé",
"appLockNotEnabledDescription": "Activez le verrouillage d'application dans Sécurité > Verrouillage d'application",
"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."
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données.",
"duplicateCodes": "Codes dupliqués",
"noDuplicates": "✨ Pas de doublons",
"youveNoDuplicateCodesThatCanBeCleared": "Vous n'avez aucun code en doublon pouvant être supprimé",
"deduplicateCodes": "Codes dédupliqués",
"deselectAll": "Tout désélectionner",
"selectAll": "Tout sélectionner",
"deleteDuplicates": "Supprimer les doublons",
"plainHTML": "HTML Pur"
}

View File

@@ -1 +1,508 @@
{}
{
"account": "Fiók",
"unlock": "Feloldás",
"recoveryKey": "Visszaállítási kulcs",
"counterAppBarTitle": "Számláló",
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Biztonsági mentés készítése a 2FA kódokról",
"onBoardingGetStarted": "Kezdjünk bele",
"setupFirstAccount": "Állítsd be az első fiókodat",
"importScanQrCode": "QR kód beolvasása",
"qrCode": "QR kód",
"importEnterSetupKey": "Adjon meg egy beállítási kulcsot",
"importAccountPageTitle": "Adja meg a fiók adatait",
"secretCanNotBeEmpty": "A titkos kulcs nem lehet üres",
"bothIssuerAndAccountCanNotBeEmpty": "A kibocsátó és a fiók mezője nem lehet üres",
"incorrectDetails": "Helytelen adatok",
"pleaseVerifyDetails": "Kérjük, ellenőrizd az adataid, majd próbáld meg újra",
"codeIssuerHint": "Kibocsátó",
"codeSecretKeyHint": "Titkos (Secret) kulcs",
"secret": "Titkos kód",
"all": "Minden",
"notes": "Megjegyzések",
"notesLengthLimit": "A megjegyzés {count} karakter hosszú lehet",
"@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": "Felhasználói Fiók (you@domain.com)",
"codeTagHint": "Címke",
"accountKeyType": "Kulcs típusa",
"sessionExpired": "A munkamenet lejárt",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Kérjük, jelentkezzen be újra",
"loggingOut": "Kijelentkezés...",
"timeBasedKeyType": "Idő alapú (TOTP)",
"counterBasedKeyType": "Számláló alappú (HOTP)",
"saveAction": "Mentés",
"nextTotpTitle": "következő",
"deleteCodeTitle": "Kódok Törlése?",
"deleteCodeMessage": "Biztos, hogy véglegesen törli a kódot? Ez nem vonható vissza.",
"trashCode": "Lomtárba helyezi?",
"trashCodeMessage": "Biztos, hogy lomtárba helyezi a kódot a(z) {account} fiókhoz?",
"trash": "Szemetes",
"viewLogsAction": "Naplók megtekintése",
"sendLogsDescription": "Naplókat küld, hogy segítsen nekünk a probléma elhárításában. Bár óvintézkedéseket teszünk annak biztosítására, hogy az érzékeny adatok ne kerüljenek naplózásra, javasoljuk, hogy tekintse meg ezeket a naplókat, mielőtt megosztaná őket.",
"preparingLogsTitle": "Naplófájlok előkészítése...",
"emailLogsTitle": "Naplófájl küldése emailben",
"emailLogsMessage": "Külje el a naplófájlt a(z) {email} címre",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "E-mail cím másolása",
"exportLogsAction": "Naplófájlok exportálása",
"reportABug": "Hiba bejelentése",
"crashAndErrorReporting": "Összeomlás és hiba jelentése",
"reportBug": "Hibajelentés",
"emailUsMessage": "Kérjük küldjön email üzenetet nekünk a következő email címre: {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Lépj kapcsolatba az Ügyfélszolgálattal",
"rateUsOnStore": "Értékelj minket a következőn: {storeName}",
"blog": "Blog",
"merchandise": "Áru",
"verifyPassword": "Jelszó megerősítése",
"pleaseWait": "Kérem várjon...",
"generatingEncryptionKeysTitle": "Titkosítási kulcs generálása...",
"recreatePassword": "Jelszó újra létrehozása",
"recreatePasswordMessage": "A jelenlegi eszköz nem elég erős a jelszavának ellenőrzéséhez, de újra tudjuk úgy generálni, hogy az minden eszközzel működjön.\n\nKérjük, jelentkezzen be helyreállítási kulcsával, és állítsa be újra jelszavát (ha szeretné, újra használhatja ugyanazt).",
"useRecoveryKey": "Helyreállítási kulcs használata",
"incorrectPasswordTitle": "Érvénytelen jelszó",
"welcomeBack": "Köszöntjük ismét!",
"emailAlreadyRegistered": "Ez az e-mai cím már regisztrálva van.",
"emailNotRegistered": "Ez az e-mail cím nincs regisztrálva.",
"madeWithLoveAtPrefix": "Készült ❤️ - ",
"supportDevs": "Iratkozz fel az <bold-green>ente</bold-green> csatornára",
"supportDiscount": "Használd az \"AUTH\" kupon kódot, hogy 10% kedvezményben részesülj az első évben",
"changeEmail": "E-mail cím módosítása",
"changePassword": "Jelszó módosítása",
"data": "Adat",
"importCodes": "Kódok importálása",
"importTypePlainText": "Egyszerű szöveg",
"importTypeEnteEncrypted": "Ente titkosított exportálás",
"passwordForDecryptingExport": "Jelszó az exportált fájl titkosításához",
"passwordEmptyError": "A jelszó nem lehet üres",
"importFromApp": "Kódok imporátálása {appName} alkalmazásból",
"importGoogleAuthGuide": "Exportálja fiókjait a Google Hitelesítőből QR kód segítségével a „Kódok átvitele” lehetőség segítségével. Ezután egy másik eszközzel olvassa be a QR kódot.\n\nTipp: Laptopja webkamerája segítségével lefényképezheti a QR kódot.",
"importSelectJsonFile": "JSON fájl kiválasztása",
"importSelectAppExport": "Válassza ki az {appName} exportfájlt",
"importEnteEncGuide": "Titkosított JSON export-fájl kiválasztása ",
"importRaivoGuide": "Használja az \"OTP-k exportálása tömörített archívumba\" opciót a Raivo beállításaiban.\n\nCsomagolja ki a zip fájlt, és importálja a JSON fájlt.",
"importBitwardenGuide": "Használja a Bitwarden eszközök \"Export Vault\" opcióját és importálja a titkosítatlan JSON fájlt.",
"importAegisGuide": "Használja az Aegis beállításaiban található \"Export the vault\" opciót.\n\nHa a vault titkosított, akkor meg kell adnia a vault jelszavát a tároló visszafejtéséhez.",
"import2FasGuide": "Használja a \"Beállítások->Biztonsági mentés - Exportálás\" opciót a 2FAS-ban.\n\nHa a biztonsági másolat titkosított, akkor meg kell adnia a jelszót a biztonsági másolat visszafejtéséhez",
"importLastpassGuide": "Használja a Lastpass Authenticator beállításaiban található \"Fiókok átvitele\" opciót, és nyomja meg a \"Fiókok exportálása fájlba\" gombot. Importálja a letöltött JSON-t.",
"exportCodes": "Kódok exportálása",
"importLabel": "Importálás",
"importInstruction": "Kérjük, válasszon egy fájlt, amely tartalmazza a kódok listáját a következő formátumban",
"importCodeDelimiterInfo": "A kódokat vesszővel vagy új sorral lehet elválasztani",
"selectFile": "Fájl kiválasztása",
"emailVerificationToggle": "E-mail cím ellenőrzése",
"emailVerificationEnableWarning": "Annak elkerülése érdekében, hogy kizárja magát fiókjából, az e-mail-ellenőrzés engedélyezése előtt mindenképpen tárolja e-mailje 2FA másolatát az Ente Auth-on kívül.",
"authToChangeEmailVerificationSetting": "Kérjük, hitelesítse magát az e-mail ellenőrzés módosításához",
"authenticateGeneric": "Kérjük hitelesítsen",
"authToViewYourRecoveryKey": "A visszaállítási kulcsok megtekintéséhez hitelesítse magát",
"authToChangeYourEmail": "Kérjük jelentkezzen be, hogy megváltoztathassa e-mail címét",
"authToChangeYourPassword": "Kérjük jelentkezzen be, hogy megváltoztathassa jelszavát",
"authToViewSecrets": "A titkos kulcsok megtekintéséhez hitelesítse magát",
"authToInitiateSignIn": "Kérjük jelentkezzen be, hogy biztonsági mentést hozhasson létre.",
"ok": "OK",
"cancel": "Mégse",
"yes": "Igen",
"no": "Nem",
"email": "E-mail",
"support": "Segítség",
"general": "Általános",
"settings": "Beállítások",
"copied": "Másolva!",
"pleaseTryAgain": "Kérjük, próbálja meg újra",
"existingUser": "Meglévő felhasználó",
"newUser": "Új Ente felhasználó",
"delete": "Törlés",
"enterYourPasswordHint": "Adja meg a jelszavát",
"forgotPassword": "Elfelejtett jelszó",
"oops": "Hoppá",
"suggestFeatures": "Funkció ajánlása",
"faq": "GY. I. K.",
"somethingWentWrongMessage": "Hiba történt. Kérjük, próbálkozzon újra",
"leaveFamily": "Családi előfizetés elhagyása",
"leaveFamilyMessage": "Biztosan elhagyja a családi előfizetést?",
"inFamilyPlanMessage": "Családi előfizetés!",
"hintForMobile": "Hosszú nyomvatartással a kód szerkeszthető vagy törölhető",
"hintForDesktop": "Jobb egérgomb kattintással a kód szerkeszthető vagy törölhető",
"scan": "Beolvasás",
"scanACode": "QR kód beolvasása",
"verify": "Hitelesítés",
"verifyEmail": "E-mail cím megerősítése",
"enterCodeHint": "Írja be a 6 számjegyű kódot a hitelesítő alkalmazásból",
"lostDeviceTitle": "Elveszett a készüléked?",
"twoFactorAuthTitle": "Kétlépcsős hitelesítés (2FA)",
"passkeyAuthTitle": "Álkulcs megerősítése",
"verifyPasskey": "Erősítse meg az álkulcsot",
"loginWithTOTP": "Bejelentkezés TOTP-vel",
"recoverAccount": "Fiók visszaállítása",
"enterRecoveryKeyHint": "Visszaállító kód megadása",
"recover": "Visszaállít",
"contactSupportViaEmailMessage": "Kürjük küldjön egy e-mailt a fiók regisztrálásakor megadott címről a következőre címre: {email}",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Érvénytelen QR-kód",
"noRecoveryKeyTitle": "Nincs helyreállítási kulcs?",
"enterEmailHint": "Adja meg az e-mail címét",
"invalidEmailTitle": "Érvénytelen e-mail cím",
"invalidEmailMessage": "Kérjük, adjon meg egy érvényes e-mail címet.",
"deleteAccount": "Fiók törlése",
"deleteAccountQuery": "Szomorúan tapasztaljuk. Problémába ütköztél?",
"yesSendFeedbackAction": "Igen, visszajelzés küldése",
"noDeleteAccountAction": "Fiók végleges törlése",
"initiateAccountDeleteTitle": "Kérjük, hitelesítse magát a fiók törlésének kezdeményezéséhez",
"sendEmail": "E-mail küldése",
"createNewAccount": "Új fiók létrehozása",
"weakStrength": "Gyenge",
"strongStrength": "Erős",
"moderateStrength": "Mérsékelt",
"confirmPassword": "Jelszó megerősítése",
"close": "Bezárás",
"oopsSomethingWentWrong": "Hoppá! Valami hiba történt.",
"selectLanguage": "Nyelv kiválasztása",
"language": "Nyelv",
"social": "Közösségi",
"security": "Biztonság",
"lockscreen": "Záróképernyő",
"authToChangeLockscreenSetting": "A zárképernyő beállításainak módosításához hitelesítsen",
"deviceLockEnablePreSteps": "Az eszközzár engedélyezéséhez állítsa be az eszköz jelszavát vagy a zárképernyőt a rendszerbeállításokban.",
"viewActiveSessions": "Aktív munkamenetek megtekintése",
"authToViewYourActiveSessions": "Az aktív munkamenetek megtekintéséhez hitelesítse magát",
"searchHint": "Keresés...",
"search": "Keresés",
"sorryUnableToGenCode": "Elnézést a kód generálása nem sikerült következőhöz: {issuerName}",
"noResult": "Nincs eredmény",
"addCode": "Kód hozzáadása",
"scanAQrCode": "QR kód beolvasása",
"enterDetailsManually": "Írd be az adatokat",
"edit": "Szerkesztés",
"share": "Megosztás",
"shareCodes": "Kódok megosztása",
"shareCodesDuration": "Válassza ki a kódok megosztásának időtartamát.",
"restore": "Visszaállítás",
"copiedToClipboard": "Másolva vágólapra",
"copiedNextToClipboard": "A kód a vágólapra másolva",
"error": "Hiba",
"recoveryKeyCopiedToClipboard": "A helyreállítási kulcs a vágólapra másolva",
"recoveryKeyOnForgotPassword": "Ha elfelejti jelszavát, csak ezzel a kulccsal tudja visszaállítani adatait.",
"recoveryKeySaveDescription": "Ezt a kulcsot nem tároljuk, kérjük, őrizze meg ezt a 24 szavas kulcsot egy biztonságos helyen.",
"doThisLater": "Később",
"saveKey": "Mentés",
"save": "Mentés",
"send": "Küldés",
"saveOrSendDescription": "El szeretné menteni ezt a tárhelyére (alapértelmezés szerint a Letöltések mappába), vagy elküldi más alkalmazásoknak?",
"saveOnlyDescription": "El szeretné menteni ezt a tárhelyére (alapértelmezés szerint a Letöltések mappába)?",
"back": "Vissza",
"createAccount": "Jelszó erőssége:",
"passwordStrength": "Jelszó erőssége: {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": "Jelszó",
"signUpTerms": "Elfogadom az <u-terms>szolgáltatási feltételeket</u-terms> és az <u-policy>adatvédelmi irányelveket</u-policy>",
"privacyPolicyTitle": "Adatvédelmi irányelvek",
"termsOfServicesTitle": "Használati feltételek",
"encryption": "Titkosítás",
"setPasswordTitle": "Jelszó beállítás",
"changePasswordTitle": "Jelszó módosítás",
"resetPasswordTitle": "Jelszó visszaállítás",
"encryptionKeys": "Titkosító kulcsok",
"passwordWarning": "Ezt a jelszót nem tároljuk, így ha elfelejti, <underline>nem tudjuk visszafejteni adatait</underline>",
"enterPasswordToEncrypt": "Adjon meg egy jelszót, amellyel titkosíthatjuk adatait",
"enterNewPasswordToEncrypt": "Adjon meg egy új jelszót, amellyel titkosíthatjuk adatait",
"passwordChangedSuccessfully": "A jelszó sikeresen meg lett változtatva",
"generatingEncryptionKeys": "Titkosító kulcsok generálása...",
"continueLabel": "Folytatás",
"insecureDevice": "Nem biztonságos eszköz",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Sajnáljuk, nem tudtunk biztonságos kulcsokat generálni ezen az eszközön.\n\nkérjük, regisztráljon egy másik eszközről.",
"howItWorks": "Hogyan működik",
"ackPasswordLostWarning": "Tudomásul veszem, hogy ha elveszítem a jelszavamat, elveszíthetem az adataimat, mivel adataim <underline>végponttól végpontig titkosítva vannak</underline>.",
"loginTerms": "A bejelentkezés gombra kattintva elfogadom az <u-terms>szolgáltatási feltételeket</u-terms> és az <u-policy>adatvédelmi irányelveket</u-policy>",
"logInLabel": "Bejelentkezés",
"logout": "Kijelentkezés",
"areYouSureYouWantToLogout": "Biztos benne, hogy kijelentkezik?",
"yesLogout": "Igen, kijelentkezés",
"exit": "Kilépés",
"theme": "Kinézet",
"lightTheme": "Világos",
"darkTheme": "Sötét",
"systemTheme": "Rendszer",
"verifyingRecoveryKey": "Helyreállítási kulcs ellenőrzése...",
"recoveryKeyVerified": "A helyreállítási kulcs ellenőrizve",
"recoveryKeySuccessBody": "Nagyszerű! A helyreállítási kulcs érvényes. Köszönjük az igazolást.\n\nNe felejtsen el biztonsági másolatot készíteni helyreállítási kulcsáról.",
"invalidRecoveryKey": "A megadott helyreállítási kulcs érvénytelen. Kérjük, győződjön meg róla, hogy 24 szót tartalmaz, és ellenőrizze mindegyik helyesírását.\n\nHa régebbi helyreállítási kódot adott meg, győződjön meg arról, hogy az 64 karakter hosszú, és ellenőrizze mindegyiket.",
"recreatePasswordTitle": "Új jelszó létrehozása",
"recreatePasswordBody": "A jelenlegi eszköz nem elég erős a jelszavának ellenőrzéséhez, de újra tudjuk úgy generálni, hogy az minden eszközzel működjön.\n\nKérjük, jelentkezzen be helyreállítási kulcsával, és állítsa be újra jelszavát (ha szeretné, újra használhatja ugyanazt).",
"invalidKey": "Érvénytelen kulcs",
"tryAgain": "Próbáld újra",
"viewRecoveryKey": "Helyreállítási kulcs megtekintése",
"confirmRecoveryKey": "Helyreállítási kulcs megerősítése",
"recoveryKeyVerifyReason": "A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa fényképeit, ha elfelejti jelszavát. A helyreállítási kulcsot a Beállítások > Fiók menüpontban találhatja meg.\n\nKérjük, írja be ide helyreállítási kulcsát annak ellenőrzéséhez, hogy megfelelően mentette-e el.",
"confirmYourRecoveryKey": "Erősítse meg helyreállítási kulcsát",
"confirm": "Megerősítés",
"emailYourLogs": "E-mailben küldje el naplóit",
"pleaseSendTheLogsTo": "Kérjük, küldje el a naplókat erre az e-mail címre\n{toEmail}",
"copyEmailAddress": "E-mail cím másolása",
"exportLogs": "Naplófájlok exportálása",
"enterYourRecoveryKey": "Adja meg helyreállítási kulcsát",
"tempErrorContactSupportIfPersists": "Úgy tűnik, valami hiba történt. Kérjük, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon ügyfélszolgálatunkhoz.",
"networkHostLookUpErr": "Nem lehet csatlakozni az Ente-hez. Kérjük, ellenőrizze a hálózati beállításokat, és ha a hiba továbbra is fennáll, forduljon az ügyfélszolgálathoz.",
"networkConnectionRefusedErr": "Nem lehet csatlakozni az Ente-hez, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon az ügyfélszolgálathoz.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Úgy tűnik, valami hiba történt. Kérjük, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon ügyfélszolgálatunkhoz.",
"about": "Rólunk",
"weAreOpenSource": "Nyílt forráskódúak vagyunk!",
"privacy": "Adatvédelem",
"terms": "Feltételek",
"checkForUpdates": "Frissítések ellenőrzése",
"checkStatus": "Állapot ellenőrzése",
"downloadUpdate": "Letöltés",
"criticalUpdateAvailable": "Kritikus frissítés elérhető",
"updateAvailable": "Elérhető frissítés",
"update": "Frissítés",
"checking": "Ellenőrzés...",
"youAreOnTheLatestVersion": "Ön a legújabb verziót használja",
"warning": "Figyelmeztetés",
"exportWarningDesc": "Az exportált fájl bizalmas információkat tartalmaz. Kérjük, tárolja ezt biztonságosan.",
"iUnderStand": "Megértettem",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "A kódok exportálásához hitelesítse magát",
"importSuccessTitle": "Jaj!",
"importSuccessDesc": "{count} kódot importált!",
"@importSuccessDesc": {
"placeholders": {
"count": {
"description": "The number of codes imported",
"type": "int",
"example": "1"
}
}
},
"sorry": "Bocsánat",
"importFailureDesc": "Nem sikerült elemezni a kiválasztott fájlt.\nKérjük, írjon a support@ente.io címre, ha segítségre van szüksége!",
"pendingSyncs": "Figyelmeztetés",
"pendingSyncsWarningBody": "Néhány kódról nem készült biztonsági másolat.\n\nKérjük, győződjön meg arról, hogy van biztonsági másolata ezekről a kódokról, mielőtt kijelentkezik.",
"checkInboxAndSpamFolder": "Kérjük, ellenőrizze beérkező leveleit (és spam mappát) az ellenőrzés befejezéséhez",
"tapToEnterCode": "Koppintson a kód beírásához",
"resendEmail": "E-mail újraküldése",
"weHaveSendEmailTo": "E-mailt küldtünk a következő címre: <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"
}
}
},
"manualSort": "Egyéni",
"editOrder": "Sorrend módosítása",
"mostFrequentlyUsed": "Gyakran használt",
"mostRecentlyUsed": "Legutóbb használt",
"activeSessions": "Aktív munkamenetek",
"somethingWentWrongPleaseTryAgain": "Hiba történt. Kérjük, próbálkozz újra",
"thisWillLogYouOutOfThisDevice": "Ezzel kijelentkezik erről az eszközről!",
"thisWillLogYouOutOfTheFollowingDevice": "Ezzel kijelentkezik a következő eszközről:",
"terminateSession": "Megszakítja a munkamenetet?",
"terminate": "Befejezés",
"thisDevice": "Ez az eszköz",
"toResetVerifyEmail": "Jelszava visszaállításához először igazolja e-mail-címét.",
"thisEmailIsAlreadyInUse": "Ez az e-mail már használatban van",
"verificationFailedPleaseTryAgain": "Az ellenőrzés sikertelen, próbálja újra",
"yourVerificationCodeHasExpired": "Ez az ellenőrző kód lejárt",
"incorrectCode": "Helytelen kód",
"sorryTheCodeYouveEnteredIsIncorrect": "Sajnáljuk, a megadott kód helytelen",
"emailChangedTo": "Az e-mail cím módosítva erre: {newEmail}",
"authenticationFailedPleaseTryAgain": "A hitelesítés sikertelen, próbálja újra",
"authenticationSuccessful": "Sikeres hitelesítés!",
"twofactorAuthenticationSuccessfullyReset": "A kétfaktoros hitelesítés visszaállítása sikeres",
"incorrectRecoveryKey": "Helytelen helyreállítási kulcs",
"theRecoveryKeyYouEnteredIsIncorrect": "A megadott helyreállítási kulcs helytelen",
"enterPassword": "Adja meg a jelszót",
"selectExportFormat": "Válasszon exportálási formátumot",
"exportDialogDesc": "A titkosított exportálást az Ön által választott jelszó védi.",
"encrypted": "Titkosított",
"plainText": "Egyszerű szöveg",
"passwordToEncryptExport": "Jelszó az export titkosításához",
"export": "Exportálás",
"useOffline": "Használja biztonsági mentés nélkül",
"signInToBackup": "Jelentkezzen be a kódok biztonsági mentéséhez",
"singIn": "Jelentkezzen be",
"sigInBackupReminder": "Kérjük, exportálja a kódjait, hogy biztosan rendelkezzen biztonsági másolattal, amelyből visszaállíthatja.",
"offlineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Kérjük, készítsen manuális biztonsági másolatot a kódok biztonsága érdekében.",
"showLargeIcons": "Nagy ikonok megjelenítése",
"compactMode": "Kompakt mód",
"shouldHideCode": "Kódok elrejtése",
"doubleTapToViewHiddenCode": "A kód megtekintéséhez koppintson duplán egy bejegyzésre",
"focusOnSearchBar": "A keresésre fókuszálás az alkalmazás indításakor",
"confirmUpdatingkey": "Biztosan frissíteni szeretné a titkos kulcsot?",
"minimizeAppOnCopy": "Alkalmazás kicsinyítése másoláskor",
"editCodeAuthMessage": "Hitelesítés a kód szerkesztéséhez",
"deleteCodeAuthMessage": "Hitelesítés a kód törléséhez",
"showQRAuthMessage": "Hitelesítés a QR kód megjelenítéséhez",
"confirmAccountDeleteTitle": "Fiók törlésének megerősítése",
"confirmAccountDeleteMessage": "",
"androidBiometricHint": "Személyazonosság ellenőrzése",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Nem felismerhető. Próbáld újra.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Sikeres",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Mégse",
"@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": "Hitelesítés szükséges",
"@androidSignInTitle": {
"description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters."
},
"androidBiometricRequiredTitle": "Biometria szükséges",
"@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": "Az eszköz hitelesítő adatai szükségesek",
"@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": "Az eszköz hitelesítő adatai szükségesek",
"@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": "Beállítások megnyitása",
"@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 biometrikus hitelesítés nincs beállítva az eszközön. A biometrikus hitelesítés hozzáadásához lépjen a 'Beállítások > Biztonság' menüpontra.",
"@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 biometrikus hitelesítés ki van kapcsolva. Az engedélyezéséhez zárja le és oldja fel a képernyőt.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "A biometrikus hitelesítés nincs beállítva az eszközön. Kérjük, engedélyezze telefonon a Touch ID-t vagy a Face ID-t.",
"@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": "Nincs internet kapcsolat",
"pleaseCheckYourInternetConnectionAndTryAgain": "Kérjük, ellenőrizze az internetkapcsolatát, és próbálja meg újra.",
"signOutFromOtherDevices": "Jelentkezzen ki más eszközökről",
"signOutOtherBody": "Ha úgy gondolja, hogy valaki ismeri jelszavát, kényszerítheti a fiókját használó összes többi eszközt a kijelentkezésre.",
"signOutOtherDevices": "Jelentkezzen ki a többi eszközről",
"doNotSignOut": "Ne jelentkezzen ki",
"hearUsWhereTitle": "Honnan hallottál Ente-ről? (opcionális)",
"hearUsExplanation": "Nem követjük nyomon az alkalmazástelepítéseket. Segítene, ha elmondaná, hol talált ránk!",
"recoveryKeySaved": "A helyreállítási kulcs a Letöltések mappába mentve!",
"waitingForBrowserRequest": "Várakozás a böngészőkérésre...",
"waitingForVerification": "Várakozás az ellenőrzésre...",
"passkey": "Passkey",
"passKeyPendingVerification": "Az ellenőrzés még függőben van",
"loginSessionExpired": "Lejárt a munkamenet",
"loginSessionExpiredDetails": "A munkameneted lejárt. Kérem lépjen be újra.",
"developerSettingsWarning": "Biztos benne, hogy módosítani szeretné a fejlesztői beállításokat?",
"developerSettings": "Fejlesztői beállítások",
"serverEndpoint": "Szerver végpont",
"invalidEndpoint": "Érvénytelen végpont",
"invalidEndpointMessage": "Sajnáljuk, a megadott végpont érvénytelen. Adjon meg egy érvényes végpontot, és próbálja újra.",
"endpointUpdatedMessage": "A végpont sikeresen frissítve",
"customEndpoint": "Csatlakozva a következőhöz: {endpoint}",
"pinText": "Rögzítés",
"unpinText": "Rögzítés feloldása",
"pinnedCodeMessage": "A {code} rögzítve",
"unpinnedCodeMessage": "A {code} rögzítése feloldva",
"pinned": "Kitűzött",
"tags": "Címkék",
"createNewTag": "Új címke létrehozása",
"tag": "Címke",
"create": "Létrehozás",
"editTag": "Címke szerkesztése",
"deleteTagTitle": "Címke törlése?",
"deleteTagMessage": "Biztosan törli ezt a címkét? Ez a művelet visszafordíthatatlan.",
"somethingWentWrongParsingCode": "Nem tudtunk elemezni {x} kódot.",
"updateNotAvailable": "Nem érhető el frissítés",
"viewRawCodes": "Nyers kódok megtekintése",
"rawCodes": "Nyers kód",
"rawCodeData": "Nyers kód adatok",
"appLock": "Alkalmazások zárolása",
"noSystemLockFound": "Nem található rendszerzár",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Az alkalmazászár engedélyezéséhez állítsa be az eszköz jelszavát vagy a képernyőzárat a rendszerbeállításokban.",
"autoLock": "Automatikus lezárás",
"immediately": "Azonnal",
"reEnterPassword": "Írja be újra a jelszót",
"reEnterPin": "Írja be újra a PIN-kódot",
"next": "Következő",
"tooManyIncorrectAttempts": "Túl sok helytelen próbálkozás",
"tapToUnlock": "Koppintson a feloldáshoz",
"setNewPassword": "Új jelszó beállítása",
"deviceLock": "Eszköz lezárás",
"hideContent": "Tartalom elrejtése",
"hideContentDescriptionAndroid": "Elrejti az alkalmazás tartalmát az alkalmazásváltóban, és letiltja a képernyőképeket",
"hideContentDescriptioniOS": "Elrejti az alkalmazás tartalmát az alkalmazásváltóban",
"autoLockFeatureDescription": "Az az idő, amely elteltével az alkalmazás zárolásra kerül, miután a háttérbe került",
"appLockDescription": "Válasszon az eszköz alapértelmezett zárolási képernyője és a PIN-kóddal vagy jelszóval rendelkező egyéni zárolási képernyő között.",
"pinLock": "PIN feloldás",
"enterPin": "PIN kód megadása",
"setNewPin": "Új PIN kód beállítása",
"importFailureDescNew": "Nem sikerült elemezni a kiválasztott fájlt.",
"appLockNotEnabled": "Az alkalmazászár nincs engedélyezve",
"appLockNotEnabledDescription": "A passkey megtekintéséhez kérjük, hitelesítse magát",
"authToViewPasskey": "A jelszó megtekintéséhez kérjük, hitelesítse magát",
"appLockOfflineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Ha elfelejti az alkalmazászárat, akkor nem férhet hozzá adataihoz.",
"duplicateCodes": "Ismétlődő kódok",
"noDuplicates": "✨Nincs ismétlődés",
"youveNoDuplicateCodesThatCanBeCleared": "Nincsenek ismétlődő kódjai, amelyeket törölni lehetne",
"deduplicateCodes": "Ismétlődő kódok",
"deselectAll": "Összes kijelölés megszüntetése",
"selectAll": "Összes kijelölése",
"deleteDuplicates": "Ismétlődések törlése",
"plainHTML": "Sima HTML kód"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Utilizza un codice di recupero",
"incorrectPasswordTitle": "Password sbagliata",
"welcomeBack": "Bentornato!",
"emailAlreadyRegistered": "Email già registrata.",
"emailNotRegistered": "Email non registrata.",
"madeWithLoveAtPrefix": "realizzato con ❤️ a ",
"supportDevs": "Iscriviti a <bold-green>ente</bold-green> per supportare questo progetto.",
"supportDiscount": "Utilizzare il codice coupon \"AUTH\" per ottenere il 10% di sconto al primo anno",

View File

@@ -12,7 +12,7 @@
"importScanQrCode": "QR 코드 스캔하기",
"qrCode": "QR 코드",
"importEnterSetupKey": "설정 키 입력",
"importAccountPageTitle": "계정 상세 정보 입력",
"importAccountPageTitle": "계정 상세정보 입력",
"secretCanNotBeEmpty": "비밀 키는 비워둘 수 없습니다",
"bothIssuerAndAccountCanNotBeEmpty": "발행인과 계정을 모두 비워둘 수 없습니다",
"incorrectDetails": "세부 정보가 잘못 됨",
@@ -22,7 +22,7 @@
"secret": "비밀",
"all": "모든 항목",
"notes": "메모",
"notesLengthLimit": "메모는 최대 {count}자까지 적을 수 있습니다",
"notesLengthLimit": "메모는 최대 {count} 자까지 적을 수 있습니다",
"@notesLengthLimit": {
"description": "Text to indicate the maximum number of characters allowed for notes",
"placeholders": {
@@ -36,7 +36,7 @@
"codeAccountHint": "계정 (you@domain.com)",
"codeTagHint": "태그",
"accountKeyType": "키 종류",
"sessionExpired": "세션 만료",
"sessionExpired": "세션 만료",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
@@ -52,10 +52,10 @@
"trashCodeMessage": "정말로 {account} 의 코드를 삭제할까요?",
"trash": "휴지통",
"viewLogsAction": "로그 확인",
"sendLogsDescription": "이 로그를 전송하면 문제 해결을 위한 디버에 도움이 됩니다. 민감한 정보가 로그에 기록되지 않도록 주의를 기울이고 있지만, 공유하기 전에 해당 로그를 직접 확인하시기를 권장합니다.",
"sendLogsDescription": "이 로그를 전송하면 문제 해결을 위한 디버에 도움이 됩니다. 민감한 정보가 로그에 기록되지 않도록 주의를 기울이고 있지만, 공유하기 전에 해당 로그를 직접 확인하시기를 권장합니다.",
"preparingLogsTitle": "로그를 준비하는 중...",
"emailLogsTitle": "이메일 로그",
"emailLogsMessage": "{email} 로 로그를 보내주세요",
"emailLogsMessage": "{email} 쪽으로 로그를 보내주세요",
"@emailLogsMessage": {
"placeholders": {
"email": {
@@ -83,12 +83,14 @@
"verifyPassword": "비밀번호 확인",
"pleaseWait": "잠시만 기다려주세요...",
"generatingEncryptionKeysTitle": "암호화 키를 생성하는 중...",
"recreatePassword": "비밀번호 생성",
"recreatePassword": "비밀번호 다시 생성",
"recreatePasswordMessage": "현재 기기는 비밀번호를 확인할 수 있을 만큼 강력하지 않으므로, 모든 기기에서 작동하는 방식으로 비밀번호를 한 번 더 생성해야 합니다. \n\n복구 키를 사용하여 로그인하고 비밀번호를 다시 생성해 주세요. (원하는 경우 동일한 비밀번호를 다시 사용할 수 있습니다)",
"useRecoveryKey": "복구 키 사용",
"incorrectPasswordTitle": "올바르지 않은 비밀번호",
"welcomeBack": "돌아오신 것을 환영합니다!",
"madeWithLoveAtPrefix": "❤️을 담아 만들었습니다 ",
"emailAlreadyRegistered": "이미 등록된 이메일입니다.",
"emailNotRegistered": "등록되지 않은 이메일입니다.",
"madeWithLoveAtPrefix": "❤️을 담아 만들었습니다 ",
"supportDevs": "<bold-green>ente</bold-green>를 구독하고 저희를 지원해주세요",
"supportDiscount": "쿠폰 코드 \"AUTH\"를 사용하고 첫 해 10% 할인 혜택을 받으세요",
"changeEmail": "이메일 변경",
@@ -97,18 +99,18 @@
"importCodes": "코드 가져오기",
"importTypePlainText": "일반 텍스트",
"importTypeEnteEncrypted": "Ente로 암호화된 내보내기",
"passwordForDecryptingExport": "복호화 비밀번호",
"passwordForDecryptingExport": "복호화시 이용할 비밀번호",
"passwordEmptyError": "비밀번호는 비어있을 수 없습니다",
"importFromApp": "{appName}로부터 코드 불러오기",
"importGoogleAuthGuide": "Google 인증기에서 \"계정 이전\" 옵션을 선택해 생성된 QR 코드를 이용해 계정을 옮길 수 있습니다. 그 다음, 다른 디바이스를 이용하여 QR 코드를 스캔해주세요.\n\n힌트: 웹캠을 이용해 QR 코드를 촬영할 수 있습니다.",
"importGoogleAuthGuide": "Google Authenticator에서 \"계정 이전\" 옵션을 선택해 생성된 QR 코드를 이용해 계정을 옮길 수 있습니다. 그 다음, 다른 기기를 이용하여 QR 코드를 촬영해주세요.\n\n힌트: 컴퓨터의 카메라를 이용해 QR 코드를 촬영할 수 있습니다.",
"importSelectJsonFile": "JSON 파일 선택",
"importSelectAppExport": "{appName}의 내보낸 파일 선택하기",
"importSelectAppExport": "{appName} 의 내보낸 파일 선택하기",
"importEnteEncGuide": "Ente에서 내보낸 암호화된 JSON 파일 선택하기",
"importRaivoGuide": "Raivo의 설정에서 \"Zip 파일로 OTP 내보내기\"를 이용해주세요.\n\nZip 파일의 압축을 풀고 JSON 파일을 가져오세요.",
"importBitwardenGuide": "Bitwarden의 도구에서 \"보관함 내보내기\"를 선택하여 암호화되지 않은 JSON 파일을 불러오세요.",
"importAegisGuide": "Aegis의 설정에서 \"보관함 내보내기\"를 이용하세요.\n\n보관함이 암호화된 경우, 보관함의 복호화를 위해 보관함 비밀번호를 입력해야 할 수도 있습니다.",
"import2FasGuide": "2FAS의 옵션에서 \"설정 -> 백업 -> 내보내기\"를 이용하세요.\n\n백업이 암호화되었다면, 백업의 복호화를 위해 암호를 입력해야 할 수도 있습니다.",
"importLastpassGuide": "Lastpass 인증기의 설정에서 \"계정 이전하기\" 옵션 중 \"파일로 계정 내보내기\"를 이용하세요. 다운로드 된 JSON 파일을 불러오세요.",
"importLastpassGuide": "Lastpass Authenticator의 설정에서 \"계정 이전하기\" 옵션 중 \"파일로 계정 내보내기\"를 이용하세요. 다운로드 된 JSON 파일을 불러오세요.",
"exportCodes": "코드 내보내기",
"importLabel": "불러오기",
"importInstruction": "다음의 포맷에 맞춰 여러분의 코드가 들어있는 파일을 선택해주세요",
@@ -116,13 +118,13 @@
"selectFile": "파일 선택",
"emailVerificationToggle": "이메일 검증",
"emailVerificationEnableWarning": "계정이 잠겨 손을 쓸 수 없는 상황에 대비하여, 이메일을 검증하기 전 메일로 전송된 Ente Auth의 2차 인증을 별도로 보관해두세요.",
"authToChangeEmailVerificationSetting": "이메일 검증을 변경하시려면 인증절차를 거쳐주세요",
"authenticateGeneric": "인증절차를 거쳐주세요",
"authToViewYourRecoveryKey": "당신의 복구 키를 확인하려면 인증절차를 거쳐주세요",
"authToChangeYourEmail": "이메일을 변경하려면 인증절차를 거쳐주세요",
"authToChangeYourPassword": "암호를 변경하려면 인증절차를 거쳐주세요",
"authToViewSecrets": "비밀 부분을 확인하려면 인증절차를 거쳐주세요",
"authToInitiateSignIn": "백업을 위해 로그인 상태를 초기화하려면 인증절차를 거쳐주세요",
"authToChangeEmailVerificationSetting": "이메일 검증을 변경하시려면 인증 절차를 거쳐주세요",
"authenticateGeneric": "인증 절차를 거쳐주세요",
"authToViewYourRecoveryKey": "당신의 복구 키를 확인하려면 인증 절차를 거쳐주세요",
"authToChangeYourEmail": "이메일을 변경하려면 인증 절차를 거쳐주세요",
"authToChangeYourPassword": "암호를 변경하려면 인증 절차를 거쳐주세요",
"authToViewSecrets": "비밀 부분을 확인하려면 인증 절차를 거쳐주세요",
"authToInitiateSignIn": "백업을 위해 로그인 상태를 초기화하려면 인증 절차를 거쳐주세요",
"ok": "확인",
"cancel": "취소",
"yes": "네",
@@ -142,16 +144,16 @@
"suggestFeatures": "기능 제안",
"faq": "FAQ",
"somethingWentWrongMessage": "뭔가 잘못된 것 같습니다, 다시 시도해주세요",
"leaveFamily": "패밀리에서 떠나기",
"leaveFamily": "가족 그룹 떠나기",
"leaveFamilyMessage": "가족 요금제에서 떠나시겠습니까?",
"inFamilyPlanMessage": "가족 요금제에 가입하셨습니다!",
"hintForMobile": "수정이나 삭제를 원하시면 코드를 길게 눌러주세요.",
"hintForDesktop": "수정이나 삭제를 원하시면 코드를 클릭해주세요.",
"scan": "스캔하기",
"scanACode": "코드 스캔하기",
"hintForDesktop": "수정이나 삭제를 원하시면 코드를 오른 클릭 해주세요.",
"scan": "촬영",
"scanACode": "코드 촬영",
"verify": "인증",
"verifyEmail": "이메일 인증하기",
"enterCodeHint": "인증기에 적힌 여섯 자리 코드를 입력해주세요",
"enterCodeHint": "Authenticator에 적힌 6 자리 코드를 입력해주세요",
"lostDeviceTitle": "기기를 잃어버리셨나요?",
"twoFactorAuthTitle": "2단계 인증",
"passkeyAuthTitle": "패스키 검증",
@@ -160,7 +162,7 @@
"recoverAccount": "계정 복구",
"enterRecoveryKeyHint": "복구 키를 입력하세요",
"recover": "복구",
"contactSupportViaEmailMessage": "당신이 등록한 이메일 주소에서 {email}로 메일 한 통을 보내주세요",
"contactSupportViaEmailMessage": "당신이 등록한 이메일 주소에서 {email} 쪽으로 메일 한 통을 보내주세요",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
@@ -177,7 +179,7 @@
"deleteAccountQuery": "떠나신다니 아쉽습니다. 뭔가 문제가 있으셨나요?",
"yesSendFeedbackAction": "네, 피드백을 보냅니다",
"noDeleteAccountAction": "아니오, 계정을 지웁니다",
"initiateAccountDeleteTitle": "계정 삭제 절차를 시작하려면 인증절차를 거쳐주세요",
"initiateAccountDeleteTitle": "계정 삭제 절차를 시작하려면 인증 절차를 거쳐주세요",
"sendEmail": "이메일 보내기",
"createNewAccount": "새 계정 만들기",
"weakStrength": "약함",
@@ -188,19 +190,19 @@
"oopsSomethingWentWrong": "이런, 뭔가 꼬였습니다.",
"selectLanguage": "언어 선택",
"language": "언어",
"social": "소셜",
"social": "Social",
"security": "보안",
"lockscreen": "화면 잠금",
"authToChangeLockscreenSetting": "화면 잠금 설정을 변경하시려면 인증절차를 거쳐주세요",
"authToChangeLockscreenSetting": "화면 잠금 설정을 변경하시려면 인증 절차를 거쳐주세요",
"deviceLockEnablePreSteps": "기기 잠금을 활성화하시려면, 기기의 암호를 만들거나 시스템 설정에서 화면 잠금을 설정해주세요.",
"viewActiveSessions": "활성화된 세션 확인하기",
"authToViewYourActiveSessions": "활성화된 세션을 확인하시려면 인증절차를 거쳐주세요",
"viewActiveSessions": "활성화된 Session 확인하기",
"authToViewYourActiveSessions": "활성화된 Session을 확인하시려면 인증 절차를 거쳐주세요",
"searchHint": "검색...",
"search": "찾기",
"sorryUnableToGenCode": "죄송합니다, {issuerName}의 코드를 생성할 수 없습니다",
"sorryUnableToGenCode": "죄송합니다, {issuerName} 의 코드를 생성할 수 없습니다",
"noResult": "결과 없음",
"addCode": "코드 추가하기",
"scanAQrCode": "QR 코드 스캔하기",
"scanAQrCode": "QR 코드 촬영",
"enterDetailsManually": "속성을 수동으로 입력하기",
"edit": "수정",
"share": "공유",
@@ -212,12 +214,12 @@
"error": "에러",
"recoveryKeyCopiedToClipboard": "클립보드에 복구 키 복사 됨",
"recoveryKeyOnForgotPassword": "암호를 잊어버린 경우, 데이터를 복구하려면 이 키를 이용하는 방법 뿐입니다.",
"recoveryKeySaveDescription": "저희는 이 키를 보관하지 않사오니, 여기에 있는 24 단어로 구성된 키를 안전하게 보관해주세요.",
"recoveryKeySaveDescription": "저희는 이 키를 보관하지 않니, 여기에 있는 24 단어로 구성된 키를 안전하게 보관해주세요.",
"doThisLater": "나중에 하기",
"saveKey": "키 저장하기",
"save": "저장",
"send": "보내기",
"saveOrSendDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까, 아니면 다른 으로 전송하시겠습니까?",
"saveOrSendDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까, 아니면 다른 App으로 전송하시겠습니까?",
"saveOnlyDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까?",
"back": "뒤로 가기",
"createAccount": "계정 만들기",
@@ -235,14 +237,14 @@
},
"password": "암호",
"signUpTerms": "나는 <u-terms>사용자 약관</u-terms>과 <u-policy>개인정보 취급방침</u-policy>에 동의합니다.",
"privacyPolicyTitle": "개인정보 취급방침",
"privacyPolicyTitle": "개인정보 취급 방침",
"termsOfServicesTitle": "약관",
"encryption": "암호화",
"setPasswordTitle": "암호 지정",
"changePasswordTitle": "암호 변경",
"resetPasswordTitle": "암호 초기화",
"encryptionKeys": "암호화 키",
"passwordWarning": "저희는 이 암호를 저장하지 않사오니, 만약 잊어버리시게 되면, <underline>데이터를 복호화해드릴 수 없습니다</underline>",
"passwordWarning": "저희는 이 암호를 저장하지 않니, 만약 잊어버리시게 되면, <underline>데이터를 복호화 해드릴 수 없습니다</underline>",
"enterPasswordToEncrypt": "데이터 암호화를 위한 암호 입력",
"enterNewPasswordToEncrypt": "데이터 암호화를 위한 새로운 암호 입력",
"passwordChangedSuccessfully": "암호가 성공적으로 변경되었습니다",
@@ -251,7 +253,7 @@
"insecureDevice": "보안이 허술한 기기",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "죄송합니다, 이 기기에서 보안 키를 생성할 수 없습니다.\n\n다른 기기에서 계정을 생성해주세요.",
"howItWorks": "작동 원리",
"ackPasswordLostWarning": "나는 암호를 분실한 경우, 데이터가 <underline>종단간 암호화</underline>되어있기에 데이터를 손실할 수 있음을 이해합니다.",
"ackPasswordLostWarning": "나는 암호를 분실한 경우, 데이터가 <underline>종단 간 암호화</underline>되어있기에 데이터를 손실할 수 있음을 이해합니다.",
"loginTerms": "로그인을 누름으로써, 나는 <u-terms>사용자 약관</u-terms>과 <u-policy>개인정보 취급방침</u-policy>에 동의합니다.",
"logInLabel": "로그인",
"logout": "로그아웃",
@@ -260,14 +262,14 @@
"exit": "나가기",
"theme": "테마",
"lightTheme": "라이트",
"darkTheme": "다크",
"darkTheme": "어두운",
"systemTheme": "시스템",
"verifyingRecoveryKey": "복구 키 확인 중...",
"recoveryKeyVerified": "복구 키 확인 됨",
"recoveryKeySuccessBody": "좋습니다! 복구 키가 확인되었습니다. 확인 절차를 거쳐주셔서 감사합니다.\n\n잊지 마시고 꼭 복구 키를 안전하게 보관해주세요.",
"invalidRecoveryKey": "입력하신 복구 키가 유효하지 않습니다. 24 단어가 입력됐는지, 그리고 철자가 모두 정확한지 확인해주세요.\n\n구형 복구 코드를 입력하신 경우, 64 자가 맞는지, 그리고 문자가 각각 맞는지 확인해주세요.",
"recreatePasswordTitle": "암호 생성",
"recreatePasswordBody": "현재 사용 중인 기기는 암호를 확인하기에 적합하지 않으나, 모든 기기에서 작동하는 방식으로 비밀번호를 생성할 수 있습니다.\n\n복구 키를 사용하여 로그인하고 암호를 생성해주세요. (원하시면 현재 사용 중인 암호와 같은 암호를 사용하실 수 있습니다.)",
"recreatePasswordTitle": "암호 다시 생성",
"recreatePasswordBody": "현재 사용 중인 기기는 암호를 확인하기에 적합하지 않으나, 모든 기기에서 작동하는 방식으로 비밀번호를 다시 생성할 수 있습니다.\n\n복구 키를 사용하여 로그인하고 암호를 다시 생성해주세요. (원하시면 현재 사용 중인 암호와 같은 암호를 다시 사용하실 수 있습니다.)",
"invalidKey": "유효하지 않은 키",
"tryAgain": "다시 시도해주세요",
"viewRecoveryKey": "복구 키 보기",
@@ -276,7 +278,7 @@
"confirmYourRecoveryKey": "복구 키 확인",
"confirm": "확인",
"emailYourLogs": "로그를 이메일로 보내기",
"pleaseSendTheLogsTo": "이 로그를 {toEmail}으로 보내주세요",
"pleaseSendTheLogsTo": "이 로그를 {toEmail}으로 보내주세요",
"copyEmailAddress": "이메일 주소 복사",
"exportLogs": "로그 내보내기",
"enterYourRecoveryKey": "복구 키를 입력하세요",
@@ -302,8 +304,8 @@
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "코드를 내보내려면 인증절차를 거쳐주세요",
"importSuccessTitle": "호!",
"authToExportCodes": "코드를 내보내려면 인증 절차를 거쳐주세요",
"importSuccessTitle": "호!",
"importSuccessDesc": "코드 {count} 개를 내보내셨습니다!",
"@importSuccessDesc": {
"placeholders": {
@@ -317,11 +319,11 @@
"sorry": "죄송합니다",
"importFailureDesc": "선택하신 파일을 분석할 수 없습니다.\n도움이 필요하시다면 support@ente.io로 문의해주세요.",
"pendingSyncs": "경고",
"pendingSyncsWarningBody": "코드 몇 개가 백업되어있지 않습니다.\n\n로그아웃하기 전 해당 코드들을 백업하셨는지 확인해주세요.",
"checkInboxAndSpamFolder": "검증을 위해 메일 보관함 (또는 스팸함) 확인해주세요",
"pendingSyncsWarningBody": "코드 몇 개가 백업 되어있지 않습니다.\n\n로그아웃하기 전 해당 코드들을 백업하셨는지 확인해주세요.",
"checkInboxAndSpamFolder": "검증을 위해 메일 보관함 (또는 스팸 메일 보관함) 확인해주세요",
"tapToEnterCode": "눌러서 코드 입력하기",
"resendEmail": "이메일 다시 보내기",
"weHaveSendEmailTo": "<green>{email}</green>으로 메일을 보냈습니다",
"weHaveSendEmailTo": "<green>{email}</green>으로 메일을 보냈습니다",
"@weHaveSendEmailTo": {
"description": "Text to indicate that we have sent a mail to the user",
"placeholders": {
@@ -336,7 +338,7 @@
"editOrder": "순서 변경",
"mostFrequentlyUsed": "자주 사용됨",
"mostRecentlyUsed": "최근에 사용됨",
"activeSessions": "활성화된 세션",
"activeSessions": "활성화된 Session",
"somethingWentWrongPleaseTryAgain": "뭔가 잘못됐습니다, 다시 시도해주세요",
"thisWillLogYouOutOfThisDevice": "이 작업을 하시면 기기에서 로그아웃하게 됩니다!",
"thisWillLogYouOutOfTheFollowingDevice": "이 작업을 하시면 다음 기기에서 로그아웃하게 됩니다:",
@@ -475,26 +477,26 @@
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "어플 잠금을 활성화하시려면, 기기의 암호를 만들거나 시스템 설정에서 화면 잠금을 설정해주세요.",
"autoLock": "자동 잠금",
"immediately": "즉시",
"reEnterPassword": "암호 입력",
"reEnterPin": "핀 입력",
"reEnterPassword": "암호 다시 입력",
"reEnterPin": "핀 다시 입력",
"next": "다음",
"tooManyIncorrectAttempts": "잘못된 시도 횟수가 너무 많습니다",
"tapToUnlock": "잠금을 해제하려면 누르세요",
"setNewPassword": "새 비밀번호 설정",
"deviceLock": "기기 잠금",
"hideContent": "내용 숨기기",
"hideContentDescriptionAndroid": "어플 전환 화면에서 어플의 내용을 숨기고 스크린샷 촬영을 막습니다",
"hideContentDescriptioniOS": "어플 전환 화면에서 어플의 내용을 숨깁니다",
"autoLockFeatureDescription": "어플이 백그라운드로 넘어가고 잠금 처리되기까지의 시간",
"hideContentDescriptionAndroid": "App 전환 화면에서 App의 내용을 숨기고 Screenshot 촬영을 막습니다",
"hideContentDescriptioniOS": "App 전환 화면에서 App의 내용을 숨깁니다",
"autoLockFeatureDescription": "Background로 App 넘어가고 잠기기까지 걸리는 시간",
"appLockDescription": "기본 잠금 화면이나, PIN 번호나 암호를 사용한 사용자 설정 잠금 화면 중에 선택하세요.",
"pinLock": "PIN 잠금",
"pinLock": "Pin 잠금",
"enterPin": "PIN 번호 입력",
"setNewPin": "새 PIN 번호 설정",
"importFailureDescNew": "선택하신 파일을 분석할 수 없습니다.",
"appLockNotEnabled": "어플 잠금 설정되지 않음",
"appLockNotEnabledDescription": "설정 > 어플 잠금에서 어플 잠금을 활성화해주세요",
"authToViewPasskey": "패스키를 보려면 인증절차를 거쳐주세요",
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. 어플 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
"appLockNotEnabled": "App 잠금 설정되지 않음",
"appLockNotEnabledDescription": "설정 > App 잠금에서 App 잠금을 활성화해주세요",
"authToViewPasskey": "패스키를 보려면 인증 절차를 거쳐주세요",
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. App 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
"duplicateCodes": "중복된 코드",
"noDuplicates": "✨ 중복 없음",
"youveNoDuplicateCodesThatCanBeCleared": "지울 수 있는 중복 코드가 없습니다",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Naudoti atkūrimo raktą",
"incorrectPasswordTitle": "Neteisingas slaptažodis.",
"welcomeBack": "Sveiki sugrįžę!",
"emailAlreadyRegistered": "El. paštas jau užregistruotas.",
"emailNotRegistered": "El. paštas neregistruotas.",
"madeWithLoveAtPrefix": "sukurta su ❤️ vietoje ",
"supportDevs": "Prenumeruokite <bold-green>„ente“</bold-green>, kad palaikytumėte mus",
"supportDiscount": "Naudokite kupono kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Herstelsleutel gebruiken",
"incorrectPasswordTitle": "Onjuist wachtwoord",
"welcomeBack": "Welkom terug!",
"emailAlreadyRegistered": "E-mail is al geregistreerd.",
"emailNotRegistered": "E-mail niet geregistreerd.",
"madeWithLoveAtPrefix": "met ❤️ gemaakt door",
"supportDevs": "Abonneer u op <bold-green>ente</bold-green> om ons te steunen",
"supportDiscount": "Gebruik couponcode \"AUTH\" om het eerste jaar 10% korting te krijgen",
@@ -501,5 +503,6 @@
"deduplicateCodes": "Dubbele codes",
"deselectAll": "Alles deselecteren",
"selectAll": "Alles selecteren",
"deleteDuplicates": "Dubbelen verwijderen"
"deleteDuplicates": "Dubbelen verwijderen",
"plainHTML": "Alleen HTML"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Użyj kodu odzyskiwania",
"incorrectPasswordTitle": "Nieprawidłowe hasło",
"welcomeBack": "Witaj ponownie!",
"emailAlreadyRegistered": "Adres e-mail jest już zarejestrowany.",
"emailNotRegistered": "Adres e-mail nie jest zarejestrowany.",
"madeWithLoveAtPrefix": "zrobione z ❤️ w ",
"supportDevs": "Subskrybuj <bold-green>ente</bold-green> aby wesprzeć ten projekt.",
"supportDiscount": "Użyj kodu rabatowego \"AUTH\", aby otrzymać 10% rabatu na pierwszy rok",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Usar chave de recuperação",
"incorrectPasswordTitle": "Senha incorreta",
"welcomeBack": "Bem-vindo(a) de volta!",
"emailAlreadyRegistered": "E-mail já registrado.",
"emailNotRegistered": "E-mail não registrado.",
"madeWithLoveAtPrefix": "feito com ❤️ em ",
"supportDevs": "Inscreva-se no <bold-green>Ente</bold-green> para apoiar-nos",
"supportDiscount": "Use o cupom \"AUTH\" para obter 10% de desconto no primeiro ano",

View File

@@ -77,10 +77,13 @@
"importSelectJsonFile": "Selectează fișierul JSON",
"importSelectAppExport": "Selectează fișierul de export din {appName}",
"importEnteEncGuide": "Selectează fișierul criptat JSON exportat din Bențe",
"importRaivoGuide": "Utilizați opțiunea \"Export OTPs to Zip archive\" în Setările Raivo.\n\nExtrageți fișierul zip și importați fișierul JSON.",
"importBitwardenGuide": "Utilizați opțiunea \"Export vault\" din Bitwarden Tools și importați fișierul JSON necriptat.",
"exportCodes": "Exportă coduri",
"importLabel": "Importă",
"selectFile": "Selectează fișier",
"emailVerificationToggle": "Verificarea adresei de e-mail",
"emailVerificationEnableWarning": "Pentru a evita blocarea contului tău, asigurați-vă că stocați o copie a e-mailului 2FA în afara Ente Auth înainte de a permite verificarea e-mail-ului.",
"authToChangeEmailVerificationSetting": "Te rugăm să te autentifici pentru a schimba verificarea prin e-mail",
"authToChangeYourEmail": "Te rugăm să te autentifici pentru a-ți schimba adresa de e-mail",
"ok": "Ok",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Använd återställningsnyckel",
"incorrectPasswordTitle": "Felaktigt lösenord",
"welcomeBack": "Välkommen tillbaka!",
"emailAlreadyRegistered": "E-postadress redan registrerad.",
"emailNotRegistered": "E-postadress ej registrerad.",
"madeWithLoveAtPrefix": "gjord med ❤️ av ",
"supportDevs": "Prenumerera på <bold-green>ente</bold-green> för att stödja oss",
"supportDiscount": "Använd kupongkoden \"AUTH\" för att få 10% rabatt första året",
@@ -106,6 +108,9 @@
"importEnteEncGuide": "Välj den krypterade JSON-filen som exporteras från Ente",
"importRaivoGuide": "Använd alternativet \"Exportera OTPs till zip-arkiv\" i Raivos inställningar.\n\nExtrahera zip-filen och importera JSON-filen.",
"importBitwardenGuide": "Använd alternativet \"Exportera valv\" inom Bitwarden Tools och importera den okrypterade JSON-filen.",
"importAegisGuide": "Använd alternativet \"Exportera valvet\" i Aegis inställningar.\n\nOm ditt valv är krypterat måste du ange valvlösenordet för att dekryptera valvet.",
"import2FasGuide": "Använd alternativet \"Inställningar->Säkerhetskopiera -Exportera\" i 2FAS.\n\nOm din säkerhetskopia är krypterad måste du ange lösenordet för att dekryptera säkerhetskopian.",
"importLastpassGuide": "Använd alternativet \"Överför konton\" i LastPass Authenticators inställningar och tryck på \"Exportera konton till fil\". Importera JSON-filen som laddas ner.",
"exportCodes": "Exportera koder",
"importLabel": "Importera",
"importInstruction": "Vänligen välj en fil som innehåller en lista över dina koder i följande format",
@@ -151,7 +156,7 @@
"enterCodeHint": "Ange den 6-siffriga koden från din autentiseringsapp",
"lostDeviceTitle": "Förlorad enhet?",
"twoFactorAuthTitle": "Tvåfaktorsautentisering",
"passkeyAuthTitle": "Lösenordsverifiering",
"passkeyAuthTitle": "Verifiering med inloggningsnyckel",
"verifyPasskey": "Verifiera nyckel",
"loginWithTOTP": "Logga in med TOTP",
"recoverAccount": "Återställ konto",
@@ -189,6 +194,7 @@
"security": "Säkerhet",
"lockscreen": "Låsskärm",
"authToChangeLockscreenSetting": "Vänligen autentisera för att ändra låsskärms inställningar",
"deviceLockEnablePreSteps": "För att aktivera enhetslås, vänligen ställ in enhetens lösenord eller skärmlås i dina systeminställningar.",
"viewActiveSessions": "Visa aktiva sessioner",
"authToViewYourActiveSessions": "Autentisera för att visa dina aktiva sessioner",
"searchHint": "Sök...",
@@ -201,6 +207,7 @@
"edit": "Redigera",
"share": "Dela",
"shareCodes": "Dela koder",
"shareCodesDuration": "Välj den tidsperiod under vilken du vill dela koder.",
"restore": "Återställ",
"copiedToClipboard": "Kopierat till urklipp",
"copiedNextToClipboard": "Kopierade nästa kod till urklipp",
@@ -268,6 +275,7 @@
"confirmYourRecoveryKey": "Bekräfta din återställningsnyckel",
"confirm": "Bekräfta",
"emailYourLogs": "Maila dina loggar",
"pleaseSendTheLogsTo": "Vänligen skicka loggarna till \n{toEmail}",
"copyEmailAddress": "Kopiera e-postadress",
"exportLogs": "Exportera loggar",
"enterYourRecoveryKey": "Ange din återställningsnyckel",
@@ -279,6 +287,7 @@
"checkStatus": "Kontrollera status",
"downloadUpdate": "Ladda ner",
"criticalUpdateAvailable": "Kritisk uppdatering tillgänglig",
"updateAvailable": "Uppdatering tillgänglig",
"update": "Uppdatera",
"checking": "Kontrollerar ...",
"youAreOnTheLatestVersion": "Du är på den senaste versionen",
@@ -301,8 +310,24 @@
},
"sorry": "Tyvärr",
"pendingSyncs": "Varning",
"checkInboxAndSpamFolder": "Vänligen kontrollera din inkorg (och skräppost) för att slutföra verifieringen",
"tapToEnterCode": "Tryck för att ange kod",
"resendEmail": "Skicka e-post igen",
"manualSort": "Anpassad",
"editOrder": "Redigera ordning",
"mostFrequentlyUsed": "Ofta använd",
"mostRecentlyUsed": "Senast använd",
"activeSessions": "Aktiva sessioner",
"thisWillLogYouOutOfThisDevice": "Detta kommer att logga ut dig från den här enheten!",
"terminateSession": "Avsluta session?",
"terminate": "Avsluta",
"thisDevice": "Den här enheten",
"thisEmailIsAlreadyInUse": "Denna e-postadress används redan",
"verificationFailedPleaseTryAgain": "Verifiering misslyckades, vänligen försök igen",
"yourVerificationCodeHasExpired": "Din verifieringskod har upphört att gälla",
"incorrectCode": "Felaktig kod",
"sorryTheCodeYouveEnteredIsIncorrect": "Tyvärr, den kod som du har angett är felaktig",
"authenticationFailedPleaseTryAgain": "Autentisering misslyckades, vänligen försök igen",
"authenticationSuccessful": "Autentisering lyckades!",
"twofactorAuthenticationSuccessfullyReset": "Tvåfaktorsautentisering återställd",
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
@@ -316,7 +341,9 @@
"signInToBackup": "Logga in för att säkerhetskopiera dina koder",
"singIn": "Logga in",
"showLargeIcons": "Visa stora ikoner",
"compactMode": "Kompakt läge",
"shouldHideCode": "Dölj koder",
"focusOnSearchBar": "Fokusera på sök vid appstart",
"minimizeAppOnCopy": "Minimera appen vid kopiering",
"editCodeAuthMessage": "Autentisera för att redigera kod",
"deleteCodeAuthMessage": "Autentisera för att radera kod",
@@ -386,6 +413,7 @@
"pinText": "Fäst",
"unpinText": "Ångra fäst",
"pinnedCodeMessage": "{code} har fästs",
"unpinnedCodeMessage": "{code} har lösgjorts",
"pinned": "Fastmarkerad",
"tags": "Taggar",
"createNewTag": "Skapa ny tagg",
@@ -393,6 +421,7 @@
"create": "Skapa",
"editTag": "Redigera tagg",
"deleteTagTitle": "Radera tagg?",
"somethingWentWrongParsingCode": "Vi kunde inte tolka {x} koder.",
"updateNotAvailable": "Uppdateringen är inte tillgänglig",
"viewRawCodes": "Visa råa koder",
"rawCodes": "Råa koder",
@@ -412,7 +441,20 @@
"hideContent": "Dölj innehåll",
"hideContentDescriptionAndroid": "Döljer appinnehåll i app-växlaren och inaktiverar skärmdumpar",
"hideContentDescriptioniOS": "Döljer appinnehåll i app-växlaren",
"pinLock": "Pinkodslås",
"enterPin": "Ange PIN-kod",
"setNewPin": "Ställ in ny PIN-kod",
"authToViewPasskey": "Autentisera för att visa nyckel"
"importFailureDescNew": "Kunde inte tolka den valda filen.",
"appLockNotEnabled": "Applås ej aktiverat",
"appLockNotEnabledDescription": "Vänligen aktivera applås från Säkerhet > Applås",
"authToViewPasskey": "Autentisera för att visa nyckel",
"appLockOfflineModeWarning": "Du har valt att fortsätta utan säkerhetskopior. Om du glömmer ditt applås, kommer du att bli utelåst från att komma åt dina data.",
"duplicateCodes": "Dubblettkoder",
"noDuplicates": "✨ Inga dubbletter",
"youveNoDuplicateCodesThatCanBeCleared": "Du har inga dubblettkoder som kan rensas bort",
"deduplicateCodes": "Deduplicera koder",
"deselectAll": "Avmarkera alla",
"selectAll": "Markera alla",
"deleteDuplicates": "Radera dubbletter",
"plainHTML": "Ren HTML"
}

View File

@@ -156,6 +156,7 @@
"twoFactorAuthTitle": "İki faktörlü kimlik doğrulama",
"passkeyAuthTitle": "Geçiş anahtarı doğrulaması",
"verifyPasskey": "Geçiş anahtarını doğrula",
"loginWithTOTP": "TOTP ile giriş yap",
"recoverAccount": "Hesap kurtarma",
"enterRecoveryKeyHint": "Kurtarma anahtarınızı girin",
"recover": "Kurtar",
@@ -257,6 +258,10 @@
"areYouSureYouWantToLogout": "Çıkış yapmak istediğinize emin misiniz?",
"yesLogout": "Evet, çıkış yap",
"exit": "Çıkış",
"theme": "Tema",
"lightTheme": "Aydınlık",
"darkTheme": "Karanlık",
"systemTheme": "Sistem",
"verifyingRecoveryKey": "Kurtarma anahtarı doğrulanıyor...",
"recoveryKeyVerified": "Kurtarma anahtarı doğrulandı",
"recoveryKeySuccessBody": "Güzel! Kurtarma anahtarınız geçerli. Doğruladığınız için teşekkürler.\n\nLütfen kurtarma anahtarınızı güvenli bir şekilde yedeklemeyi unutmayın.",
@@ -327,6 +332,9 @@
}
}
},
"manualSort": "Özel",
"mostFrequentlyUsed": "Sık kullanılan",
"mostRecentlyUsed": "Son kullanılan",
"activeSessions": "Aktif oturumlar",
"somethingWentWrongPleaseTryAgain": "Bir şeyler ters gitti, lütfen tekrar deneyin",
"thisWillLogYouOutOfThisDevice": "Bu sizin bu cihazdaki oturumunuzu kapatacaktır!",
@@ -446,6 +454,9 @@
"customEndpoint": "Bağlandı: {endpoint}",
"pinText": "Sabitle",
"unpinText": "Sabitlemeyi kaldır",
"pinnedCodeMessage": "{code} sabitlendi",
"unpinnedCodeMessage": "{code}'un sabitlemesi kaldırıldı",
"pinned": "Sabitlendi",
"tags": "Etiketler",
"createNewTag": "Yeni etiket oluştur",
"tag": "Etiket",
@@ -482,5 +493,13 @@
"appLockNotEnabled": "Uygulama kilidi etkin değil",
"appLockNotEnabledDescription": "Uygulama kilidini Güvenlik -> Uygulama Kilidi üzerinden etkinleştirin",
"authToViewPasskey": "Geçiş anahtarını görmek için lütfen kimliğinizi doğrulayın",
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir."
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir.",
"duplicateCodes": "Yinelenen kodlar",
"noDuplicates": "✨ Yinelenen yok",
"youveNoDuplicateCodesThatCanBeCleared": "Temizlenebilecek yinelenen kodunuz yok",
"deduplicateCodes": "Kodları tekilleştir",
"deselectAll": "Tümünün seçimini kaldır",
"selectAll": "Tümünü seç",
"deleteDuplicates": "Yinelenenleri sil",
"plainHTML": "Sade HTML"
}

View File

@@ -495,7 +495,7 @@
"appLockNotEnabledDescription": "Увімкніть блокування програм від безпеки > Блокування програм",
"authToViewPasskey": "Будь ласка, авторизуйтеся для перегляду ключа доступу",
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано.",
"duplicateCodes": "Дублювати коди",
"duplicateCodes": "Дублікати кодів",
"noDuplicates": "✨ Немає дублікатів",
"youveNoDuplicateCodesThatCanBeCleared": "У вас немає дублікатів кодів, які можна очистити",
"deduplicateCodes": "Дедуплікувати коди",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Dùng khóa khôi phục",
"incorrectPasswordTitle": "Mật khẩu không đúng",
"welcomeBack": "Chào mừng trở lại!",
"emailAlreadyRegistered": "Email đã được đăng kí.",
"emailNotRegistered": "Email chưa được đăng kí.",
"madeWithLoveAtPrefix": "được làm bằng ❤️ tại ",
"supportDevs": "Đăng ký <bold-green>ente</bold-green> để hỗ trợ dự án này.",
"supportDiscount": "Sử dụng mã giảm giá \"AUTH\" để được giảm 10% trong năm đầu tiên",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "使用恢复密钥",
"incorrectPasswordTitle": "密码错误",
"welcomeBack": "欢迎回来!",
"emailAlreadyRegistered": "电子邮件地址已被注册。",
"emailNotRegistered": "电子邮件地址未注册。",
"madeWithLoveAtPrefix": "用❤️制作 ",
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持我们",
"supportDiscount": "使用优惠码“AUTH”可享受首年 10% 折扣",

View File

@@ -8,18 +8,25 @@ const List<Locale> appSupportedLocales = <Locale>[
Locale('ar'),
Locale('bg'),
Locale('ca'),
Locale('cs'),
Locale('de'),
Locale('el'),
Locale('en'),
Locale('es', 'ES'),
Locale('fa'),
Locale('fr'),
Locale('hu'),
Locale('id'),
Locale('it'),
Locale('ja'),
Locale('ko'),
Locale('lt'),
Locale('nl'),
Locale('pl'),
Locale('pt'),
Locale('pt', 'BR'),
Locale('ru'),
Locale('sl'),
Locale('sk'),
Locale('tr'),
Locale('uk'),

View File

@@ -71,6 +71,7 @@ void main() async {
await WindowListenerService.instance.init();
WindowOptions windowOptions = WindowOptions(
size: WindowListenerService.instance.getWindowSize(),
maximumSize: const Size(8192, 8192),
);
await windowManager.waitUntilReadyToShow(windowOptions, () async {
await DirectoryUtils.migrateNamingChanges();
@@ -103,7 +104,12 @@ Future<void> _runInForeground() async {
final savedThemeMode = _themeMode(await AdaptiveTheme.getThemeMode());
return await _runWithLogs(() async {
_logger.info("Starting app in foreground");
await _init(false, via: 'mainMethod');
try {
await _init(false, via: 'mainMethod');
} catch (e, s) {
_logger.severe("Failed to init", e, s);
rethrow;
}
final Locale? locale = await getLocale(noFallback: true);
unawaited(UpdateService.instance.showUpdateNotification());
runApp(
@@ -155,7 +161,7 @@ void _registerWindowsProtocol() {
Future<void> _init(bool bool, {String? via}) async {
_registerWindowsProtocol();
await initCryptoUtil();
await CryptoUtil.init();
await PreferenceService.instance.init();
await CodeStore.instance.init();

View File

@@ -7,7 +7,5 @@ String twoFactorTypeToString(TwoFactorType type) {
return "totp";
case TwoFactorType.passkey:
return "passkey";
default:
return type.name;
}
}

View File

@@ -256,9 +256,9 @@ class Code {
try {
final algorithm =
uri.queryParameters['algorithm'].toString().toLowerCase();
if (algorithm == "sha256") {
if (algorithm == "sha256" || "algorithm.sha256" == algorithm) {
return Algorithm.sha256;
} else if (algorithm == "sha512") {
} else if (algorithm == "sha512" || "algorithm.sha512" == algorithm) {
return Algorithm.sha512;
}
} catch (e) {

View File

@@ -90,8 +90,10 @@ class _OnboardingPageState extends State<OnboardingPage> {
child: SingleChildScrollView(
child: Center(
child: ConstrainedBox(
constraints:
const BoxConstraints.tightFor(height: 800, width: 450),
constraints: BoxConstraints(
minHeight: MediaQuery.of(context).size.height,
maxWidth: 450,
),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 40.0,
@@ -197,6 +199,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
child: Center(
child: Text(
l10n.useOffline,
textAlign: TextAlign.center,
style: body.copyWith(
color: Theme.of(context)
.colorScheme

View File

@@ -318,6 +318,9 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
SizedBox(
width: 400,
child: OutlinedButton(
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 8),
),
onPressed: () async {
if ((_accountController.text.trim().isEmpty &&
_issuerController.text.trim().isEmpty) ||
@@ -361,8 +364,15 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
widget.code?.display.copyWith(tags: selectedTags) ??
CodeDisplay(tags: selectedTags);
display.note = notes;
if (widget.code != null) {
if (widget.code!.issuer != issuer) {
display.iconID = issuer.toLowerCase();
}
if (widget.code!.display.iconID != _customIconID.toLowerCase()) {
display.iconID = _customIconID.toLowerCase();
}
}
display.iconID = _customIconID.toLowerCase();
display.iconSrc =
_iconSrc == IconType.simpleIcon ? 'simpleIcon' : 'customIcon';

View File

@@ -28,7 +28,8 @@ class ViewQrPage extends StatelessWidget {
child: Column(
children: [
QrImageView(
data: code!.rawData,
data: code!.rawData
.replaceAll('algorithm=Algorithm.', 'algorithm='),
eyeStyle: QrEyeStyle(
eyeShape: QrEyeShape.square,
color: Theme.of(context).colorScheme.onSurface,

View File

@@ -38,7 +38,7 @@ class PreferenceService {
CodeSortKey codeSortKey() {
return CodeSortKey
.values[_prefs.getInt("codeSortKey") ?? CodeSortKey.manual.index];
.values[_prefs.getInt("codeSortKey") ?? CodeSortKey.issuerName.index];
}
Future<void> setCodeSortKey(CodeSortKey key) async {

View File

@@ -109,7 +109,24 @@ class UserService {
} on DioException catch (e) {
await dialog.hide();
_logger.info(e);
if (e.response != null && e.response!.statusCode == 403) {
final String? enteErrCode = e.response?.data["code"];
if (enteErrCode != null && enteErrCode == "USER_ALREADY_REGISTERED") {
unawaited(
showErrorDialog(
context,
context.l10n.oops,
context.l10n.emailAlreadyRegistered,
),
);
} else if (enteErrCode != null && enteErrCode == "USER_NOT_REGISTERED") {
unawaited(
showErrorDialog(
context,
context.l10n.oops,
context.l10n.emailNotRegistered,
),
);
} else if (e.response != null && e.response!.statusCode == 403) {
unawaited(
showErrorDialog(
context,
@@ -672,7 +689,7 @@ class UserService {
"${_config.getHttpEndpoint()}/users/srp/create-session",
data: {
"srpUserID": srpAttributes.srpUserID,
"srpA": base64Encode(SRP6Util.encodeBigInt(A!)),
"srpA": base64Encode(SRP6Util.getPadded(A!, 512)),
},
);
final String sessionID = createSessionResponse.data["sessionID"];
@@ -688,7 +705,7 @@ class UserService {
data: {
"sessionID": sessionID,
"srpUserID": srpAttributes.srpUserID,
"srpM1": base64Encode(SRP6Util.encodeBigInt(clientM!)),
"srpM1": base64Encode(SRP6Util.getPadded(clientM!, 32)),
},
);
if (response.statusCode == 200) {

View File

@@ -1,10 +1,15 @@
import 'dart:async';
import 'dart:ui';
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:window_manager/window_manager.dart';
class WindowListenerService {
static const double minWindowHeight = 320.0;
static const double minWindowWidth = 800.0;
static const double maxWindowHeight = 8192.0;
static const double maxWindowWidth = 8192.0;
late SharedPreferences _preferences;
WindowListenerService._privateConstructor();
@@ -17,20 +22,20 @@ class WindowListenerService {
}
Size getWindowSize() {
final double windowWidth = _preferences.getDouble('windowWidth') ?? 450.0;
final double windowHeight = _preferences.getDouble('windowHeight') ?? 800.0;
return Size(windowWidth, windowHeight);
final double windowWidth =
_preferences.getDouble('windowWidth') ?? minWindowWidth;
final double windowHeight =
_preferences.getDouble('windowHeight') ?? minWindowHeight;
final w = windowWidth.clamp(200.0, maxWindowWidth);
final h = windowHeight.clamp(400.0, maxWindowHeight);
return Size(w, h);
}
Future<void> onWindowResize() async {
final width = (await windowManager.getSize()).width;
final height = (await windowManager.getSize()).height;
// Save the window size to shared preferences
await _preferences.setDouble(
'windowWidth',
(await windowManager.getSize()).width,
);
await _preferences.setDouble(
'windowHeight',
(await windowManager.getSize()).height,
);
await _preferences.setDouble('windowWidth', width);
await _preferences.setDouble('windowHeight', height);
}
}

View File

@@ -64,22 +64,6 @@ class CodeStore {
return true;
}
Future<void> updateCodeIndex(Code code) async {
final key = code.generatedID!;
_cacheCodes.remove(key);
int deletedIndex = code.display.position;
_cacheCodes.forEach((key, c) async {
if (c.display.position > deletedIndex) {
Code updatedCode = c.copyWith(
display: c.display.copyWith(position: c.display.position - 1),
);
await addCode(updatedCode);
}
});
}
Future<List<Code>> getAllCodes({
AccountMode? accountMode,
bool sortCodes = true,
@@ -179,7 +163,6 @@ class CodeStore {
Future<void> removeCode(Code code, {AccountMode? accountMode}) async {
final mode = accountMode ?? _authenticatorService.getAccountMode();
await _authenticatorService.deleteEntry(code.generatedID!, mode);
await updateCodeIndex(code);
Bus.instance.fire(CodesUpdatedEvent());
}

View File

@@ -70,6 +70,8 @@ class EnteColorScheme {
final Color gradientButtonBgColor;
final List<Color> gradientButtonBgColors;
bool get isLightTheme => backgroundBase == backgroundBaseLight;
const EnteColorScheme(
this.backgroundBase,
this.backgroundElevated,

View File

@@ -45,6 +45,8 @@ EnteColorScheme getEnteColorScheme(
: Theme.of(context).colorScheme.enteTheme.colorScheme;
}
EnteTextTheme getEnteTextTheme(
BuildContext context, {
bool inverse = false,

View File

@@ -100,7 +100,7 @@ class _CodeWidgetState extends State<CodeWidget> {
@override
Widget build(BuildContext context) {
ignorePin = widget.sortKey == null || widget.sortKey == CodeSortKey.manual;
ignorePin = widget.sortKey != null && widget.sortKey == CodeSortKey.manual;
final colorScheme = getEnteColorScheme(context);
if (isMaskingEnabled != PreferenceService.instance.shouldHideCodes()) {
isMaskingEnabled = PreferenceService.instance.shouldHideCodes();
@@ -645,7 +645,12 @@ class _CodeWidgetState extends State<CodeWidget> {
firstButtonLabel: l10n.delete,
isCritical: true,
firstButtonOnTap: () async {
await CodeStore.instance.removeCode(widget.code);
try {
await CodeStore.instance.removeCode(widget.code);
} catch (e,s) {
logger.severe('Failed to delete code',e,s);
showGenericErrorDialog(context: context, error: e).ignore();
}
},
);
}

View File

@@ -210,7 +210,7 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
Future<void> _onTap() async {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
executionStateNotifier.value == ExecutionState.successful) {return;}
_debouncer.run(
() => Future(
() {
@@ -247,7 +247,7 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
void _onTapDown(details) {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
executionStateNotifier.value == ExecutionState.successful) {return;}
setState(() {
if (widget.pressedColor == null) {
hasPassedGestureCallbacks()
@@ -265,7 +265,7 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
void _onTapUp(details) {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
executionStateNotifier.value == ExecutionState.successful) {return;}
Future.delayed(
const Duration(milliseconds: 100),
() => setState(() {
@@ -276,7 +276,7 @@ class _MenuItemWidgetState extends State<MenuItemWidget> {
void _onCancel() {
if (executionStateNotifier.value == ExecutionState.inProgress ||
executionStateNotifier.value == ExecutionState.successful) return;
executionStateNotifier.value == ExecutionState.successful) {return;}
setState(() {
menuItemColor = widget.menuItemColor;
});

View File

@@ -22,7 +22,10 @@ class HomeEmptyStateWidget extends StatelessWidget {
return SingleChildScrollView(
child: Center(
child: ConstrainedBox(
constraints: const BoxConstraints.tightFor(height: 800, width: 450),
constraints: BoxConstraints(
minHeight: MediaQuery.of(context).size.height,
minWidth: 450,
),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 40.0, horizontal: 40),
child: Column(
@@ -46,7 +49,13 @@ class HomeEmptyStateWidget extends StatelessWidget {
width: 400,
child: OutlinedButton(
onPressed: onScanTap,
child: Text(l10n.importScanQrCode),
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 8),
),
child: Text(
l10n.importScanQrCode,
textAlign: TextAlign.center,
),
),
),
const SizedBox(height: 18),
@@ -54,7 +63,13 @@ class HomeEmptyStateWidget extends StatelessWidget {
width: 400,
child: OutlinedButton(
onPressed: onManuallySetupTap,
child: Text(l10n.importEnterSetupKey),
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 8),
),
child: Text(
l10n.importEnterSetupKey,
textAlign: TextAlign.center,
),
),
),
const SizedBox(height: 54),

View File

@@ -18,6 +18,7 @@ import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/store/code_display_store.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/theme/text_style.dart';
import 'package:ente_auth/ui/account/logout_dialog.dart';
import 'package:ente_auth/ui/code_error_widget.dart';
@@ -35,6 +36,7 @@ import 'package:ente_auth/ui/settings_page.dart';
import 'package:ente_auth/ui/sort_option_menu.dart';
import 'package:ente_auth/ui/tools/app_lock.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/lock_screen_settings.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:ente_auth/utils/totp_util.dart';
import 'package:flutter/foundation.dart';
@@ -88,8 +90,8 @@ class _HomePageState extends State<HomePage> {
@override
void initState() {
super.initState();
_textController.addListener(_applyFilteringAndRefresh);
_codeSortKey = PreferenceService.instance.codeSortKey();
_textController.addListener(_applyFilteringAndRefresh);
_loadCodes();
_streamSubscription = Bus.instance.on<CodesUpdatedEvent>().listen((event) {
_loadCodes();
@@ -269,7 +271,6 @@ class _HomePageState extends State<HomePage> {
);
break;
case CodeSortKey.manual:
default:
codes.sort((a, b) => a.display.position.compareTo(b.display.position));
break;
}
@@ -357,6 +358,8 @@ class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
LockScreenSettings.instance
.setLightMode(getEnteColorScheme(context).isLightTheme);
final l10n = context.l10n;
isCompactMode = PreferenceService.instance.isCompactMode();
@@ -410,55 +413,52 @@ class _HomePageState extends State<HomePage> {
),
centerTitle: PlatformUtil.isDesktop() ? false : true,
actions: <Widget>[
SortCodeMenuWidget(
currentKey: PreferenceService.instance.codeSortKey(),
onSelected: (newOrder) async {
await PreferenceService.instance.setCodeSortKey(newOrder);
if (newOrder == CodeSortKey.manual &&
newOrder == _codeSortKey) {
await navigateToReorderPage(_allCodes!);
}
setState(() {
_codeSortKey = newOrder;
});
if (mounted) {
_applyFilteringAndRefresh();
}
},
),
PlatformUtil.isDesktop()
? IconButton(
icon: const Icon(Icons.lock),
tooltip: l10n.appLock,
onPressed: () async {
await navigateToLockScreen();
},
)
: const SizedBox.shrink(),
const SizedBox(
width: 4,
Padding(
padding: const EdgeInsets.all(8.0),
child: SortCodeMenuWidget(
currentKey: PreferenceService.instance.codeSortKey(),
onSelected: (newOrder) async {
await PreferenceService.instance.setCodeSortKey(newOrder);
if (newOrder == CodeSortKey.manual &&
newOrder == _codeSortKey) {
await navigateToReorderPage(_allCodes!);
}
setState(() {
_codeSortKey = newOrder;
});
if (mounted) {
_applyFilteringAndRefresh();
}
},
),
),
if (PlatformUtil.isDesktop())
IconButton(
icon: const Icon(Icons.lock),
tooltip: l10n.appLock,
padding: const EdgeInsets.all(8.0),
onPressed: () async {
await navigateToLockScreen();
},
),
IconButton(
icon: _showSearchBox
? const Icon(Icons.clear)
: const Icon(Icons.search),
tooltip: l10n.search,
padding: const EdgeInsets.all(8.0),
onPressed: () {
setState(
() {
_showSearchBox = !_showSearchBox;
if (!_showSearchBox) {
_textController.clear();
_searchText = "";
} else {
_searchText = _textController.text;
// Request focus on the search box
searchBoxFocusNode.requestFocus();
}
_applyFilteringAndRefresh();
},
);
setState(() {
_showSearchBox = !_showSearchBox;
if (!_showSearchBox) {
_textController.clear();
_searchText = "";
} else {
_searchText = _textController.text;
searchBoxFocusNode.requestFocus();
}
_applyFilteringAndRefresh();
});
},
),
],
@@ -580,7 +580,7 @@ class _HomePageState extends State<HomePage> {
return ClipRect(
child: CodeWidget(
key: ValueKey('${code.hashCode}_$newIndex'),
key: ValueKey('${code.hashCode}_${newIndex}_$_codeSortKey'),
code,
isCompactMode: isCompactMode,
sortKey: _codeSortKey,
@@ -616,6 +616,7 @@ class _HomePageState extends State<HomePage> {
key: ValueKey('${codeState.hashCode}_$index'),
codeState,
isCompactMode: isCompactMode,
sortKey: _codeSortKey,
);
}),
itemCount: _filteredCodes.length,
@@ -666,16 +667,24 @@ class _HomePageState extends State<HomePage> {
}
return false;
}
int lastScanTime = DateTime.now().millisecondsSinceEpoch - 1000;
void _handleDeeplink(BuildContext context, String? link) {
if (!Configuration.instance.hasConfiguredAccount() || link == null) {
bool isAccountConfigured = Configuration.instance.hasConfiguredAccount();
bool isOfflineModeEnabled = Configuration.instance.hasOptedForOfflineMode() &&
Configuration.instance.getOfflineSecretKey() != null;
if (!(isAccountConfigured || isOfflineModeEnabled) || link == null) {
return;
}
if (DateTime.now().millisecondsSinceEpoch - lastScanTime < 1000) {
_logger.info("Ignoring potential event for same deeplink");
return;
}
lastScanTime = DateTime.now().millisecondsSinceEpoch;
if (mounted && link.toLowerCase().startsWith("otpauth://")) {
try {
final newCode = Code.fromOTPAuthUrl(link);
getNextTotp(newCode);
CodeStore.instance.addCode(newCode);
CodeStore.instance.addCode(newCode, shouldSync: false);
_focusNewCode(newCode);
} catch (e, s) {
showGenericErrorDialog(

View File

@@ -189,7 +189,8 @@ Future<String> _getAuthDataForExport() async {
String data = "";
for (final code in allCodes) {
if (code.hasError) continue;
data += "${code.rawData.replaceAll(',', '%2C')}\n";
data +=
"${code.rawData.replaceAll('algorithm=Algorithm.', 'algorithm=').replaceAll(',', '%2C')}\n";
}
return data;

View File

@@ -8,9 +8,17 @@ import 'package:intl/intl.dart';
import 'package:qr_flutter/qr_flutter.dart';
Future<String> generateQRImageBase64(String data) async {
final qrPainter = QrPainter(
const size = 250.0;
const padding = 20.0;
final qrCode = QrCode.fromData(
data: data,
version: QrVersions.auto,
errorCorrectLevel: QrErrorCorrectLevel.L,
);
final qrPainter = QrPainter.withQr(
qr: qrCode,
gapless: true,
eyeStyle: const QrEyeStyle(
eyeShape: QrEyeShape.square,
color: Colors.black,
@@ -21,12 +29,18 @@ Future<String> generateQRImageBase64(String data) async {
),
);
const size = 250.0;
const totalSize = size + padding * 2;
final recorder = ui.PictureRecorder();
final canvas = Canvas(recorder);
qrPainter.paint(canvas, const Size(size, size));
const paintBounds = Size(size, size);
canvas.translate(padding, padding);
qrPainter.paint(canvas, paintBounds);
final picture = recorder.endRecording();
final img = await picture.toImage(size.toInt(), size.toInt());
final img = await picture.toImage(totalSize.toInt(), totalSize.toInt());
final byteData = await img.toByteData(format: ui.ImageByteFormat.png);
final pngBytes = byteData!.buffer.asUint8List();

View File

@@ -118,10 +118,10 @@ List<Code> parseGoogleAuth(String qrCodeData) {
if (otpParameter.type == MigrationPayload_OtpType.OTP_TYPE_TOTP ||
otpParameter.type == MigrationPayload_OtpType.OTP_TYPE_UNSPECIFIED) {
otpUrl =
'otpauth://totp/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&period=$timer';
'otpauth://totp/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=${algorithm.name}&digits=$digits&period=$timer';
} else if (otpParameter.type == MigrationPayload_OtpType.OTP_TYPE_HOTP) {
otpUrl =
'otpauth://hotp/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
'otpauth://hotp/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=${algorithm.name}&digits=$digits&counter=$counter';
} else {
throw Exception('Invalid OTP type');
}

View File

@@ -5,6 +5,7 @@ import 'dart:typed_data';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/models/code_display.dart';
import 'package:ente_auth/services/authenticator_service.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/ui/common/progress_dialog.dart';
@@ -58,7 +59,7 @@ Future<void> _pick2FasFile(BuildContext context) async {
}
final ProgressDialog progressDialog =
createProgressDialog(context, l10n.pleaseWait);
await progressDialog.show();
try {
String path = result.files.single.path!;
int? count = await _process2FasExportFile(context, path, progressDialog);
@@ -100,6 +101,13 @@ Future<int?> _process2FasExportFile(
);
return null;
}
final groupIdToName = {};
var groups = decodedJson['groups'];
if (groups != null) {
for (var group in groups) {
groupIdToName[group['id']] = group['name'];
}
}
var decodedServices = decodedJson['services'];
// https://github.com/twofas/2fas-android/blob/e97f1a1040eafaed6d5284d54d33403dff215886/data/services/src/main/java/com/twofasapp/data/services/domain/BackupContent.kt#L39
@@ -120,6 +128,7 @@ Future<int?> _process2FasExportFile(
await dialog.hide();
return null;
}
await dialog.show();
final content = decrypt2FasVault(decodedJson, password: password!);
decodedServices = jsonDecode(content);
} catch (e, s) {
@@ -134,6 +143,8 @@ Future<int?> _process2FasExportFile(
}
return null;
}
} else {
await dialog.show();
}
final parsedCodes = [];
for (var item in decodedServices) {
@@ -143,6 +154,7 @@ Future<int?> _process2FasExportFile(
if (issuer == null || (issuer as String).isEmpty) {
issuer = item['name'] ?? '';
}
final String? groupID = item['groupId'];
var algorithm = item['otp']['algorithm'];
var secret = item['secret'];
var timer = item['otp']['period'];
@@ -161,7 +173,13 @@ Future<int?> _process2FasExportFile(
} else {
throw Exception('Invalid OTP type ${kind.toLowerCase()}');
}
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
Code code = Code.fromOTPAuthUrl(otpUrl);
if (groupID != null && groupIdToName.containsKey(groupID)) {
code = code.copyWith(
display: CodeDisplay(tags: [groupIdToName[groupID]]),
);
}
parsedCodes.add(code);
}
for (final code in parsedCodes) {

View File

@@ -128,6 +128,8 @@ class _ItemsWidgetState extends State<ItemsWidget> {
return 'العربية';
case 'ca':
return 'Català';
case 'cs':
return 'Čeština';
case 'en':
return 'English';
case 'bg':
@@ -145,8 +147,14 @@ class _ItemsWidgetState extends State<ItemsWidget> {
return 'Français';
case 'de':
return 'Deutsch';
case 'hu':
return 'Magyar';
case 'id':
return 'Bahasa Indonesia';
case 'it':
return 'Italiano';
case 'lt':
return 'Lietuvių';
case 'nl':
return 'Nederlands';
case 'pl':
@@ -160,6 +168,8 @@ class _ItemsWidgetState extends State<ItemsWidget> {
}
case 'ru':
return 'Русский';
case 'sl':
return 'Slovenščina';
case 'sk':
return 'Slovenčina';
case 'tr':

View File

@@ -24,16 +24,7 @@ class DirectoryUtils {
}
static Future<Directory> getDirectoryForInit() async {
Directory? directory;
if (Platform.isLinux) {
try {
return cacheHome;
} catch (e) {
logger.warning("Failed to get cacheHome: $e");
}
}
directory ??= await getApplicationDocumentsDirectory();
Directory directory = await getApplicationCacheDirectory();
return Directory(p.join(directory.path, "enteauthinit"));
}

View File

@@ -4,6 +4,7 @@ import "dart:typed_data";
import "package:ente_auth/core/configuration.dart";
import "package:ente_auth/utils/platform_util.dart";
import "package:ente_crypto_dart/ente_crypto_dart.dart";
import "package:flutter/material.dart";
import "package:flutter_secure_storage/flutter_secure_storage.dart";
import "package:privacy_screen/privacy_screen.dart";
import "package:shared_preferences/shared_preferences.dart";
@@ -24,6 +25,7 @@ class LockScreenSettings {
static const keyHasMigratedLockScreenChanges =
"ls_has_migrated_lock_screen_changes";
static const keyShowOfflineModeWarning = "ls_show_offline_mode_warning";
static const String kIsLightMode = "is_light_mode";
final List<Duration> autoLockDurations = const [
Duration(milliseconds: 650),
@@ -74,8 +76,15 @@ class LockScreenSettings {
await _preferences.setBool(keyHasMigratedLockScreenChanges, true);
}
Future<void> setLightMode(bool isLightMode) async {
if (isLightMode != (_preferences.getBool(kIsLightMode) ?? true)) {
await _preferences.setBool(kIsLightMode, isLightMode);
}
}
Future<void> setHideAppContent(bool hideContent) async {
if (PlatformUtil.isDesktop()) return;
final bool isLightMode = _preferences.getBool(kIsLightMode) ?? true;
!hideContent
? PrivacyScreen.instance.disable()
: await PrivacyScreen.instance.enable(
@@ -85,7 +94,11 @@ class LockScreenSettings {
androidOptions: const PrivacyAndroidOptions(
enableSecure: true,
),
blurEffect: PrivacyBlurEffect.extraLight,
backgroundColor:
isLightMode ? const Color(0xffffffff) : const Color(0xff000000),
blurEffect: isLightMode
? PrivacyBlurEffect.extraLight
: PrivacyBlurEffect.extraLight,
);
await _preferences.setBool(keyHideAppContent, hideContent);
}

View File

@@ -18,6 +18,7 @@
</screenshot>
</screenshots>
<releases>
<release version="4.2.4" date="2025-01-11" />
<release version="4.0.3" date="2024-10-08" />
</releases>
<provides>

View File

@@ -27,6 +27,8 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- rive_common (0.0.1):
- FlutterMacOS
- screen_retriever (0.0.1):
- FlutterMacOS
- Sentry/HybridSDK (8.36.0)
@@ -82,6 +84,7 @@ DEPENDENCIES:
- local_auth_darwin (from `Flutter/ephemeral/.symlinks/plugins/local_auth_darwin/darwin`)
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- rive_common (from `Flutter/ephemeral/.symlinks/plugins/rive_common/macos`)
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
- sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`)
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
@@ -124,6 +127,8 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
path_provider_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin
rive_common:
:path: Flutter/ephemeral/.symlinks/plugins/rive_common/macos
screen_retriever:
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos
sentry_flutter:
@@ -159,6 +164,7 @@ SPEC CHECKSUMS:
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
rive_common: 9580b9f1f08a8c85006083078e80479edf3db26a
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe

View File

@@ -11,6 +11,6 @@ PRODUCT_NAME = Ente Auth
PRODUCT_BUNDLE_IDENTIFIER = io.ente.auth
// The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2022 io.ente.auth. All rights reserved.
PRODUCT_COPYRIGHT = Copyright © 2025 io.ente.auth. All rights reserved.
DEVELOPMENT_TEAM = 6Z68YJY9Q2

View File

@@ -5,15 +5,15 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: f256b0c0ba6c7577c15e2e4e114755640a875e885099367bf6e012b19314c834
sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab"
url: "https://pub.dev"
source: hosted
version: "72.0.0"
version: "76.0.0"
_macros:
dependency: transitive
description: dart
source: sdk
version: "0.3.2"
version: "0.3.3"
adaptive_theme:
dependency: "direct main"
description:
@@ -26,10 +26,10 @@ packages:
dependency: transitive
description:
name: analyzer
sha256: b652861553cd3990d8ed361f7979dc6d7053a9ac8843fa73820ab68ce5410139
sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e"
url: "https://pub.dev"
source: hosted
version: "6.7.0"
version: "6.11.0"
ansicolor:
dependency: transitive
description:
@@ -250,10 +250,10 @@ packages:
dependency: "direct main"
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
confetti:
dependency: "direct main"
description:
@@ -387,7 +387,7 @@ packages:
description:
path: "."
ref: HEAD
resolved-ref: e2e66ffd03f23bef5e0bb138b5f01b32d8e9b7bb
resolved-ref: f91e1545f8263df127762240c4da54a0c42835b2
url: "https://github.com/ente-io/ente_crypto_dart.git"
source: git
version: "1.0.0"
@@ -434,11 +434,12 @@ packages:
figma_squircle:
dependency: "direct main"
description:
name: figma_squircle
sha256: "790b91a9505e90d246f6efe2fa065ff7fffe658c7b44fe9b5b20c7b0ad3818c0"
url: "https://pub.dev"
source: hosted
version: "0.5.3"
path: "."
ref: HEAD
resolved-ref: "5f1ad5aaccdf31fc398fc141979ea845a0f45383"
url: "https://github.com/Ax0elz/figma_squircle.git"
source: git
version: "0.5.5"
file:
dependency: transitive
description:
@@ -451,10 +452,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "167bb619cdddaa10ef2907609feb8a79c16dfa479d3afaf960f8e223f754bf12"
sha256: c904b4ab56d53385563c7c39d8e9fa9af086f91495dfc48717ad84a42c3cf204
url: "https://pub.dev"
source: hosted
version: "8.1.2"
version: "8.1.7"
file_saver:
dependency: "direct main"
description:
@@ -913,18 +914,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
@@ -993,10 +994,10 @@ packages:
dependency: transitive
description:
name: macros
sha256: "0acaed5d6b7eab89f63350bccd82119e6c602df0f391260d0e32b5e23db79536"
sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656"
url: "https://pub.dev"
source: hosted
version: "0.1.2-main.4"
version: "0.1.3-main.0"
matcher:
dependency: transitive
description:
@@ -1425,7 +1426,7 @@ packages:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
version: "0.0.0"
sodium:
dependency: transitive
description:
@@ -1519,10 +1520,10 @@ packages:
dependency: transitive
description:
name: stack_trace
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
version: "1.12.0"
steam_totp:
dependency: "direct main"
description:
@@ -1559,10 +1560,10 @@ packages:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.0"
styled_text:
dependency: "direct main"
description:
@@ -1591,10 +1592,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.2"
version: "0.7.3"
timezone:
dependency: transitive
description:
@@ -1759,10 +1760,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.2.5"
version: "14.3.0"
watcher:
dependency: transitive
description:

View File

@@ -1,6 +1,7 @@
name: ente_auth
description: ente two-factor authenticator
version: 4.2.3+423
version: 4.3.1+431
publish_to: none
environment:
@@ -31,8 +32,10 @@ dependencies:
expandable: ^5.0.1
expansion_tile_card: ^3.0.0
ffi: ^2.1.0
figma_squircle: ^0.5.3
file_picker: ^8.1.2
figma_squircle:
git:
url: https://github.com/Ax0elz/figma_squircle.git
file_picker: ^8.1.7
# https://github.com/incrediblezayed/file_saver/issues/86
file_saver: ^0.2.11
fixnum: ^1.1.0
@@ -81,7 +84,7 @@ dependencies:
privacy_screen: ^0.0.6
protobuf: ^3.0.0
qr_code_scanner: ^1.0.1
qr_flutter: ^4.1.0
qr_flutter: ^4.1.0
sentry: ^8.7.0
sentry_flutter: ^8.7.0
share_plus: ^10.0.2

View File

@@ -65,7 +65,7 @@ type AlbumFileEntry struct {
func SortAlbumFileEntry(entries []*AlbumFileEntry) {
sort.Slice(entries, func(i, j int) bool {
if entries[i].IsDeleted != entries[j].IsDeleted {
return !entries[i].IsDeleted && entries[j].IsDeleted
return entries[i].IsDeleted && !entries[j].IsDeleted
}
return entries[i].AlbumID < entries[j].AlbumID
})

View File

@@ -12,10 +12,10 @@ on:
description: "Branch (ente-io/ente) to build"
type: string
schedule:
# Run everyday at ~8:00 AM IST (except Sundays).
# Run every weekday at ~8:00 AM IST.
# See: [Note: Run workflow every 24 hours]
#
- cron: "45 2 * * 1-6"
- cron: "45 2 * * 1-5"
push:
# Run when a tag matching the pattern "vd.d.d" is pushed. In particular,
# this excludes the "-beta" tags.

3
desktop/.gitignore vendored
View File

@@ -20,3 +20,6 @@ out
# electron-builder
dist/
# We download it on demand, if needed for the particular OS/arch.
build/magick*

View File

@@ -1,9 +1,13 @@
# CHANGELOG
## v1.7.8 (Unreleased)
## v1.7.9 (Unreleased)
- .
## v1.7.8
- Parse description from image metadata.
## v1.7.7
- Retain JPEG originals even on date modifications.

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