Compare commits

...

1015 Commits

Author SHA1 Message Date
Neeraj Gupta
9e0eb9303f [mob] Start offline mode journey 2025-02-06 11:36:04 +05:30
Neeraj Gupta
e1aee3cfbd temp 2025-02-06 11:36:02 +05:30
Neeraj
eb34372a21 [mob][photos] Extract strings (#4976) 2025-02-06 10:29:23 +05:30
Manav Rathi
27beed354e [web] Use lighter scrim for overlays atop photo viewer (#4978)
\+ continue with the custom title bar prep
2025-02-06 09:23:12 +05:30
Manav Rathi
73bbf39256 tsc fix 2025-02-06 09:16:53 +05:30
Manav Rathi
1a3d665655 Inline 2025-02-06 09:15:27 +05:30
Manav Rathi
02f3afc4cc Use the dialog's loader and error indicator 2025-02-06 09:14:31 +05:30
Manav Rathi
d492a0e695 Fin 2025-02-06 09:09:12 +05:30
Manav Rathi
299363c8c4 Add the customization 2025-02-06 08:58:40 +05:30
Manav Rathi
37774c31d7 Alt path 2025-02-06 08:55:06 +05:30
Manav Rathi
9fe36985d6 Tweak 2025-02-06 08:04:46 +05:30
Manav Rathi
eee6705e11 Rename 2025-02-06 07:45:03 +05:30
Manav Rathi
719ac8539b Outline 2025-02-06 07:42:32 +05:30
Manav Rathi
7f1d8dba94 Move out 2025-02-06 06:54:49 +05:30
Manav Rathi
92fe34d43f Reintroduce backdrop filter 2025-02-06 06:43:33 +05:30
Manav Rathi
a6a77ffb9c Alternative approach 2025-02-06 06:43:32 +05:30
ashilkn
a638cb1ece [mob][photos] Fix dirty merge conflict resolution 2025-02-05 20:27:42 +05:30
ashilkn
cf3cfe7275 [mob][photos] Resolve conflicts and merge main 2025-02-05 20:23:44 +05:30
ashilkn
edc39f3fd8 [mob][photos] Extract strings 2025-02-05 20:17:54 +05:30
Ashil
85729c9426 [mob][photos] Use first letter person avatar if no person is linked to contact in contacts section, all contacts screen and contact search results (#4975) 2025-02-05 19:23:55 +05:30
ashilkn
1e50f52801 [mob][photos] Throw exception and instruction on what to do instead if GenericSearchResult.previewThumbnail() is used when ResultType is 'shared'(which is the case for contacts search) 2025-02-05 17:37:21 +05:30
ashilkn
46c941fb8c [mob][photos] Use first letter avatar for contact in contacts section and all contacts screen if no person is linked to contact 2025-02-05 17:28:13 +05:30
Manav Rathi
88abe4dac1 [desktop] Custom theme aware titlebar - Part 1 (#4973) 2025-02-05 15:42:43 +05:30
Manav Rathi
e1633eccb7 Ensure mergeability 2025-02-05 15:34:10 +05:30
Manav Rathi
12e441a27b Calc 2025-02-05 15:27:50 +05:30
Manav Rathi
c6497dcb5a Rename 2025-02-05 15:24:33 +05:30
Manav Rathi
70be419562 backdrop-filter 2025-02-05 15:00:19 +05:30
Manav Rathi
6f7e56e796 Sidebar 1 2025-02-05 14:24:04 +05:30
Manav Rathi
051ea691af Use t 2025-02-05 13:21:19 +05:30
Manav Rathi
b7db8e9e77 Title 2025-02-05 13:20:13 +05:30
Manav Rathi
d2e5b87bf7 Comment 2025-02-05 13:10:10 +05:30
Manav Rathi
de5ece27f2 Make it work on macOS too 2025-02-05 13:05:48 +05:30
Manav Rathi
55871c1f2e Try env, though it doesn't seem to be working 2025-02-05 13:03:37 +05:30
Manav Rathi
71a195a4de Framework 2025-02-05 12:57:15 +05:30
Manav Rathi
320a397b1c Fix the original issue
https://www.electronjs.org/docs/latest/tutorial/dark-mode
2025-02-05 12:51:59 +05:30
Manav Rathi
a295eb39f7 drag 2025-02-05 12:29:01 +05:30
Manav Rathi
df7ffefdf8 30px is from the example gist
https://www.electronjs.org/docs/latest/tutorial/custom-title-bar#create-a-custom-title-bar
2025-02-05 12:27:26 +05:30
Manav Rathi
5e7ac4437f Custom titlebar - step 1
https://www.electronjs.org/docs/latest/tutorial/custom-title-bar
2025-02-05 12:25:10 +05:30
Manav Rathi
b855d38864 [web][desktop] Light mode (#4971) 2025-02-05 11:40:15 +05:30
Manav Rathi
23712e6bd3 Fix cast theme 2025-02-05 11:35:07 +05:30
Manav Rathi
dff5e9f4a6 dep bump 2025-02-05 11:26:11 +05:30
Manav Rathi
fe58758523 We don't seem to require this, the browser + MUI defaults are working in both modes
Tested Chrome, Safari
2025-02-05 11:15:55 +05:30
Manav Rathi
bf70129fb6 Fix the actual issue 2025-02-05 11:01:38 +05:30
Manav Rathi
8083cdfaa6 Fainter 2025-02-05 10:29:21 +05:30
Manav Rathi
f14f1ab6bb User facing CL 2025-02-05 10:16:42 +05:30
Manav Rathi
914802f057 CL 2025-02-05 10:01:15 +05:30
Manav Rathi
80e41c9882 Special case cast 2025-02-05 09:55:10 +05:30
Manav Rathi
8d9ec328f4 unwip 2025-02-05 09:52:36 +05:30
Manav Rathi
963ac63898 Enable lm 2025-02-05 09:48:34 +05:30
Manav Rathi
7b704d9ea7 [web] New translations (#4967)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-04 19:02:10 +05:30
Ashil
46669c623b [mob][photos] Change log for release (#4965) 2025-02-04 18:57:13 +05:30
Crowdin Bot
e74c6fd582 New Crowdin translations by GitHub Action 2025-02-04 13:18:11 +00:00
Manav Rathi
4be86c4c00 [web] Light mode - Part n-1/n (#4966)
Almost ready, next PR should be the final one that enables this.
2025-02-04 18:47:23 +05:30
Manav Rathi
d21f7c1a93 lint 2025-02-04 18:43:08 +05:30
Manav Rathi
a60048a4d0 Update 2025-02-04 18:40:42 +05:30
Manav Rathi
737977358a tr 2025-02-04 18:35:48 +05:30
Manav Rathi
f03fa338b1 Fix the toggle 2025-02-04 18:31:34 +05:30
Manav Rathi
e3c09d7af0 ns 2025-02-04 18:28:07 +05:30
ashilkn
1fb6b3dc89 [mob][photos] Bump up to v0.9.94 2025-02-04 18:10:41 +05:30
ashilkn
e68fa04a14 Merge branch 'main' into change_log 2025-02-04 18:08:14 +05:30
ashilkn
daf33bcb3a [mob][photos] Update change log 2025-02-04 18:03:53 +05:30
Manav Rathi
154a46b2ef Tweak 2025-02-04 18:00:30 +05:30
Manav Rathi
584d993bc0 Fix secondary 2025-02-04 17:40:12 +05:30
Manav Rathi
ddc4c9d275 Prune 2025-02-04 17:32:01 +05:30
Manav Rathi
61b5e0ae60 Prep 2025-02-04 17:30:36 +05:30
Prateek Sunal
e0789b0d5a [mob][preview] add support for video streaming (#4253) 2025-02-04 17:25:08 +05:30
Manav Rathi
8e847f12f2 Finalize for now 2025-02-04 17:21:17 +05:30
Manav Rathi
52086eb697 Tranlucent snb 2025-02-04 17:13:51 +05:30
Manav Rathi
383b7542c8 Messes with the animation of the "Copied" snackbar in auth 2025-02-04 17:04:57 +05:30
Manav Rathi
7e50de6e61 Match colors to auth/share 2025-02-04 16:58:42 +05:30
Manav Rathi
82cb806fab ep 2025-02-04 16:50:41 +05:30
Manav Rathi
3e89692ebc Switch 2025-02-04 16:28:08 +05:30
Manav Rathi
847cba9a8b Cleanup 2025-02-04 16:12:38 +05:30
Manav Rathi
5ed9ac0578 cap 2025-02-04 16:07:52 +05:30
Manav Rathi
be790b5bc5 Gallery itself is always in dark mode 2025-02-04 15:58:40 +05:30
Manav Rathi
092640af7e Cleanup 2025-02-04 15:24:16 +05:30
Manav Rathi
f8b9bcf79f Use in people section too 2025-02-04 15:21:00 +05:30
Prateek Sunal
510768bbd6 fix: add logic for caching and loading deatils 2025-02-04 15:16:14 +05:30
Prateek Sunal
c59dd66c0d fix: logic of displayling size, height and width 2025-02-04 15:13:05 +05:30
Manav Rathi
be894d0aaa Create button 2025-02-04 15:03:19 +05:30
Prateek Sunal
aa07b53bbd fix: add delay from init 2025-02-04 14:36:24 +05:30
Laurens Priem
3caeaef2b7 [mob][photos] Memories fix (#4964)
## Description

## Tests
2025-02-04 14:29:04 +05:30
laurenspriem
5804feedc4 [mob][photos] Bump for internal release 2025-02-04 14:25:32 +05:30
laurenspriem
cc098346b8 [mob][photos] Extra safety 2025-02-04 14:23:29 +05:30
Neeraj
2639b88348 [mob] Fix bad state error (#4963)
## Description

## Tests
2025-02-04 14:23:23 +05:30
Neeraj Gupta
dd061e6171 [mob] Fix stream cancellation for deeplink 2025-02-04 14:21:14 +05:30
laurenspriem
f874396694 [mob][photos] Fix infinite loop 2025-02-04 14:20:35 +05:30
laurenspriem
ed8a17ffd8 [mob][photos] Re-enable internal memories for Android 2025-02-04 14:16:35 +05:30
Manav Rathi
3988c9ad9d Allow customization 2025-02-04 14:14:22 +05:30
Neeraj Gupta
088c52b0df [mob] Fix bad state error 2025-02-04 14:10:51 +05:30
Neeraj Gupta
ed231c2260 Lint suggestions 2025-02-04 14:10:38 +05:30
Manav Rathi
b712ac8bf1 Prune 2025-02-04 14:08:58 +05:30
Manav Rathi
39a93ea8ef Inline 2025-02-04 14:07:10 +05:30
Neeraj
18e1745146 [auth] New translations (#4939)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-02-04 14:00:40 +05:30
Manav Rathi
c5fabbd50b Tile 2025-02-04 13:57:47 +05:30
Manav Rathi
d7806d3441 Rename 2025-02-04 13:55:46 +05:30
Manav Rathi
0658a5a59f Inline 2025-02-04 13:46:34 +05:30
Prateek Sunal
5203b764c5 Merge branch 'main' into mobile-preview-video 2025-02-04 13:43:55 +05:30
Prateek Sunal
d357d9ecbe fix: clear Queue code & uploading id code 2025-02-04 13:42:52 +05:30
Prateek Sunal
9bddc98827 fix: begin date conversion and check 2025-02-04 13:27:51 +05:30
Prateek Sunal
8fb51174ce fix: allow force upload on failed click 2025-02-04 13:12:20 +05:30
Prateek Sunal
d80093bfed fix: show options even if local variant is available but preview is too, shout correct errors, 2025-02-04 12:57:52 +05:30
Manav Rathi
8ba43d913a [web] Light mode WIP - Part x/x (#4962) 2025-02-04 12:44:30 +05:30
Manav Rathi
bd095f3062 Cleanup 2025-02-04 12:39:55 +05:30
Manav Rathi
7b214c1dc0 Keep the icon sizes consistent
They need to be scaled down on smaller screens, but we'll need to do that across
the board at once for them to remain consistent.
2025-02-04 12:35:07 +05:30
Manav Rathi
1047767d90 Tweak 2025-02-04 12:30:39 +05:30
Prateek Sunal
2c20ace110 fix: add delay, retry count and error 2025-02-04 12:29:25 +05:30
Manav Rathi
6b9e4b186e occam 2025-02-04 12:24:04 +05:30
Manav Rathi
c3f8e6a11d Reuse 2025-02-04 12:17:00 +05:30
Prateek Sunal
f93dbf0633 fix: issues 2025-02-04 12:09:25 +05:30
Manav Rathi
54cf5dba01 Tweak 2025-02-04 12:03:13 +05:30
Manav Rathi
748b737f74 Fix 2025-02-04 11:57:20 +05:30
Manav Rathi
071ffefffd Ensure ordering 2025-02-04 11:52:52 +05:30
Manav Rathi
3863591d26 accessor 2025-02-04 11:49:19 +05:30
Manav Rathi
d92838d9f2 Move 2025-02-04 11:34:49 +05:30
Manav Rathi
220e46109d Tweak gradient 2025-02-04 10:53:41 +05:30
Manav Rathi
4ace6675ce Treat white and black as constants 2025-02-04 10:32:57 +05:30
Manav Rathi
f3c5e769fe lm 2025-02-04 10:28:17 +05:30
Manav Rathi
c094a5afb5 disabled bg 2025-02-04 10:12:51 +05:30
Manav Rathi
8555fed3d6 [web] Stack indicators on the album thumbnail (#4960)
+ other light mode changes
2025-02-04 10:05:44 +05:30
Manav Rathi
ccca42f757 Revert and scope backdrop overrides
Overriding it globally causes the backdrop of menus and selects to also have this.
2025-02-04 10:00:59 +05:30
Manav Rathi
4de5b9b8bb Rename 2025-02-04 09:54:21 +05:30
Manav Rathi
da5d81fe91 Prune 2025-02-04 09:53:49 +05:30
Manav Rathi
4ad13a2991 Opacity 2025-02-04 09:52:06 +05:30
Manav Rathi
c7859131b0 Tweak 2025-02-04 09:52:06 +05:30
Manav Rathi
211171b78a Use 2025-02-04 09:52:06 +05:30
Manav Rathi
e9fd33890e +attr 2025-02-04 09:52:06 +05:30
Neeraj
ee43a9c14c Added icon for keygen.sh (#4925)
## Description
Added 2 new icons
keygen icon was taken directly from keygen.sh, LinkedIn icon is from
Wikipedia

## Tests
2025-02-04 09:38:39 +05:30
Manav Rathi
011bfc1e0b [web] Tweaks to handling of the new .supplemental-metadata (#4959)
Ref: https://github.com/ente-io/ente/pull/4956
2025-02-04 09:05:00 +05:30
Manav Rathi
94cb146b3c Add some comments from the original PR for future ref
https://github.com/ente-io/ente/pull/4956
2025-02-04 08:58:56 +05:30
Manav Rathi
c48963244d User facing 2025-02-04 08:53:46 +05:30
Manav Rathi
03d7d826cf Fin 2025-02-04 08:51:22 +05:30
Manav Rathi
ef5babd40c Inline 2025-02-04 08:51:04 +05:30
Manav Rathi
01ebe68f09 Inline 2025-02-04 08:44:22 +05:30
Manav Rathi
6d02686331 Inline 2025-02-04 08:15:32 +05:30
Manav Rathi
d2ffea6cf9 Trim 2025-02-04 08:10:25 +05:30
Manav Rathi
ca841dcced Reduce exports 2025-02-04 08:09:25 +05:30
Manav Rathi
9933bd5385 Reduce duplication in tests 2025-02-04 08:06:10 +05:30
Manav Rathi
90e052fa49 Reorder 2025-02-04 07:58:43 +05:30
Manav Rathi
ad12458774 Tweak 2025-02-04 07:52:48 +05:30
Manav Rathi
fa00c06cf8 Rename 2025-02-04 07:48:01 +05:30
Manav Rathi
b8f475bf2e Rename 2025-02-04 07:43:46 +05:30
Manav Rathi
ffc87312d1 Split into groups 2025-02-04 07:38:11 +05:30
Manav Rathi
48f0f62d7c Add support for Takeout's new .supplemental-metadata.json files (#4956)
In recent Google Takeout archives, the metadata JSON files are named
"${original_filename}.supplemental-metadata.json" instead of
"${original_filename}.json", as before.

I refactored the previous code so that `getMetadataJSONMapKeyForJSON()`
only removes the ".json" suffix from the metadata filename and does not
make any other changes. All of the filename munging is now done to the
name of the media file. That was the only way I could make the process
deterministic. As far as I can figure out, there's no deterministic way
of deriving the media filename from the metadata filename -- it's only
deterministic going from the media filename to the metadata filename.

These new names are still subject to the 46-character clipping limit,
with some specific rules about how the filename is clipped:

- The ".json" suffix is never clipped, only the ".supplemental-metadata"
  portion is.
- If the original filename is longer than 46 characters, then the
  ".supplemental-metadata" suffix gets completely removed during the
  clipping, along with a portion of the original filename (as before).
- The numbered suffix (if present) is also never clipped. It is however
  added at the end of the clipped ".supplemental-metadata" portion,
  instead of after the original filename. E.g. "IMG_1234(1).jpg" would
  previously use a metadata filename of "IMG_1234.jpg(1).json". Now it
  uses a metadata filename of
  "IMG_1234.jpg.supplemental-metadata(1).json". But if the filename is
  too long, it gets turned into something like
  "IMG_1234.jpg.suppl(1).json".
- Worth noting is that if the original filename is 45 characters long,
  then everything except for the "." from ".supplemental-metadata" will
  get clipped. So the metadata file ends up with a filename like
  "filename_that_is_45_chars_long.jpg..json".

I added a bunch of additional test cases in `upload.test.ts` based on
actual filenames I have in my Google Photos Takeout archives. The new
code passes all of the new test cases, as well as the original ones.

Fixes #4953
2025-02-04 07:32:11 +05:30
Ashil
9ac2ebfc08 [mob][photos] Fix freezing app + improvements to contacts-faces linking (#4957) 2025-02-03 20:45:31 +05:30
ashilkn
c96102c2b8 [mob][photos] Fallback to using first file as thumbnail for contacts section elements if PersonFaceWidget fails in contact section 2025-02-03 19:43:16 +05:30
ashilkn
f69dd18364 [mob][photos] Show onThisDayOrWeeksResults in moments section only on iOS 2025-02-03 19:32:49 +05:30
Gary Peck
6d2c317877 Add support for Takeout's new .supplemental-metadata.json files
In recent Google Takeout archives, the metadata JSON files are named
"${original_filename}.supplemental-metadata.json" instead of
"${original_filename}.json", as before.

I refactored the previous code so that `getMetadataJSONMapKeyForJSON()`
only removes the ".json" suffix from the metadata filename and does not
make any other changes. All of the filename munging is now done to the
name of the media file. That was the only way I could make the process
deterministic. As far as I can figure out, there's no deterministic way
of deriving the media filename from the metadata filename -- it's only
deterministic going from the media filename to the metadata filename.

These new names are still subject to the 46-character clipping limit,
with some specific rules about how the filename is clipped:

- The ".json" suffix is never clipped, only the ".supplemental-metadata"
  portion is.
- If the original filename is longer than 46 characters, then the
  ".supplemental-metadata" suffix gets completely removed during the
  clipping, along with a portion of the original filename (as before).
- The numbered suffix (if present) is also never clipped. It is however
  added at the end of the clipped ".supplemental-metadata" portion,
  instead of after the original filename. E.g. "IMG_1234(1).jpg" would
  previously use a metadata filename of "IMG_1234.jpg(1).json". Now it
  uses a metadata filename of
  "IMG_1234.jpg.supplemental-metadata(1).json". But if the filename is
  too long, it gets turned into something like
  "IMG_1234.jpg.suppl(1).json".
- Worth noting is that if the original filename is 45 characters long,
  then everything except for the "." from ".supplemental-metadata" will
  get clipped. So the metadata file ends up with a filename like
  "filename_that_is_45_chars_long.jpg..json".

I added a bunch of additional test cases in `upload.test.ts` based on
actual filenames I have in my Google Photos Takeout archives. The new
code passes all of the new test cases, as well as the original ones.
2025-02-03 13:23:40 +01:00
Manav Rathi
3454536799 [web] Fix casing of source string (#4955) 2025-02-03 17:50:01 +05:30
Manav Rathi
1ecd688fb8 [web] Fix casing of source string 2025-02-03 17:46:38 +05:30
Manav Rathi
54971cbaf8 [web] New translations (#4954)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-03 17:46:20 +05:30
Crowdin Bot
a892061446 New Crowdin translations by GitHub Action 2025-02-03 12:15:21 +00:00
Manav Rathi
f6d4c632c7 [web] Light mode WIP - Part x/x (#4952) 2025-02-03 17:21:41 +05:30
Manav Rathi
919f0e2b57 Prefix to improve greppability
Didn't want to prefix with "--ente" since these are not "global" vars, they're
only for a small scope, using the mechanism that Pigment CSS is recommending
that we follow to introduce dynamism with static styling.

"et" could mean "ente" (but shorter), or "ente temp", or whatever you wish for
it to mean really.
2025-02-03 17:10:17 +05:30
Manav Rathi
388add5984 Pixel 2025-02-03 17:05:57 +05:30
Neeraj
404d1feef6 [mob][photos] Contact person linking final fixes (#4951) 2025-02-03 17:03:17 +05:30
ashilkn
d6e0b85af9 [mob][photos] Bump up to v0.9.92 2025-02-03 17:01:17 +05:30
ashilkn
58c164d2c2 Merge branch 'main' into contact_person_linking_final_fixes 2025-02-03 17:00:02 +05:30
ashilkn
7830f9b1b1 [mob][photos] Chore 2025-02-03 16:59:31 +05:30
Neeraj
efe3240bf4 [mob] Fix personAvatar when low score face is manually assigned (#4950)
## Description

## Tests
2025-02-03 16:50:12 +05:30
Neeraj Gupta
1446f20d69 [mob] Fix personAvatar when low score face is manually assigned 2025-02-03 16:42:46 +05:30
Manav Rathi
296579b80b Fix color 2025-02-03 16:31:47 +05:30
Manav Rathi
aea6961676 [web] New translations (#4949)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-03 16:12:16 +05:30
Crowdin Bot
6c33671da7 New Crowdin translations by GitHub Action 2025-02-03 10:41:04 +00:00
ashilkn
982e0068ee [mob][photos] Create constant variables for keys 2025-02-03 16:10:42 +05:30
Manav Rathi
256178240d [web] Manually sync with Crowdin (#4948)
Building via their dashboard is not applying these changes
2025-02-03 16:10:11 +05:30
Manav Rathi
9d931e2d8b [web] Manually sync with Crowdin
Building via their dashboard is not applying these changes
2025-02-03 16:05:13 +05:30
ashilkn
92234752a2 [mob][photos] Fix border issue 2025-02-03 15:55:48 +05:30
Manav Rathi
1d908cbed6 [web] New translations (#4947)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-03 15:55:34 +05:30
Crowdin Bot
305f727078 New Crowdin translations by GitHub Action 2025-02-03 10:24:17 +00:00
Manav Rathi
9244a1799a [web] New translations (#4946)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-03 15:49:57 +05:30
Crowdin Bot
d76c512d96 New Crowdin translations by GitHub Action 2025-02-03 10:10:30 +00:00
Manav Rathi
8fbbb3a18c [web] Misc minor color and translation fixes (#4945) 2025-02-03 15:39:48 +05:30
Manav Rathi
1b0ed23df9 Fix warning 2025-02-03 15:32:08 +05:30
Manav Rathi
9230ddba3f Prune 2025-02-03 15:30:28 +05:30
Manav Rathi
5f2a1e9386 Rename 2025-02-03 15:24:54 +05:30
Manav Rathi
0d40c382ac Move 2025-02-03 15:21:18 +05:30
Manav Rathi
c1b73dc18c Rename 2025-02-03 15:20:05 +05:30
Manav Rathi
84888df08b Move 2025-02-03 15:19:11 +05:30
Manav Rathi
b43c0f6cc7 Rename 2025-02-03 15:18:23 +05:30
Manav Rathi
fb10d78c34 Rename 2025-02-03 15:13:39 +05:30
Manav Rathi
5b1365e7d1 Rename and move 2025-02-03 15:12:58 +05:30
Manav Rathi
85bf7bbc48 Rename 2025-02-03 15:12:16 +05:30
Manav Rathi
f1bf091faf Reorder 2025-02-03 15:11:04 +05:30
Manav Rathi
f1a345d04d Rename 2025-02-03 15:09:35 +05:30
Manav Rathi
2988a3983e Rename 2025-02-03 15:01:58 +05:30
ashilkn
6fd19b3dca [mob][photos] Fallback to using first letter avatar if face avatar is not available yet becuase db is not ready in UserAvatarWidget 2025-02-03 14:57:35 +05:30
Manav Rathi
58fce85696 Rename 2025-02-03 14:57:15 +05:30
Manav Rathi
fbde5625b2 Rename 2025-02-03 14:56:10 +05:30
Manav Rathi
269660c487 Rename 2025-02-03 14:55:41 +05:30
Manav Rathi
dbae45ee44 Fix 2025-02-03 14:54:40 +05:30
Manav Rathi
0b76611e11 Rename 2025-02-03 14:54:12 +05:30
Manav Rathi
b77ac99bbb Rename 2025-02-03 14:53:03 +05:30
Manav Rathi
7cfad45b65 Rename 2025-02-03 14:51:06 +05:30
Manav Rathi
a3384adfb0 Rename 2025-02-03 14:48:19 +05:30
Manav Rathi
e1e05d4781 Fix key warning 2025-02-03 14:44:59 +05:30
Manav Rathi
b8e2b265c3 Update 2025-02-03 14:39:02 +05:30
ashilkn
e3ffe3e1f0 [mob][photos] Fix search results with wrong thumbnail and possible other wrong elements 2025-02-03 14:38:36 +05:30
Manav Rathi
3c352e9ca2 both grad 2025-02-03 14:35:25 +05:30
ashilkn
85d50890a6 [mob][photos] Minor perf optimization 2025-02-03 14:33:21 +05:30
Eran Nave
0a4ad32d9c undo json autoformat 2025-02-03 09:44:25 +01:00
ashilkn
1201cfc42d [mob][photos] Show contacts that have shared nothing yet also in contacts section and search 2025-02-03 14:12:39 +05:30
Eran Nave
528526ac10 removed LinkedIn icon 2025-02-03 09:42:35 +01:00
Manav Rathi
2049bf769d gradient lm 2025-02-03 14:11:03 +05:30
Eran Nave
597190e375 Merge branch 'ente-io:main' into custom_icons 2025-02-03 09:40:44 +01:00
Manav Rathi
e1327a5896 New one 2025-02-03 13:57:12 +05:30
Manav Rathi
7a9110cc9b Can use it with tsc currently 2025-02-03 13:42:05 +05:30
Manav Rathi
f64e62ba61 Reuseable 2025-02-03 13:42:05 +05:30
Manav Rathi
54681d3bde Fix the set password form showing through now that we have a translucent loading overlay 2025-02-03 13:42:05 +05:30
Neeraj
749109fc73 [mob] Store remote ml data before sechduling processing (#4942)
## Description
This will ensure that MLData that was already fetched is saved in the DB
before running the ML pipeline on files that requires indexing.

## Tests
2025-02-03 13:18:10 +05:30
Neeraj
58f84b2a73 Revert "[mobile] New translations (#4938)" (#4943)
This reverts commit 930224a2e5, reversing
changes made to 3de324f342.

## Description

## Tests
2025-02-03 11:53:40 +05:30
Neeraj Gupta
86c9b1ef00 Revert "[mobile] New translations (#4938)"
This reverts commit 930224a2e5, reversing
changes made to 3de324f342.
2025-02-03 11:50:27 +05:30
Neeraj Gupta
e98b0f4e10 [mob] Clean up 2025-02-03 11:37:28 +05:30
Neeraj
930224a2e5 [mobile] New translations (#4938)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-02-03 11:36:48 +05:30
Laurens Priem
3de324f342 Memories seleciton (#4926)
## Description

Complete first iteration of time based memories

## Tests

Tested in debug mode on my pixel phone.
2025-02-03 11:31:33 +05:30
laurenspriem
2e0dcc17ef [mob][photos] Bump for internal release 2025-02-03 11:24:24 +05:30
laurenspriem
10e6f797eb Merge branch 'main' into memories_seleciton 2025-02-03 11:22:59 +05:30
Manav Rathi
e8e7744af3 [meta] Use preferred casing of Wasm (#4941)
From webassembly.org

> WebAssembly (abbreviated _Wasm_) is ...
2025-02-03 11:19:38 +05:30
Neeraj Gupta
e42024c912 minor refactor 2025-02-03 11:18:01 +05:30
Manav Rathi
18cc16bcc0 Use preferred casing of Wasm
From webassembly.org

> WebAssembly (abbreviated _Wasm_) is ...
2025-02-03 11:15:00 +05:30
ashilkn
01c2348b6e [mob][photos] Minor perf optimization 2025-02-03 11:12:05 +05:30
Neeraj Gupta
4fd3a269b0 [mob] Store existing results first before yeilding for indexing 2025-02-03 11:08:56 +05:30
ashilkn
5e41952e62 [mob][photos] Fix no element error 2025-02-03 10:56:59 +05:30
ashilkn
37d38a0e6b [mob][photos] Avoid getRelevantContacts in Person Service returning account owner's User object 2025-02-03 10:52:21 +05:30
Manav Rathi
2a5d67b5ca [web] New translations (#4937)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-03 09:46:28 +05:30
Crowdin Bot
1b320000fb New Crowdin translations by GitHub Action 2025-02-03 01:17:10 +00:00
Crowdin Bot
faed01ca01 New Crowdin translations by GitHub Action 2025-02-03 01:05:07 +00:00
Crowdin Bot
ec147d57dd New Crowdin translations by GitHub Action 2025-02-03 00:34:32 +00:00
Prateek Sunal
5250f7f355 Merge branch 'main' into mobile-preview-video 2025-02-03 06:03:30 +05:30
Prateek Sunal
df769a97ec chore: bump version 2025-02-03 06:02:54 +05:30
Prateek Sunal
9f14d60b42 fix: skip local videos for preview 2025-02-03 05:40:19 +05:30
Prateek Sunal
b70de5cc67 fix: imports 2025-02-03 04:56:43 +05:30
Prateek Sunal
95ae2c30ec fix: add i18n & autoplay 2025-02-03 04:51:41 +05:30
Prateek Sunal
05d83cf390 fix: handle edge cases for preview uploads 2025-02-03 04:40:28 +05:30
Prateek Sunal
a72ae560c9 fix: processing and display logic 2025-02-03 03:37:29 +05:30
ashilkn
6980f56cc3 [mob][photos] Show contacts with no files shared too in contacts and all contacts section 2025-02-01 22:54:57 +05:30
Ashil
48169e9794 [mob][photos] Ask "open public album link in app" permission once (#4922)
## Description
1. Don't show the permission dialog if self-hosted ente
2. Show dialog only once
2025-02-01 18:53:53 +05:30
Ashil
14fbec6b94 [mob][photos] Bug fixes for contact-person linking feature (#4931) 2025-02-01 16:34:20 +05:30
Aman Raj Singh Mourya
a845642cfe [mob][photos] Minor fix 2025-02-01 15:01:30 +05:30
Ashil
4b7397c9bf [auth] Fix logout button not showing on lockscreen (#4924)
## Description
1. Logout button was hidden when user first opt for **Use without
backup** and then **Log in** due the `hasOptedForOfflineMode` been set
to true if we follow the above way , fixed by checking `isLoggedIn`
## Tests
2025-02-01 14:39:55 +05:30
ashilkn
bf19e07512 [mob][photos] Bump up to v0.9.90 2025-02-01 14:36:35 +05:30
ashilkn
e3540b7681 [mob][photos] Run flutter pub get 2025-02-01 14:33:39 +05:30
ashilkn
6ee6e7f217 [mob][photos] Resolve merge conflicts and merge main 2025-02-01 13:14:49 +05:30
ashilkn
cb4fcfdd25 [mob][photos] Reset _emailToPartialPersonDataMapCache after first entities sync (right after logging in) 2025-02-01 12:39:16 +05:30
Prateek Sunal
330a3b4dea chore: bump version 2025-02-01 04:21:55 +05:30
Prateek Sunal
bf1613d91d fix: store in pub magic metadata 2025-02-01 04:21:17 +05:30
Prateek Sunal
0f7445b219 chore: add TODO 2025-02-01 03:35:26 +05:30
Prateek Sunal
47914126e5 fix: add mechanism to show the stream details 2025-02-01 03:35:01 +05:30
Prateek Sunal
bc7400c0a2 fix: icons in backup status, make the buttons work, correct bitrate and codec in checking, correctly upload on start 2025-02-01 02:59:37 +05:30
ashilkn
c15a7909e8 [mob][photos] Minor change 2025-01-31 20:42:16 +05:30
Manav Rathi
5243515beb [web] Light mode WIP - Part x/x (#4927) 2025-01-31 20:16:07 +05:30
Manav Rathi
48db372251 Plan button 2025-01-31 20:11:52 +05:30
ashilkn
9671f4e3fc [mob][photos] Fix user avatar not updating after linking contact to face 2025-01-31 20:09:41 +05:30
Manav Rathi
e093a0de61 wf cleanup 2025-01-31 20:07:51 +05:30
ashilkn
4e7c97a45f [mob][photos] Chore 2025-01-31 19:44:09 +05:30
Manav Rathi
4fac219e52 Tweak 2025-01-31 18:37:27 +05:30
ashilkn
65ea4f755f [mob][photos] Fix bug when filtering list of contacts when searching on add participant page and possibly in link email screen as well 2025-01-31 18:37:07 +05:30
Manav Rathi
189f647ffe Conv 2025-01-31 18:34:47 +05:30
ashilkn
eed50f753b [mob][photos] Write a function that returns relevant emails, which will then be used as the base list to further filter suggestions in the 'Link Email' screen and the 'Add Participants to Album' screen.
The number of emails suggested in the 'Add Participants to Album' screen will now be higher than before, yet still useful.
2025-01-31 17:38:18 +05:30
laurenspriem
0ba76ebbf0 [mob][photos] Simplify 2025-01-31 17:28:55 +05:30
laurenspriem
78ae7c8595 [mob][photos] Increase month selection to 20 2025-01-31 17:20:21 +05:30
laurenspriem
45eff8edb3 [mob][photos] Add months 2025-01-31 17:13:38 +05:30
laurenspriem
0498fa644b [mob][photos] Null safety fix uploadedFileID 2025-01-31 17:10:14 +05:30
Eran Nave
6192ea8b3a Added icons for LinkedIn and keygen.sh 2025-01-31 11:55:42 +01:00
Aman Raj Singh Mourya
34b20573b5 [auth] fix logout button not showing on lockscreen 2025-01-31 16:10:20 +05:30
Manav Rathi
f39ac3529f [web] Light mode changes - Revert the dialog blur (#4923)
+ other WIP
2025-01-31 16:03:23 +05:30
Manav Rathi
0869421d9c Too strong too do always perhaps, need more thought 2025-01-31 15:58:00 +05:30
Manav Rathi
e2876d3d24 Search input 2025-01-31 15:58:00 +05:30
ashilkn
e0b9b27537 [mob][photos] Replace email with name if available on ShareCollectionPage 2025-01-31 15:40:41 +05:30
Manav Rathi
cecb7fd4f4 Solids 2025-01-31 15:23:06 +05:30
laurenspriem
68319ca725 [mob][photos] Update day string 2025-01-31 15:20:55 +05:30
laurenspriem
92a718ca0f [mob][photos] Return when limit 2025-01-31 15:17:24 +05:30
laurenspriem
e4e01cce9e [mob][photos] Add significant weeks 2025-01-31 15:14:25 +05:30
Aman Raj Singh Mourya
a77fe84ea4 [mob][photos] Ask the permission dialog once 2025-01-31 14:52:57 +05:30
Manav Rathi
8e3608c396 Conv 2025-01-31 14:52:01 +05:30
Aman Raj Singh Mourya
3f673d409a [mob][photos] Do not show "open public links in app" permission if self-hosted ente 2025-01-31 14:51:36 +05:30
Manav Rathi
b24b249352 s 2025-01-31 14:47:47 +05:30
Prateek Sunal
662cb8135e fix: cutoff logic for video player 2025-01-31 14:44:08 +05:30
Prateek Sunal
e7a53f87ca fix: disable it by default 2025-01-31 14:37:37 +05:30
Manav Rathi
5a8d45fa98 Subtler
Revert "Also for drawers"

This reverts commit 3a7914e1bf.
2025-01-31 14:36:32 +05:30
Manav Rathi
3a7914e1bf Also for drawers 2025-01-31 14:31:03 +05:30
Manav Rathi
6afce67d51 [web] Light mode WIP - Part x/x (#4921) 2025-01-31 14:30:42 +05:30
Manav Rathi
edcd916744 Cleanup 2025-01-31 14:10:11 +05:30
Manav Rathi
9fdc1c1baf LF 2025-01-31 14:08:44 +05:30
Manav Rathi
0b60603559 Fix duplicate backdrops 2025-01-31 13:56:06 +05:30
Manav Rathi
c080d16ae7 Prune 2025-01-31 13:38:41 +05:30
Manav Rathi
14a806c4ea sp => gap 2025-01-31 13:34:18 +05:30
Manav Rathi
a60f1ec213 Tweak 2025-01-31 12:48:32 +05:30
ashilkn
ba53da4a69 [mob][photos] Show user avatars in email section of save or edit person screen to match figma design 2025-01-31 12:45:28 +05:30
Manav Rathi
79b9b2f84e Tweak layout 2025-01-31 12:41:49 +05:30
Manav Rathi
17b2348fca plan card 2025-01-31 12:27:58 +05:30
Manav Rathi
6453c3d243 Tweak 2025-01-31 12:16:02 +05:30
Manav Rathi
0842edc82d Menu 2025-01-31 12:07:16 +05:30
Manav Rathi
ab9e1f4a3d Fix 2025-01-31 11:53:45 +05:30
Manav Rathi
533e20ad46 Notification 2025-01-31 11:50:05 +05:30
Manav Rathi
6d257f04b5 Do 2025-01-31 11:24:05 +05:30
Manav Rathi
f6ca34c6e9 Improve contrast of dialog contents 2025-01-31 11:15:58 +05:30
ashilkn
96e8b09555 [mob][photos] Chore 2025-01-31 10:52:28 +05:30
ashilkn
bdd7dccd74 [mob][photos] Chore 2025-01-31 10:47:11 +05:30
Manav Rathi
70877b9103 Let it shine through 2025-01-31 10:43:09 +05:30
ashilkn
888a604633 [mob][photos] Update thumbnail of contacts in contacts section when linking or un-linking person from the contact 2025-01-31 10:39:38 +05:30
Manav Rathi
37172c8291 transluscent 2025-01-31 10:36:36 +05:30
Manav Rathi
beb09defca Use loading bar on photos 2025-01-31 10:29:55 +05:30
Manav Rathi
e23f7fd63e hook 2025-01-31 08:59:21 +05:30
Manav Rathi
93f4e9f2c0 [desktop] Fix ARM build (#4920)
Regression introduced yesterday -
d37675cc57
2025-01-31 08:45:40 +05:30
Manav Rathi
495c950386 [desktop] Fix ARM build
Regression introduced yesterday - d37675cc57
2025-01-31 08:43:00 +05:30
Manav Rathi
8d29e837cd [web] Match mobile behaviour for archived files in all (#4919)
Fixes https://github.com/ente-io/ente/issues/4893,
https://github.com/ente-io/ente/discussions/4000
Related https://github.com/ente-io/ente/discussions/3047
2025-01-31 07:13:30 +05:30
Prateek Sunal
226830acaa chore: bump version 2025-01-31 03:48:37 +05:30
Prateek Sunal
96a18d9f2b Merge branch 'main' into mobile-preview-video 2025-01-31 03:48:20 +05:30
Prateek Sunal
548955a803 fix: add to queue based on cutoff date 2025-01-31 03:45:55 +05:30
Prateek Sunal
f7896d5a82 fix: only show size for internal user 2025-01-31 03:16:33 +05:30
Prateek Sunal
18ca154578 fix: preview video state & similar controls 2025-01-31 02:59:59 +05:30
Prateek Sunal
d625816eb3 fix: update code for backup status 2025-01-30 22:12:29 +05:30
Prateek Sunal
094e08c387 fix: show preview status 2025-01-30 21:52:20 +05:30
Manav Rathi
f7c8a563a9 [web] Match mobile behaviour for archived files in all 2025-01-30 19:57:14 +05:30
ashilkn
00c43b10ea [mob][photos] Use contact's face as thumbnail if linked to a person in contacts section and search results that come up when searching 2025-01-30 19:33:38 +05:30
ashilkn
bcaafe7e33 [mob][photos] Remove unused widget 2025-01-30 19:08:09 +05:30
Neeraj
a754fe740f [mob] Reduce noise from logs (#4914)
## Description

## Tests
2025-01-30 18:23:48 +05:30
laurenspriem
26020c2e99 [mob][photos] todo 2025-01-30 17:52:01 +05:30
ashilkn
9e4c3d826a [mob][photos] Add remoteID of person linked to the email in email-to-person-data cache 2025-01-30 17:09:08 +05:30
ashilkn
da582a2436 [mob][photos] Await on _resetEmailToNameCache so that PeopleChangedEvent is fired only after cache is updated. Else there is chance that UI is rebuild on PeopleChangedEvent with stale state of EmailToNameCahce 2025-01-30 16:50:03 +05:30
ashilkn
208e4cbbab [mob][photos] Chore 2025-01-30 16:37:17 +05:30
laurenspriem
fbcba9903e [mob][photos] todo 2025-01-30 16:15:57 +05:30
ashilkn
d37af17445 Revert "[mob][photos] Move Contacts section from search tab to shared tab"
This reverts commit 628f195c0e.
2025-01-30 16:11:29 +05:30
ashilkn
d8b995c3d6 Revert "[mob][photos] Refactor"
This reverts commit cf977a7fa1.
2025-01-30 16:10:50 +05:30
Manav Rathi
58d5374910 [web] Routine dependency updates (#4913)
yarn workspaces info 2>&1 | sed '1d' | sed '$d' | jq '.[] | values |
.location' | xargs -o -n 1 -I % sh -c 'cd % && npx npm-check-updates
--interactive'
2025-01-30 16:10:07 +05:30
ashilkn
90db26c07b Revert "[mob][photos] Reload Contacts and AllContacts section on necessary update events"
This reverts commit 11d080f721.
2025-01-30 16:08:43 +05:30
Neeraj Gupta
48de9850e5 [mob] Lint 2025-01-30 16:03:04 +05:30
Manav Rathi
c4d6323a36 More 2025-01-30 16:00:44 +05:30
Neeraj Gupta
bc6ede54f9 [mob] Reduce noise from logs 2025-01-30 15:59:42 +05:30
laurenspriem
0c92ed96a6 [mob][photos] Lower clip threshold 2025-01-30 15:58:51 +05:30
Manav Rathi
20c6f15a0f Fin 2025-01-30 15:49:12 +05:30
Manav Rathi
8407816d14 MUI deprecations 2025-01-30 15:46:23 +05:30
Manav Rathi
369999e0aa Fix MUI deprecations 2025-01-30 15:20:00 +05:30
laurenspriem
9295908dc5 [mob][photos] comment 2025-01-30 14:47:44 +05:30
ashilkn
b2a21084da [mob][photos] Remove hidden or ignored people from person selection screens (Reassign me & Link contact to person) 2025-01-30 14:38:14 +05:30
laurenspriem
95a27397d3 [mob][photos] small correction 2025-01-30 14:32:31 +05:30
laurenspriem
d9c1a21b0c [mob][photos] simplify 2025-01-30 14:25:00 +05:30
laurenspriem
821965308e [mob][photos] Increase photo multiyear photo selection if needed 2025-01-30 14:16:58 +05:30
laurenspriem
22bec8eee7 [mob][photos] Simpler multi-year filtering 2025-01-30 14:06:55 +05:30
Neeraj
e77998fd71 [mob] Fix bad translation (#4911)
## Description

## Tests
2025-01-30 13:57:01 +05:30
Manav Rathi
b6ae571b0b [web] Routine dependency updates
yarn workspaces info 2>&1 | sed '1d' | sed '$d' | jq '.[] | values | .location' | xargs -o -n 1 -I % sh -c 'cd % && npx npm-check-updates --interactive'
2025-01-30 13:51:00 +05:30
Manav Rathi
b3d8072a38 [desktop] Replace ImageMagick with vips (#4912)
This has already been done, this PR is just final cleanup.
2025-01-30 13:45:21 +05:30
Manav Rathi
892f130580 [desktop] Replace ImageMagick with vips
This has already been done, this PR is just final cleanup.
2025-01-30 13:37:36 +05:30
Neeraj Gupta
b25e5a9443 [mob] Fix bad translation 2025-01-30 13:37:21 +05:30
Manav Rathi
55994e472a [desktop] Handle missing assigned clusters gracefully (#4910) 2025-01-30 12:53:04 +05:30
Manav Rathi
9c23c03f23 [desktop] Handle missing assigned clusters gracefully 2025-01-30 12:46:02 +05:30
Manav Rathi
7dda0ecf81 [web] Light mode WIP - Part x/x (#4909) 2025-01-30 12:41:36 +05:30
Manav Rathi
09bfca7aa4 lf 2025-01-30 12:38:44 +05:30
Neeraj
7c3fe5d57c [auth][mob] Fix 2FA recovery flow (#4908)
## Description

Resolves https://github.com/ente-io/ente/issues/3935

## Tests
2025-01-30 12:01:10 +05:30
Manav Rathi
08c4842f20 Stop duplicating comments 2025-01-30 11:58:01 +05:30
Manav Rathi
aea5f78765 Lift it up for dark mode 2025-01-30 11:58:01 +05:30
Manav Rathi
2bd36b0795 Improve vis 2025-01-30 11:58:01 +05:30
Manav Rathi
13860afbc2 Tweak 2025-01-30 11:58:01 +05:30
Manav Rathi
a7a21e66a7 Style the focus and activation 2025-01-30 11:58:01 +05:30
Manav Rathi
f0e4678307 Improve accessibility and keyboard access 2025-01-30 11:58:01 +05:30
Neeraj Gupta
782ef5eeb0 [auth] Fix 2fa recovery flow 2025-01-30 11:55:07 +05:30
Neeraj Gupta
7fc7d365ad [mob] Fix color 2025-01-30 11:41:18 +05:30
Neeraj Gupta
f98be148dc [mob] Fix recovery flow 2025-01-30 11:41:11 +05:30
Manav Rathi
09c29362af [desktop] Fix download path during install (#4907) 2025-01-30 11:40:21 +05:30
Manav Rathi
bed645044b [desktop] Fix download path during install 2025-01-30 11:38:43 +05:30
Neeraj
07618b8041 [mob] Interface for ML DB + refactor (#4898)
## Description

## Tests
2025-01-30 11:01:51 +05:30
Manav Rathi
7e0dc22abe [desktop] im => vips (#4906)
More cleanup is pending, once we give this nightly a go.
2025-01-30 08:22:27 +05:30
Manav Rathi
d37675cc57 [desktop] im => vips
More cleanup is pending, once we give this nightly a go.
2025-01-30 08:20:11 +05:30
Manav Rathi
1ac0903561 [desktop] Routine dependency updates (#4900) 2025-01-29 17:43:39 +05:30
Manav Rathi
adffe6362a [desktop] Routine dependency updates 2025-01-29 17:41:54 +05:30
Neeraj Gupta
2cade6f271 [mob] Refactor 2025-01-29 17:13:21 +05:30
Neeraj Gupta
ac08d5b37d [mob] Fix lint 2025-01-29 17:13:12 +05:30
Manav Rathi
9d1cc2a014 [desktop] Don't assume a particular position for the open URL arg (#4899)
Ref: https://github.com/electron/electron/issues/20322
2025-01-29 17:12:51 +05:30
Manav Rathi
167807c758 [desktop] Don't assume a particular position for the open URL arg
Ref: https://github.com/electron/electron/issues/20322
2025-01-29 17:03:14 +05:30
Neeraj Gupta
ebd4b89f34 [mob] Refactor 2025-01-29 16:36:06 +05:30
Manav Rathi
6217c3a8f5 [web] Storage card light mode (#4897)
Part of WIP lm updates
2025-01-29 16:27:49 +05:30
Laurens Priem
4d307ded5e [mob][photos] Bump for internal release again (#4896)
## Description

bump for internal release
2025-01-29 16:23:46 +05:30
laurenspriem
6e7ced0ecc [mob][photos] Bump for internal release 2025-01-29 16:21:11 +05:30
Manav Rathi
2dad8f6db0 both 2025-01-29 16:19:46 +05:30
Laurens Priem
9b729fb170 [mob][photos] Bump (#4895)
## Description

Bump version for internal release
2025-01-29 16:17:47 +05:30
laurenspriem
7598351211 [mob][photos] Bump 2025-01-29 16:14:08 +05:30
Neeraj Gupta
657949d109 [mob] Perf improvement 2025-01-29 16:10:42 +05:30
Manav Rathi
1d118b07f9 Extract 2025-01-29 16:05:18 +05:30
Neeraj Gupta
a0bb50fc37 [mob] Performance improvement 2025-01-29 15:57:28 +05:30
laurenspriem
29e77245d7 [mob][photos] Filter for multiple years 2025-01-29 15:57:22 +05:30
Manav Rathi
a0a001e8e7 individual cards 2025-01-29 15:56:08 +05:30
Prateek Sunal
d6c58bc9ca fix: add state for preview updates 2025-01-29 15:54:18 +05:30
Laurens Priem
65ed594574 Person issue logs (#4894)
## Description

Logs
2025-01-29 15:52:59 +05:30
Neeraj
f3952fad49 [auth] Update custom-icons.json (#4892)
I moved World Cube Association entry to the proper alphabetical place
and added the "slug" line because icon is showing blank and I think that
could be the reason.

If there's other common issues with blank SVG icons I would love to
check it, because I've not touch the icon code and is showing in red for
closing `</g>` but is showing fine in the viewer.

Sorry about this.
Regards
2025-01-29 15:36:59 +05:30
Neeraj Gupta
09b88e5bab refactor 2025-01-29 15:33:46 +05:30
Alfred0
bfdd111dc1 Update custom-icons.json
I move World Cube Association entry to the proper alphabetical place and added the slug line because icon is showing blank and I think that could be the reason
2025-01-29 10:51:58 +01:00
Manav Rathi
a2166308d2 wip 2025-01-29 15:20:16 +05:30
Neeraj Gupta
29f4bbb0de Merge remote-tracking branch 'origin/main' into db_interface 2025-01-29 15:08:19 +05:30
Manav Rathi
f235da8a05 t 2025-01-29 14:54:51 +05:30
Manav Rathi
cae38e22e3 tweak 2025-01-29 14:34:27 +05:30
Manav Rathi
c4702cdc22 mq 2025-01-29 14:18:37 +05:30
laurenspriem
05fc91576a [mob][photos] More logs 2025-01-29 14:02:35 +05:30
Neeraj Gupta
c64af87e33 [mob] Refactor 2025-01-29 13:52:12 +05:30
laurenspriem
14f13d9dde [mob][photos] Better logging of person issues 2025-01-29 13:48:39 +05:30
Manav Rathi
6d7210cc69 t 2025-01-29 12:58:45 +05:30
laurenspriem
1ff4f7d0bb [mob][photos] prompt 2025-01-29 12:57:48 +05:30
laurenspriem
ba0ac8ab08 [mob][photos] clip prompt 2025-01-29 12:48:59 +05:30
Manav Rathi
8de32ca12d tweak 2025-01-29 12:48:43 +05:30
Manav Rathi
bd13a2373a nf tweak 2025-01-29 12:41:38 +05:30
ashilkn
ab5f0e7de4 [mob][photos] Replace contact's email with name if linked to a person in all screen related to collaborative albums created by the account owner 2025-01-29 12:10:22 +05:30
laurenspriem
cd190f21d1 [mob][photos] Prioritize named faces 2025-01-29 11:50:51 +05:30
ashilkn
544a124318 [mob][photos] Fix UX issue: Bottom inset overlapping with UI 2025-01-29 11:37:42 +05:30
Neeraj
6134baea55 [mob] Handle 401/404 failure during individual multipart upload (#4890)
## Description

## Tests
2025-01-29 10:49:14 +05:30
Neeraj Gupta
5cabc406af [mob] Handle 401/404 failure during individual multipart upload 2025-01-29 10:42:02 +05:30
Manav Rathi
86704252e0 [web] More wip vips notes (#4889) 2025-01-29 10:38:22 +05:30
Manav Rathi
481d3e3700 Note 2025-01-29 10:33:35 +05:30
Manav Rathi
dcd920cbb4 wip patch 2025-01-29 09:40:35 +05:30
Manav Rathi
efa6d0289d Mention the conclusion after experimenting with alternatives 2025-01-29 08:09:30 +05:30
Prateek Sunal
f4d7bbae34 fix: enable video streaming for internal user 2025-01-28 17:26:56 +05:30
Prateek Sunal
c4f5265ff3 fix: only play preview for non-local video & when streaming is enabled 2025-01-28 17:25:57 +05:30
Prateek Sunal
7e1038a0f6 fix: add conditions for compression 2025-01-28 17:23:33 +05:30
Manav Rathi
3a7e0c23ac [web] More notes around adding vips (#4885) 2025-01-28 17:06:43 +05:30
Manav Rathi
cd93cf1be6 Cleanup 2025-01-28 17:02:40 +05:30
Prateek Sunal
0a3e1087ef fix: only upload preview if video streaming enabled 2025-01-28 16:59:01 +05:30
Prateek Sunal
2345265e19 chore: update locals & project 2025-01-28 16:56:36 +05:30
Prateek Sunal
6468fe9637 feat: add video streaming setting 2025-01-28 16:56:17 +05:30
Manav Rathi
8e653912cd x64 variant 2025-01-28 16:51:51 +05:30
Manav Rathi
80f64b2f8c t2 2025-01-28 16:51:51 +05:30
Manav Rathi
b022d0292f Take 1 2025-01-28 16:51:51 +05:30
Manav Rathi
d12aad2817 The musl variant seems to still link to the c lib dynamically
Sure there'd be a way to resolve this, but for now revert to the normal variant

ldd bin/vips
	/lib/ld-musl-aarch64.so.1 (0xffffa9868000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xffffa96a9000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xffffa9684000)
	libc.so => /lib/ld-musl-aarch64.so.1 (0xffffa9868000)
2025-01-28 16:51:51 +05:30
Manav Rathi
55281b7e32 thumb 2025-01-28 16:51:51 +05:30
Manav Rathi
a155855b45 Note 2025-01-28 16:51:51 +05:30
Manav Rathi
81206c0e36 Patch 2025-01-28 16:51:51 +05:30
Manav Rathi
d0738f0988 Nope 2025-01-28 16:51:51 +05:30
Manav Rathi
4d65e3b233 Try with libvips-packaging
https://github.com/kleisauke/libvips-packaging/

Found via this comment:

> The build script at
> https://github.com/kleisauke/libvips-packaging/blob/main/build/lin.sh can be
> used as a reference to compile libvips and its dependencies as a single,
> statically-linked shared library.
>
> https://github.com/libvips/libvips/discussions/3426#discussioncomment-5507520
2025-01-28 16:51:51 +05:30
Manav Rathi
a6f2eae418 static more 2025-01-28 16:51:51 +05:30
Manav Rathi
84e16057b6 Trying with everything disabled 2025-01-28 16:51:51 +05:30
Manav Rathi
b91ee793bf static lib 2025-01-28 16:51:51 +05:30
laurenspriem
0059f1817b [mob][photos] Add todo 2025-01-28 16:47:50 +05:30
laurenspriem
dc401f6f72 [mob][photos] Sort 2025-01-28 16:36:16 +05:30
laurenspriem
69025f7ebf [mob][photos] Increase threshold 2025-01-28 16:27:31 +05:30
Neeraj
e02c6dfab9 Remove extra line breaks in Auth app descriptions (#4883)
## Description

Solves #4881, removing line breaks that break the text flow on F-Droid.

## Tests

No code changes made.
2025-01-28 15:59:37 +05:30
Neeraj
92104e9a42 [auth] Downgrade flutter (#4882)
## Description

## Tests
2025-01-28 15:39:01 +05:30
Simon
de23adec73 Remove extra line breaks in Auth app descriptions 2025-01-28 10:50:42 +01:00
Neeraj Gupta
53b868215c [auth] Bump version 2025-01-28 15:06:45 +05:30
Neeraj Gupta
fbe77affa0 [auth] Fix json 2025-01-28 15:06:02 +05:30
Neeraj Gupta
988a3e74b4 [auth] Downgrade flutter version 2025-01-28 14:53:12 +05:30
Neeraj Gupta
fc4f35aae0 [auth] Downgrade flutter version 2025-01-28 14:52:21 +05:30
ashilkn
6176ec6cb9 [mob][photos] Revert back to using figma_squircle v0.5.3 from pub.dev since we've reverted to flutter v3.24.x 2025-01-28 13:36:36 +05:30
Neeraj Gupta
6bdc1f5d65 [mob] Add generic type for fileID 2025-01-28 13:30:24 +05:30
ashilkn
f5ee666a52 [mob][photos] Auto generated changes 2025-01-28 13:27:37 +05:30
ashilkn
fc89b9bfc1 [mob][photos] Bump up to v0.9.86 2025-01-28 13:25:41 +05:30
ashilkn
2071cbc61b Merge branch 'main' into mobile-preview-video 2025-01-28 13:24:09 +05:30
Ashil
f7fba3438f [mob][photos] Fix clipping issue of people in all people screen (#4880) 2025-01-28 13:21:35 +05:30
ashilkn
bba1eb99e6 [mob][photos] Fix clipping issue of people in all people screen 2025-01-28 13:18:26 +05:30
Prateek Sunal
e06bfd0724 Merge branch 'main' into mobile-preview-video 2025-01-28 12:58:54 +05:30
Ashil
e01f92adcc [mob][photos] Use face when available for user avatar (#4879)
## Description

If the user (contact specifically) is linked to a person, use the
person's face as user's avatar in the `UserAvatarWidget`

## Tests

Tested everything myself.
2025-01-28 12:07:52 +05:30
ashilkn
e06dbb0ef1 [mob][photos] Remove logs used to assess time taken by ops
Made sure that repeated calls to getPersons() by UserAvatarWidget won't cause any performance issues
2025-01-28 11:53:52 +05:30
ashilkn
b1b70a0d08 [mob][photos] Fix Faces on avatar not loading on app start
This was because the emailToName cache was not set yet when accessed by UserAvatarWidget. Awaiting on PersonService.init to finish in main() fixed the problem. It only increases time on splash screen by 4ms on the medium sized(uploaded and faces count wise) account I tested on
2025-01-28 11:35:53 +05:30
laurenspriem
e50ab7ca84 [mob][photos] First iteration of file selection 2025-01-28 10:43:58 +05:30
laurenspriem
a575e5f3c8 [mob][photos] Functions to get embeddings of specific files 2025-01-28 10:43:22 +05:30
Manav Rathi
90076dd984 [web] Prevent dedup from failing because of shared files owned by others (#4878) 2025-01-28 06:37:01 +05:30
Manav Rathi
fe19868623 [web] Prevent dedup from failing because of shared files owned by others 2025-01-27 19:50:43 +05:30
ashilkn
61e1153a36 [mob][photos] Use contact's face if linked to a person for user avatar 2025-01-27 18:42:05 +05:30
Neeraj
94a145dafc [auth] Add & update icons (#4844)
## New icons

- DocuSeal
- STRATO
- TikTok
- Xbox
- Zoom

## Updated icons

- Canva
- Ubisoft
- Windscribe
- Yahoo
2025-01-27 17:07:49 +05:30
Neeraj
70d957e649 [auth] Use zip compression for windows build (#4868)
## Description

## Tests
2025-01-27 17:06:52 +05:30
Vishnu Mohandas
039bfc3521 Update emails (#4870) 2025-01-27 16:29:31 +05:30
vishnukvmd
84ad5e9363 Update mails 2025-01-27 16:28:27 +05:30
Neeraj Gupta
69661b0d30 [mob] Put clip queries in same db class 2025-01-27 16:27:20 +05:30
Manav Rathi
8610854155 [web] Handle NaN in the Exif locations (#4869)
A customer sent us a sample file from the wild where this was the case.
2025-01-27 16:17:37 +05:30
Neeraj
f3110f65a1 [auth] Use zip compression for windows build 2025-01-27 16:12:12 +05:30
Manav Rathi
ac8804a1c1 [web] Handle NaN in the Exif locations
A customer sent us a sample file from the wild where this was the case.
2025-01-27 16:03:02 +05:30
Laurens Priem
34ddeff6bc Person assigned (#4867)
## Description

Make PersonData.assigned and PersonData.rejectedFaceIds non-nullable to
fix issue.

## Tests

Tested in debug mode on my pixel phone.
2025-01-27 15:40:16 +05:30
Neeraj
5204fdc768 [auth] Auth banner (#4842) 2025-01-27 15:05:07 +05:30
VanillaChanny
5738f5262b [auth] Create a custom icons for NekoHosting (#4838)
## Description

Adds SVG icons for https://nekohosting.gg/ and
https://beta.nekohosting.gg/
2025-01-27 15:03:53 +05:30
Alfred0
099dce43de [auth] World Cube Association Icon (#4853)
Hi, I open in the past a pull request to add the World Cube Association
icon, but I was pending for confirmation and was closed.

Now at this point is all ok to use it as I understand, so here is the
WCA logo.

Hope all is fine, this is my first pull request for something.

Best regards.
2025-01-27 15:03:13 +05:30
Neeraj
9bab498d41 [auth] Hide [Share/QR/Edit/Trash] popup in code reorder screen (#4866)
## Description
Solve #4856 
## Tests
2025-01-27 15:02:44 +05:30
Aman Raj Singh Mourya
39a9cd3db4 [auth] Hide [Share/QR/Edit/Trash] popup in code reorder screen 2025-01-27 14:57:54 +05:30
laurenspriem
06daaa1205 [mob][photos] More null checks removed 2025-01-27 14:32:56 +05:30
Aman Raj Singh Mourya
85f407ff7d [auth] Extract strings 2025-01-27 14:30:18 +05:30
laurenspriem
07830e4dac [mob][photos] Remove null checks 2025-01-27 14:29:28 +05:30
laurenspriem
4e57688dab [mob][photos] Make assigned non-nullable 2025-01-27 14:22:12 +05:30
laurenspriem
6cd59a7f52 [mob][photos] Document 2025-01-27 14:21:54 +05:30
Aman Raj Singh Mourya
3327b75133 [auth] code refactor 2025-01-27 14:11:07 +05:30
Prateek Sunal
69ddb6fb2c Merge branch 'main' into mobile-preview-video 2025-01-27 13:52:46 +05:30
Neeraj
da8d1f25ab [auth] New translations (#4861)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-01-27 13:35:29 +05:30
Neeraj
c839dc5e9b [mobile] New translations (#4860)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-01-27 13:35:04 +05:30
Neeraj
c0e701f223 [auth] Attempt to fix icons displaying as black (#4843)
## Description
Some icons were showing as black instead of their intended colors.
Suspecting an issue with CSS color styling, switched to inline syntax.
2025-01-27 13:29:03 +05:30
Manav Rathi
635c742535 Update deduplicate.md (#4865)
## Description
Fixed typo
2025-01-27 13:07:56 +05:30
mape6
26264dde04 Update deduplicate.md 2025-01-27 08:16:13 +01:00
Vishnu Mohandas
27ecf6c3d3 [docs] Rename photo-dates > metadata (#4863) 2025-01-27 09:52:13 +05:30
Manav Rathi
aabe2a5bcf One more place 2025-01-27 09:51:51 +05:30
vishnukvmd
47ad0aab2d [docs] Rename photo-dates > metadata 2025-01-27 09:40:46 +05:30
Manav Rathi
425b110b40 [web] New translations (#4859)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-27 07:03:21 +05:30
Crowdin Bot
e456e6986a New Crowdin translations by GitHub Action 2025-01-27 01:17:07 +00:00
Crowdin Bot
642c01a908 New Crowdin translations by GitHub Action 2025-01-27 01:05:04 +00:00
Crowdin Bot
a3fea1656e New Crowdin translations by GitHub Action 2025-01-27 00:34:31 +00:00
Prateek Sunal
6aa3733111 Update pubspec.yaml 2025-01-26 13:27:58 +05:30
Ashil
98c8e82ca7 [Mob][Photos] People-contact linking (#4845)
## Description

- Linked people to contacts (specifically emails) following the [Figma
design](https://www.figma.com/design/SYtMyLBs5SAOkTbfMMzhqt/Ente-Visual-Design?node-id=34500-35963&t=viuppN9KWwcHHWI5-4).
- Enabled the "joining public links" feature.
Reverted to Flutter version 3.24.3 due to a bug introduced in version
3.27.x.

## Tests

Did basic QA and code review myself.
2025-01-26 09:18:33 +05:30
Prateek Sunal
9e3d412e99 fix: use sdk 34 2025-01-26 03:03:41 +05:30
Prateek Sunal
858de20726 chore: bump version 2025-01-25 23:21:19 +05:30
Prateek Sunal
453f23ffba Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-25 23:20:42 +05:30
Prateek Sunal
17c2bd24e4 fix: HDR to SDR conversion 2025-01-25 23:19:19 +05:30
Neeraj Gupta
771d12bd9b [mob] Define interface for ML DB 2025-01-25 15:16:01 +05:30
ashilkn
89a411c6a1 [mob][photos] Bump up to v0.9.84 2025-01-24 21:19:41 +05:30
ashilkn
0e6d39fcc7 [mob][photos] Refactor 2025-01-24 21:10:42 +05:30
ashilkn
475f839593 [mob][photos] Chore 2025-01-24 20:40:18 +05:30
ashilkn
a3db3e496a [mob][photos] Refactor 2025-01-24 20:33:28 +05:30
ashilkn
fe9682823f [mob][photos] Use better variable name 2025-01-24 20:27:03 +05:30
Neeraj
40e3338ead [mob] Use different bundle for iOS debug variant (#4840)
## Description

## Tests
2025-01-24 20:15:49 +05:30
ashilkn
5ec4998f13 [mob][photos] Extract strings 2025-01-24 19:31:27 +05:30
ashilkn
36bd0b1d92 [mob][photos] chore 2025-01-24 19:22:10 +05:30
ashilkn
11d080f721 [mob][photos] Reload Contacts and AllContacts section on necessary update events 2025-01-24 19:13:09 +05:30
Braky
41ddfb90f2 [auth] Add & update icons 2025-01-24 14:41:54 +01:00
Bl4ckspell
d2df920606 Attempt to fix icons displaying as black
Some icons were showing as black instead of their intended colors. Suspecting an issue with CSS color styling, switched to inline syntax.
2025-01-24 14:35:08 +01:00
Manav Rathi
0b31f9321c [web] Non-functional scraps from experimenting with ImageMagick alternatives (#4841) 2025-01-24 17:54:39 +05:30
Manav Rathi
58b300d8d4 LF 2025-01-24 17:46:53 +05:30
Aman Raj Singh Mourya
90a8ecf0ab [auth] minor fix 2025-01-24 17:45:19 +05:30
Aman Raj Singh Mourya
53c872ceec [auth] remove supportDev widget and minor fix 2025-01-24 17:29:06 +05:30
ashilkn
3816ea42ab [mob][photos] Chore 2025-01-24 17:14:41 +05:30
Aman Raj Singh Mourya
7e5a38a687 [auth] Implemented logic for notification banner 2025-01-24 17:10:26 +05:30
Aman Raj Singh Mourya
fc8d5837c3 [auth] added notification banner on the setting screen 2025-01-24 17:07:03 +05:30
Aman Raj Singh Mourya
6ed5203485 [auth] Implemented function to set the app install time 2025-01-24 17:06:14 +05:30
Neeraj Gupta
7bc5af0bb8 [mob] Use different bundle for iOS debug variant 2025-01-24 16:41:05 +05:30
ashilkn
b3df62e2bc [mob][photos] Show full email in contacts filter chip 2025-01-24 16:37:56 +05:30
ashilkn
cf977a7fa1 [mob][photos] Refactor
The contacts section was moved to the shared tab from the search tab in a hacky way before this change. Have now refactored code around it for better readability and consistancy
2025-01-24 16:18:08 +05:30
ashilkn
a1b0e82d56 [mob][photos] Return null deprecated name field is empty on User.displayName 2025-01-24 14:16:52 +05:30
ashilkn
8370cf44b5 [mob][photos] Show name of contact instead of email in file info of an incoming shared photo if the contact it assinged to a person 2025-01-24 14:15:40 +05:30
ashilkn
fb63e66abb [mob][photos] Minor padding change in EndToEndBanner 2025-01-24 13:54:39 +05:30
Manav Rathi
31009f7a58 Document current state 2025-01-24 13:08:57 +05:30
ashilkn
927267f19f [mob][photos] Revert to flutter 3.24.3 2025-01-24 12:21:26 +05:30
ashilkn
a2c5c1e67a [mob][photos] Resolve merge conflicts and merge main 2025-01-24 12:02:02 +05:30
ashilkn
43b6140808 [mob][photos] Show join link banner only if logged in 2025-01-24 11:55:11 +05:30
ashilkn
ff8fdb0cc1 [mob][photos] Use EndToEndBanner component as banner for join link 2025-01-24 11:44:37 +05:30
ashilkn
b6094e5aa8 [mob][photos] Remove internal flag from join links feature 2025-01-24 11:44:00 +05:30
ashilkn
8c932dc3f2 [mob][photos] Add animation to widget in SaveOrEditPerson 2025-01-24 11:07:16 +05:30
mangesh
bbf001e5cb [docs] revamp "Configuring S3" (#4821)
PR is about making improvements to the "Configuring S3" Document. Making
sure to staying with the principles of the previous doc just making
improvements in the explanation.

Also added a diagram, will keep it updated as I develop better
understanding of the whole Client, Museum and S3 Relation :)
2025-01-24 10:51:50 +05:30
Neeraj
fd4c4ab226 [dashboard] Remove token field (#4819) 2025-01-24 10:51:14 +05:30
Manav Rathi
f049aa96fc Try with a alpine build to see if we can get a static binary 2025-01-24 06:33:24 +05:30
Manav Rathi
ed7bc529f5 Same results as trying manually with staticx
the staticx produced binary takes 0.5 secs to launch, as compared the one we get by normally compiling.
2025-01-24 06:33:24 +05:30
Manav Rathi
8fa4e8e2d1 Try using staticx on vips binary
Dockerfile from https://github.com/joshuarli/static-builders
2025-01-24 06:33:24 +05:30
Manav Rathi
647a04af96 Prepare build env 2025-01-24 06:33:24 +05:30
Manav Rathi
a4e49daeb1 Inspectable layer 2025-01-24 06:33:24 +05:30
Manav Rathi
c4c8447f54 Sample 2025-01-24 06:33:24 +05:30
Manav Rathi
9451124c38 Init 2025-01-24 06:33:24 +05:30
Manav Rathi
27f6a899f7 [web] New translations (#4834)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-01-24 05:58:36 +05:30
Crowdin Bot
27711dcb0e New Crowdin translations by GitHub Action 2025-01-24 00:21:01 +00:00
Manav Rathi
13040cc53e [server] Report a client error instead of 5xx on invalid pk signature (#4833)
e.g.

--- at /etc/ente/pkg/api/user.go:352
(UserHandler.FinishPasskeyAuthenticationCeremony) ---
--- at /etc/ente/pkg/repo/passkey/passkey.go:395
(Repository.FinishAuthentication) ---
    Caused by: Error validating the assertion signature: \u003cnil\u003e

## Tested by

Modifying the pk app to pass null as the signature, and observing that
client gets back a 401 (previously 500).
2025-01-24 05:44:06 +05:30
Manav Rathi
3188643583 [server] Report a client error instead of 5xx on invalid pk signature
e.g.

    --- at /etc/ente/pkg/api/user.go:352 (UserHandler.FinishPasskeyAuthenticationCeremony) ---
    --- at /etc/ente/pkg/repo/passkey/passkey.go:395 (Repository.FinishAuthentication) ---
    Caused by: Error validating the assertion signature: \u003cnil\u003e
2025-01-24 05:35:01 +05:30
ashilkn
ff9bec5bb2 [mob][photos] Show only contacts that aren't linked to any person in the 'link email' screen 2025-01-23 21:37:42 +05:30
ashilkn
065c13cd06 [mob][photos] Refactor 2025-01-23 21:09:24 +05:30
ashilkn
c7bc8e97d5 [mob][photos] Add guards to make sure no email is linked to more than one person 2025-01-23 20:44:43 +05:30
ashilkn
f11d4d540b [mob][photos] Refactor 2025-01-23 19:54:32 +05:30
mangesh
90d84b04b6 [docs} add missing ENV to env variables in Dockerfile (#4829) 2025-01-23 19:48:50 +05:30
ashilkn
628f195c0e [mob][photos] Move Contacts section from search tab to shared tab
This is a quick workaround, will reorganize code in a better way in near future
2025-01-23 19:14:19 +05:30
mngshm
334a4869b2 fix: adding in Dockerfile 2025-01-23 17:51:20 +05:30
ashilkn
6bd8e73c8a [mob][photos] Make Person selection screens same as figma design 2025-01-23 17:35:42 +05:30
ashilkn
c00b70cbde [mob][photos] Make 'Reassign Me' functional 2025-01-23 15:55:39 +05:30
mngshm
629311ca2c Make CI happy :) 2025-01-23 14:37:18 +05:30
mngshm
975ed72ff6 Add information about 2025-01-23 14:36:46 +05:30
mngshm
5ccfbbf263 fix: yarn build was unhappy with the image 2025-01-23 14:34:49 +05:30
Manav Rathi
d2c2bae3eb [web] Refactor RowButton to prepare for light mode (#4826) 2025-01-23 13:46:14 +05:30
Manav Rathi
a1db956ae8 lm switch focus 2025-01-23 13:40:41 +05:30
Manav Rathi
312a82cea5 Label 2025-01-23 13:13:30 +05:30
Manav Rathi
c6b1dcba87 Split 2025-01-23 13:00:53 +05:30
Manav Rathi
01ff0a62bc Active and focus visible 2025-01-23 12:40:24 +05:30
ashilkn
a34d2a9c1a [mob][photos] Append '(Me)' at the end of PeopleAppBar's title if the opened person is 'Me' 2025-01-23 12:34:19 +05:30
Manav Rathi
c1b7ebf863 Disabled 2025-01-23 12:31:24 +05:30
Neeraj
b43f4b1a2a [mob] Opt of out flutter default deeplink (#4825)
## Description

## Tests
2025-01-23 12:22:07 +05:30
Neeraj Gupta
8b276a55ef [mob] Opt of out flutter default deeplink 2025-01-23 12:21:42 +05:30
ashilkn
e850dae7be [mob][photos] Show 'Reassign Me' option on PeopleAppBar if 'Me' is assigned and the person 'Me' is opened 2025-01-23 12:15:51 +05:30
Manav Rathi
90c36a5eee Hover 2025-01-23 12:05:50 +05:30
ashilkn
718dcafdd0 [mob][photos] Make 'Link person' banner on contact screen functional. Create a separate widget for ContactSearchResult for better separation. 2025-01-23 11:42:04 +05:30
Manav Rathi
c082c542ef Reduce variants 2025-01-23 11:09:05 +05:30
Neeraj
20524177b1 [auth] Auth banner widget (#4820)
## Description

## Tests
2025-01-23 11:03:10 +05:30
Manav Rathi
105878c3b5 checkpoint 2025-01-23 10:49:46 +05:30
Manav Rathi
c23c92573e checkpoint 2 2025-01-23 10:06:04 +05:30
Manav Rathi
ab5209070c wip surgery 2025-01-23 09:44:12 +05:30
Manav Rathi
121e1380c7 Split 2025-01-23 09:04:14 +05:30
Manav Rathi
60e144ab5e Children 2025-01-23 07:54:03 +05:30
Manav Rathi
07dd081f0e Nomenclature 2025-01-23 07:48:01 +05:30
Manav Rathi
26f4c9e0fe Move 2025-01-22 19:30:35 +05:30
mngshm
a9952e14d0 Revamp S3 Configuration Doc 2025-01-22 19:03:33 +05:30
ashilkn
45b2f91da5 [mob][photos] Show 'Link person' banner on contact screen if contact isn't linked to a person yet 2025-01-22 18:05:29 +05:30
Aman Raj Singh Mourya
8290809dfb [auth] minor changes 2025-01-22 17:53:18 +05:30
Aman Raj Singh Mourya
a4b14fe5b1 [auth] Implemented Banner widget 2025-01-22 17:51:30 +05:30
mngshm
bec84530e6 re-order help.ente.io/self-hosting sidebar 2025-01-22 17:43:29 +05:30
ashilkn
6081dcf7a8 [mob][photos] Create EndToEndBanner component and use it 2025-01-22 17:39:37 +05:30
ashilkn
e4ebdddb7f [mob][photos] chore 2025-01-22 16:55:08 +05:30
ashilkn
cea2f5b2df [mob][photos] Show name if email is linked to a person for emails in the share info screen of albums 2025-01-22 16:54:46 +05:30
ashilkn
0b5e6f9ced [mob][photos] Reset email to name cache completely on any change to name or email to avoid stale cache 2025-01-22 16:53:10 +05:30
ashilkn
48dc09ad38 [mob][photos] Use User.displayName instead of User.name since User.name is now deprecated 2025-01-22 16:14:48 +05:30
ashilkn
9ff57b765c [mob][photos] Deprecate in User model and create extension of User which has displayName() method that gets user name from emailToNameCache 2025-01-22 16:02:43 +05:30
ashilkn
03be554025 [mob][photos] Create emailToName cache for contacts linked to people 2025-01-22 15:51:45 +05:30
mngshm
5f2e18c25f Read Token from Param 2025-01-22 15:43:31 +05:30
Manav Rathi
2b7d514328 Move 2025-01-22 15:40:29 +05:30
Manav Rathi
3e7c66f9fe Tweak 2025-01-22 15:38:19 +05:30
Manav Rathi
fb1cfbf541 Tweak 2025-01-22 15:27:00 +05:30
Manav Rathi
471b3f2c94 Hover 2025-01-22 15:19:05 +05:30
mngshm
27beac3288 Formatting 2025-01-22 15:09:40 +05:30
mngshm
9f17c9a564 Remove token field 2025-01-22 15:07:52 +05:30
Manav Rathi
a62335df85 Unmini 2025-01-22 15:02:26 +05:30
Manav Rathi
1043f7c9a2 Ref 2025-01-22 14:53:21 +05:30
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
Manav Rathi
c19119afc4 Tweak 2025-01-22 14:43:25 +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
Manav Rathi
3782165155 Doc 2025-01-22 14:39:05 +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
ashilkn
0060389251 [mob][photos] Create 'Link email' widget for PeoplePage 2025-01-22 11:43: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
Prateek Sunal
edb5e901e4 fix: use ffmpeg 2025-01-22 02:03:06 +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
ashilkn
df9124d4f9 [mob][photos] Check if email holds ente account before adding email to email TextField 2025-01-21 14:37:16 +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
ashilkn
7ff6555770 [mob][photos] Fix UI issue on iOS 2025-01-21 14:07:15 +05:30
Neeraj Gupta
6eb381b64a [auth][photos] Upgrade flutter 2025-01-21 14:02:13 +05:30
ashilkn
2bbd2d9185 [mob][photos] Fix state issue + remove confirmation dialogs 2025-01-21 13:47:20 +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
ashilkn
0ab9fbec49 [mob][photos] Show 'This is me' button in SaveOrEditPersonScreen only if the current user isn't assigned a face 2025-01-21 12:05:23 +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
ashilkn
ab8525ca3d [mob][photos] Make 'Link email' of SaveOrEditPerson screen functional 2025-01-21 11:35:25 +05:30
Neeraj Gupta
6c68052a55 Lint fix 2025-01-21 11:04:24 +05:30
ashilkn
72af9a2435 [mob][photos] Show 'Link email' header in PeoplePage only if email is missing for the person 2025-01-21 11:02:48 +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
ashilkn
3bfd3b5220 [mob][photos] Add UI for linking/unlinking from SaveOrEditPerson screen & make Unlinking functional all while managing state across different screens below it. 2025-01-20 19:33:55 +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
Neeraj Gupta
3cf050c2e8 [mob] Bump version 2025-01-18 15:45:49 +05:30
Prateek Sunal
3d89d852a0 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-18 04:22:25 +05:30
Prateek Sunal
815848450c fix: turn rotate off and re-encode to fix iOS issue 2025-01-18 04:20:50 +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
Prateek Sunal
15446d3d98 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-17 01:03:24 +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
ashilkn
394798d232 [mob][photos] Make Link button in link email page functional. Write method to call for unlinking email from person 2025-01-16 18:50:40 +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
ashilkn
cccefc8d9b [mob][photos] Bug fix 2025-01-16 13:27:49 +05:30
ashilkn
674106593c [mob][photos] Create link email screen 2025-01-16 13:20:37 +05:30
ashilkn
70191d752b [mob][photos] Improve TextInput
Widget
2025-01-16 13:16:43 +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
Neeraj Gupta
0de1b344ad Merge branch 'main' into mobile-preview-video 2025-01-15 11:55:36 +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
Prateek Sunal
882850e3d5 fix: null check issue 2025-01-14 17:59:19 +05:30
Prateek Sunal
cb9083677f Merge branch 'main' into mobile-preview-video 2025-01-14 17:42:26 +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
Prateek Sunal
c302f1ba2a fix: remove unwanted key 2025-01-14 17:26:53 +05:30
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
Manav Rathi
e593274fec Paper 2025-01-14 13:32:14 +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
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
Manav Rathi
3f38ed4611 Doc 2025-01-14 10:55:30 +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
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
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
Prateek Sunal
167ed91a01 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-13 13:36:59 +05:30
Prateek Sunal
b595272713 fix: check isUploading & only upload for internal user 2025-01-13 13:36:43 +05:30
Prateek Sunal
6e258490fe fix: append to a set if already compressing 2025-01-13 05:49:48 +05:30
Prateek Sunal
ca118c397b fix: match collection id to "Camera" 2025-01-13 05:40:29 +05:30
Neeraj Gupta
9fe58e44b0 [server] Improve recovery initialization validation 2025-01-11 15:22:42 +05:30
Prateek Sunal
04f860c97a feat: upgrade package to support bitrate in video compress 2025-01-10 01:52:03 +05:30
Prateek Sunal
021cde5b7e Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-08 12:02:55 +05:30
Prateek Sunal
ca08f39a4e fix: add custom bitrate, framerate for preview compress 2025-01-08 02:25:47 +05:30
Prateek Sunal
05ee252be8 chore: bump versions 2025-01-08 02:25:33 +05:30
Prateek Sunal
6c7a409c35 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-08 01:40:29 +05:30
mngshm
f0789b1fca pushing staged changes 2025-01-07 17:41:55 +05:30
mngshm
cf6cd23ea4 fix: formatting 2025-01-07 10:11:06 +05:30
mngshm
079a84fc82 refactor: reomve unnecessary stylesheet 2025-01-06 19:13:01 +05:30
Neeraj Gupta
acc367d522 Lint fix 2024-12-20 16:24:32 +05:30
Neeraj Gupta
1de19e7a3e [mob] Bump version 2024-12-20 15:44:57 +05:30
Neeraj Gupta
1f122c79f7 [mob] Switch to medium quality 2024-12-20 15:44:16 +05:30
Neeraj Gupta
7a99377dc9 [mob] Fix null pointer in playlist cache 2024-12-20 11:35:51 +05:30
Neeraj Gupta
50f4cb8e13 Bump version 2024-12-19 12:24:12 +05:30
Neeraj Gupta
ff01477021 Show size in toast 2024-12-19 12:23:50 +05:30
Neeraj Gupta
6c4c0a4ed9 Merge branch 'main' into mobile-preview-video 2024-12-19 12:10:09 +05:30
Neeraj Gupta
eba6429e99 [mob] use unique prefix for each preview generation 2024-12-18 16:53:30 +05:30
Neeraj Gupta
a197851fe9 generated strings 2024-12-18 16:40:36 +05:30
Neeraj Gupta
d359d750c4 [mob] Show progress toast 2024-12-18 16:40:26 +05:30
Neeraj Gupta
1115bf7b56 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-12-18 15:42:07 +05:30
Prateek Sunal
5dba461481 fix: use object id for cache video and playlist keys 2024-12-15 00:36:34 +05:30
Prateek Sunal
f9df92212a feat: cache playlist and video 2024-12-12 03:00:57 +05:30
Prateek Sunal
da38726f40 fix: cache preview file 2024-12-10 01:43:05 +05:30
Neeraj Gupta
f7b89b7126 Use cached playlist in debugMode 2024-12-08 16:27:52 +05:30
Neeraj Gupta
f19f1b0c68 [mob] Log video compression progress 2024-12-05 15:40:20 +05:30
Neeraj Gupta
1a3716f649 Merge branch 'main' into mobile-preview-video 2024-12-05 10:47:01 +05:30
Prateek Sunal
ffeb9da0d6 fix(preview): cache previewed list, use native player by default 2024-12-03 00:11:18 +05:30
Prateek Sunal
3d96e4bd94 fix: revert source of chewie and video_player 2024-11-29 19:45:34 +05:30
Prateek Sunal
bf19aa61d7 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-29 16:08:44 +05:30
Prateek Sunal
9aa49a7067 fix: remove submodules 2024-11-29 16:08:19 +05:30
Prateek Sunal
a299dbcd6b chore: bump lock 2024-11-29 13:17:01 +05:30
Prateek Sunal
3a50c45dde fix: init media kit video_player only when fg 2024-11-29 13:16:49 +05:30
Prateek Sunal
d84edcf85c fix: only use media_kit for iOS 2024-11-28 22:27:23 +05:30
Prateek Sunal
7193a61a11 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-28 22:25:20 +05:30
Prateek Sunal
03bfd854df chore: bump packages 2024-11-28 22:22:59 +05:30
Prateek Sunal
d8490322d9 fix: update for iOS 2024-11-28 22:22:33 +05:30
Prateek Sunal
13da082cda fix: check files db if preview exist 2024-11-28 21:32:26 +05:30
Prateek Sunal
f7fc50f2e6 fix: don't show error 2024-11-28 15:09:37 +05:30
Neeraj Gupta
fe91f3ee9b Merge branch 'mobile-preview-video' of https://github.com/ente-io/auth into mobile-preview-video 2024-11-28 14:52:51 +05:30
Neeraj Gupta
7bc688d18b Merge branch 'main' into mobile-preview-video 2024-11-25 09:58:24 +05:30
Prateek Sunal
426cd70c31 refactor: simplify error handling and remove unused imports in preview video components 2024-11-25 02:24:40 +05:30
Prateek Sunal
1fa3d87369 fix: show toast about video is playing 2024-11-25 02:24:32 +05:30
Prateek Sunal
8152159583 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-25 00:05:51 +05:30
Prateek Sunal
68ac9cbe26 fix: remove unwanted code 2024-11-19 13:42:18 +05:30
Prateek Sunal
01b7a01dc5 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-15 02:02:51 +05:30
Prateek Sunal
bbfa447e42 fix: source preview file as videoplayer's input 2024-11-11 23:55:33 +05:30
Prateek Sunal
c83bd41dae Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-11 22:01:30 +05:30
Neeraj Gupta
223b22ef46 [mob] Add method to get preview video url 2024-11-08 16:32:30 +05:30
Neeraj Gupta
982b4a4244 [mob] Sync fd early 2024-11-08 16:22:43 +05:30
Neeraj Gupta
3a09d50972 Merge branch 'main' into mobile-preview-video 2024-11-07 17:52:08 +05:30
Neeraj Gupta
9898baddbb [mob] Update preview code to use latest api 2024-10-01 22:33:31 +05:30
Neeraj Gupta
520d4e4f26 [mob] Fix file getter 2024-10-01 21:24:12 +05:30
Neeraj Gupta
ba04e20aeb erge branch 'main' into mobile-preview-video 2024-09-30 16:04:38 +05:30
Neeraj Gupta
672c209140 Merge branch 'main' into mobile-preview-video 2024-09-04 17:37:24 +05:30
Neeraj Gupta
f15c9ec4d2 Merge branch 'main' into mobile-preview-video 2024-08-28 14:45:34 +05:30
Prateek Sunal
5c760f8384 fix: chunk and upload video code 2024-08-15 00:36:29 +05:30
Prateek Sunal
f1b7deb706 Merge branch 'mobile-preview-video' of https://github.com/ente-io/ente into mobile-preview-video 2024-08-13 04:38:33 +05:30
Prateek Sunal
b7e60297a0 fix: support for 3.24 as well as add button to cache preview 2024-08-13 04:36:01 +05:30
Prateek Sunal
4456797e90 chore: update to full gpl ffmpeg kit 2024-08-13 02:59:45 +05:30
Prateek Sunal
0e5942446d Merge remote-tracking branch 'origin/clip_face_v2' into mobile-preview-video 2024-08-13 02:24:59 +05:30
Prateek Sunal
6918987ffe Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-08-05 21:27:46 +05:30
Prateek Sunal
9130e86460 feat(mobile): add preview video store 2024-08-05 03:57:16 +05:30
Prateek Sunal
b2d2f0d76d feat(mobile): init preview video branch 2024-07-26 19:52:12 +05:30
585 changed files with 23116 additions and 12375 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:
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:

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

@@ -1,24 +1,19 @@
Ente Auth helps you generate and store 2 step verification (2FA)
tokens on your mobile devices.
Ente Auth helps you generate and store 2 step verification (2FA) tokens on your mobile devices.
FEATURES
- Secure Backups
Auth provides end-to-end encrypted cloud backups so that you don't have to worry
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
and preserve your data.
Auth provides end-to-end encrypted cloud backups so that you don't have to worry about losing your tokens. We use the same protocols Ente Photos uses to encrypt and preserve your data.
- Multi Device Synchronization
Auth will automatically sync the 2FA tokens you add to your account, across all
your devices. Every new device you sign into will have access to these tokens.
Auth will automatically sync the 2FA tokens you add to your account, across all your devices. Every new device you sign into will have access to these tokens.
- Web access
You can access your 2FA code from any web browser by visiting https://auth.ente.io .
- Offline Mode
Auth generates 2FA tokens offline, so your network connectivity will not get in
the way of your workflow.
Auth generates 2FA tokens offline, so your network connectivity will not get in the way of your workflow.
- Import and Export Tokens
You can add tokens to Auth by one of the following methods:
@@ -30,8 +25,7 @@ otpauth://totp/provider.com:you@email.com?secret=YOUR_SECRET
The codes maybe separated by new lines or commas.
You can also export the codes you have added to Auth, to an **unencrypted** text
file, that adheres to the above format.
You can also export the codes you have added to Auth, to an **unencrypted** text file, that adheres to the above format.
SUPPORT

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -55,6 +55,14 @@
"title": "AzurWare",
"slug": "azuware"
},
{
"title": "Badlion",
"slug": "badlion",
"altNames": [
"Badlion Client",
"BadlionClient"
]
},
{
"title": "BaiduCloud",
"slug": "baidu_cloud",
@@ -249,9 +257,16 @@
"Crypto com"
]
},
{
"title": "CSAM"
},
{
"title": "CSFloat"
},
{
"title": "CSGORoll",
"slug": "csgoroll"
},
{
"title": "DCS",
"altNames": [
@@ -280,6 +295,9 @@
{
"title": "DMarket"
},
{
"title": "DocuSeal"
},
{
"title": "Doppler"
},
@@ -330,8 +348,7 @@
"title": "Estateguru"
},
{
"title": "Fastmail",
"hex": "0067B9"
"title": "Fastmail"
},
{
"title": "Fidelity",
@@ -343,6 +360,10 @@
{
"title": "Filen"
},
{
"title": "Finanzfluss",
"slug": "finanzfluss"
},
{
"title": "Firefox",
"slug": "mozilla"
@@ -362,6 +383,14 @@
{
"title": "GMX"
},
{
"title": "GommeHD.net",
"slug": "gommehd",
"altNames": [
"GommeHD",
"GommeHDnet"
]
},
{
"title": "Google"
},
@@ -463,6 +492,12 @@
{
"title": "Kagi"
},
{
"title": "Keygen",
"altNames": [
"keygen.sh"
]
},
{
"title": "Kick"
},
@@ -507,6 +542,10 @@
"title": "La Poste",
"slug": "laposte"
},
{
"title": "LabyMod",
"slug": "labymod"
},
{
"title": "Lark",
"slug": "lark",
@@ -622,6 +661,10 @@
"title": "Name.com",
"slug": "name_com"
},
{
"title": "Nextcloud",
"slug": "nextcloud"
},
{
"title": "NeteaseMail",
"slug": "netease_mail",
@@ -647,6 +690,22 @@
"title": "ngrok",
"hex": "858585"
},
{
"title": "NekoHosting",
"slug": "nekohosting",
"altNames": [
"NekoHosting Billing",
"NekoHosting Dashboard"
]
},
{
"title": "NekoHosting Gaming Panel",
"slug": "nekohosting_gp",
"altNames": [
"NekoHosting Game Panel",
"NekoHosting GamePanel"
]
},
{
"title": "Nelnet"
},
@@ -697,6 +756,10 @@
"欧易"
]
},
{
"title": "Parqet",
"slug": "parqet"
},
{
"title": "Parsec"
},
@@ -798,6 +861,9 @@
"Registro.br"
]
},
{
"title": "reMarkable"
},
{
"title": "Restorecord"
},
@@ -880,6 +946,19 @@
"title": "Standard Notes",
"slug": "standardnotes"
},
{
"title": "Starbreeze",
"altNames": [
"Starbreeze Nebula",
"Starbreeze Account",
"PAYDAY",
"PAYDAY 3"
]
},
{
"title": "STRATO",
"hex": "FF8800"
},
{
"title": "Surfshark"
},
@@ -939,15 +1018,18 @@
"title": "Termius",
"hex": "858585"
},
{
"title": "Titan"
},
{
"title": "tianyiyun",
"altNames": [
"天翼云"
]
},
{
"title": "TikTok"
},
{
"title": "Titan"
},
{
"title": "TorGuard"
},
@@ -1043,8 +1125,7 @@
"title": "WHMCS"
},
{
"title": "Windscribe",
"hex": "858585"
"title": "Windscribe"
},
{
"title": "Wise"
@@ -1058,11 +1139,24 @@
"Work OS"
]
},
{
"title": "World Cube Association",
"slug": "wca",
"altNames": [
"WCA",
"worldcubeassociation"
]
},
{
"title": "WYZE"
},
{
"title": "yahoo"
"title": "Xbox",
"hex": "107C10"
},
{
"title": "Yahoo",
"hex": "5F01D2"
},
{
"title": "Yandex",
@@ -1077,6 +1171,9 @@
"altNames": [
"You Need A Budget"
]
},
{
"title": "Zoom"
}
]
}

View File

@@ -0,0 +1,22 @@
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" width="312.4" height="356.75" data-name="Layer 1" version="1.1" viewBox="0 0 312.4 356.75">
<path d="m312.4 254.38v-151.8c0-9.6-5.1-18.4-13.3-23.2l-129.3-75.7c-8.4-4.9-18.8-4.9-27.2 0l-129.3 75.6c-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" fill="#2caddc" />
<g transform="translate(-43.8,-21.525)">
<path d="m208.8 327.5c-0.4-0.8-1.7-4.2-2.8-7.4-1.8-5.3-2-5.6-2.3-3.1-0.1 1.5-0.6 2.7-1 2.7s-0.8 1.6-0.8 3.5c0 4-1 3.5-2.5-1.3l-1-3.3-2.6 5.6-0.5-5c-0.6-6.7-2.2-6.6-4.7 0.3-2.3 6.3-3.4 7.7-4.1 5.2-0.4-1.3-1.3-1.8-3-1.8s-2.6-0.4-3.4-3.3c-1.2-3.9-2-4.2-3.1-1l-0.8 2.3v-2.9c-0.2-2.6-0.3-2.7-1.2-1.3-1 1.5-2.1 2.9-3.2 4.2l-2.2 2.6-0.9-2.4c-0.5-1.3-0.8-2.8-0.9-4.2 0-1.7-0.3-3.4-0.5-5l-0.5-3.2-4.4 4.3-4.4 4.4-0.6-3.9c-0.6-4.3-1.5-4.7-5.5-2.6-1.4 0.7-2.7 1.2-2.8 1s-0.6-1.6-1-3.2c-0.7-2.8-0.9-3-5.8-3.7s-5.1-0.9-5.5-3.5c-0.8-5-3.1-8.7-5.3-8.7s-1.8-0.4-1.5-0.8c0.7-1.1-0.9-1.1-3.1 0-1.7 0.9-1.7 0.8-1.2-3 0.4-3 0.3-4-0.7-4.4-0.7-0.3-3.4-3.2-6-6.5l-5.3-6.6c-0.3-0.3-2.5 0-4.9 0.7s-4.5 1.2-4.7 1 0.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-0.9 1.2-3c1.7-4.1 1-5.3-3-5.3s-3.4-0.3-3.4-0.7 1.3-2.4 2.9-4.6 2.9-4 2.9-4.2-1.2-0.7-2.7-1-2.9-0.8-4.3-1.4c-1.4-0.8-1.3-1.1 1.6-4.1l3.2-3.3-2.7 0.5c-2.7 0.5-3.9-0.7-1.4-1.6 1.9-0.7 1.5-1.8-1.3-2.8-2-0.8-2.5-1.4-2.5-3.5s-0.6-2.9-1.3-3.3c-1.1-0.6-1.1-0.9 0.6-2 1.2-0.8 2.5-1.4 3.8-1.9 1.2-0.3 2-1.4 1.9-2.6 0-1.7-0.5-2-3.1-2.3l-3.1-0.3 2.3-1.2c2.7-1.4 2.9-2.3 0.6-3-2.2-0.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 0.7-0.4 1.3-1.7 1.3-2.8 0-1.3 0.4-2.5 1-3.6 0.8-1.3 0.6-2.1-0.8-4.6-2.5-4.2-2.6-11.8-0.2-12.6 2.6-0.8 2.5-3.9-0.3-6.9l-2.5-2.7 2.6-0.9c2.6-0.9 4.1-3.3 3.1-5-0.3-0.5-0.1-1.9 0.4-3.1 0.6-1.5 1-3.1 1.2-4.8 0.1-1.3 0.4-2.5 0.8-3.8 2.5-6.8 3.2-10.3 2.4-12.4s-0.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-0.6 4.9-1.2 1.7-0.9 2.3-0.8c3.8 0.5 6.5-0.2 7-1.8s0.7-1.6 2-0.4c2.2 2 6.2 1.6 8.5-0.8l2-2.1 1.1 2.1c1.4 2.6 4.4 2.8 7.7 0.4 2-1.5 2.8-1.6 5.6-0.9 1.8 0.5 4.3 1.1 5.6 1.3 1.3 0.3 2.3 1.1 2.3 1.8 0 1.1 3.1 2.9 4.9 2.9 0.3 0 1.3-1.1 2.2-2.5l1.7-2.5 5.2 6.2 8.6-5.4 1.9 1.7c1.8 1.7 2.1 1.7 11.9 0.6 5.5-0.7 11.9-1.2 14.2-1.2 2.9-0.1 5.9-0.5 8.7-1.3 4.7-1.3 5.9-1.1 5.9 0.8s2.4 2.1 6.3 0l3.8-2.1-0.2 2.8c-0.2 2.7-0.1 2.8 3.1 3.1 1.8 0.1 4.4 1 5.7 2 1.5 1.1 4.4 1.9 7.7 2.3 5.3 0.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 0.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-0.4 3.1 1.2 0.9 1.3 1.5 0.6 2.7-1.3 2.4-0.2 6.2 2.2 8.3 2 1.7 2.1 1.9 0.7 3.8-1.8 2.6-1.8 3.7 0.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 0.4-2.8 2.5c-0.2 1.4 0 3 0.3 3.6s0.7 2.1 0.7 3.3 0.7 2.6 1.5 3.1c1.3 0.7 1.1 1-1.3 2.3-1.5 0.8-2.7 2-2.7 2.5 0 0.8-0.2 1.5-0.5 2.2-0.3 0.9 0.2 1.3 1.9 1.6l2.4 0.3-2.3 1.1c-1.3 0.6-2.3 1.4-2.3 1.7s1 1.1 2.3 1.7l2.3 1.2-2.7 0.3c-3.7 0.4-3.9 3.7-0.2 5.2 3.4 1.4 4.8 3.2 3 3.9-0.8 0.3-1.3 1.5-1.3 3s-0.5 2.7-2.3 3.4c-1.3 0.5-2.4 1.1-2.6 1.2s0.6 1 1.7 2l2 1.7-3.3-0.4-3.3-0.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 0.9-3.3 0.9c-4.1 0-4.6 0.8-3 4.7 0.7 1.7 1.3 3.2 1.3 3.3s-1.3 0.7-2.9 1.2c-2.9 1-2.9 1-2.9 5.9s-0.3 5-1.1 5-1.8 0.5-2.6 1.1c-1.4 1-1.4 1.4 0.4 7.5 1 3.5 1.6 6.7 1.4 7s-2.9 0-5.8-0.8l-5.3-1.3-9.6 9.6 1.1 5.2c0.6 2.9 0.9 5.2 0.6 5.2s-1.5-0.6-2.6-1.2c-5.2-2.9-8.2-1-10.1 6.3l-1 4-4.9 0.5c-4.8 0.5-4.9 0.6-5.8 3.9-0.5 1.8-1.1 3.3-1.2 3.3s-1.7-0.6-3.3-1.4-3.2-1.2-3.5-0.9-0.7 3.2-1 6.4-0.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-0.7 1.7-0.7 3.2-0.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 0.5 0.5 5 0.4 5.3-0.7 3.8-0.7-0.9-1.3-1.9-1.3-2.3 0-2-1.5-0.3-2.2 2.5-0.6 2.6-1.2 3.2-3.1 3.4-1.3 0.1-2.8 1-3.5 2-1.1 1.6-1.2 1.6-2 0.2z" fill="#030303" />
<path d="m197.3 280c-1.3-4.3-2.3-4.9-4.4-2.3-0.9 1.2-2.4 2.2-3.3 2.2-1.6 0-2.3-1.2-5.1-8.3l-0.8-2.1-1.3 3.1c-1.6 4-3.3 3.3-4.1-1.6l-0.6-3.8-3.6 4.6-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-0.8-2.7-1.9l-1.8-1.9 8.2-10.8-7.8-1.6 8.2-4.4-4.4-2.3c-4.7-2.5-5.6-4.8-2.9-7.5 1.3-1.3 1.3-1.5-0.2-3-1.4-1.6-1.4-1.7 0-3.3 1.3-1.5 1.3-1.8 0.2-3-2.4-2.4-1.6-4.5 2.9-7.3l4.3-2.7-8-4.2 3.9-0.8 3.9-0.7-8.4-10.8 3.8-4 22.2 22.2v12.8l1.8-0.3c1.1-0.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 0.7 0.2 2 0.3 2 0.3s0.2-2.3 0.2-6.2v-6.6l10-10c7.7-7.7 10.3-9.8 11-9 1.1 1.1 1.2 0.9-4.5 7.9l-3.2 3.9 8.6 1.2-8.8 4.6 4.7 2.7c2.6 1.4 4.7 3.2 4.7 3.8s-0.7 2.1-1.8 3.3l-1.8 2.2 2.2 1c2 0.9 2.9 2.3 1.5 2.4-0.3 0-1.3 0.6-2.2 1.2-1.5 1.1-1.4 1.3 0.3 2.9 2.6 2.6 1.8 4.3-3.3 7l-4.5 2.4 8.8 4.6-3.9 0.6c-2.2 0.3-3.9 0.8-3.9 1s1.7 2.6 3.7 5.3c2.1 2.7 3.8 5.2 3.7 5.6 0 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-35.4 20.4-4-4.6v2.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.9-3 7.2-3.3 7.6-1.7-0.3-2.9-1.5c-1.3-1.3-2.3-2.1-2.4-2s-0.8 1.3-1.4 2.6l-1.3 2.3-0.8-3.6zm-7.9-22.4 9.7-2.7 11.2 2.7c5.8 1.5 10.7 2 10.9 1.8 0.9-0.9-1.2-2-6.5-3.3-3-0.8-7.4-1.9-9.9-2.7l-4.4-1.7 0.3-8.8 0.2-9.3 12.4-7.8c6.8-4.3 12.6-7.9 12.9-8.2s-11.6-0.5-26.4-0.5-26.8 0.3-26.8 0.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-0.5 1.3-0.7 1.8 11.2-1.3zm-1.4-74.9v-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.8s0.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-0.3 4.5-1.8 6.4-3.4 2.6-2.1 3.9-2.7 5.4-2.4 1.9 0.5 3.2-0.5 8.3-6.9l1.5-1.9 10.8 8.6 1.8-8.2 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.6s0.5 1.6 1.1 2.3c1 1.4 1.3 1.4 4.1-0.3l3-1.8 5.4 10 4.4-8.6 0.6 4c0.3 2.2 0.8 4 0.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 0.6 5.4 2.5 1.6 1.6 3.8 2.8 5.8 3.1 2.8 0.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-0.3-4.8-0.7-4.8s-8.9 1.3-19.1 3l-18.8 3.3v4.8l-12.4 0.3c-6.7 0.3-11.8 0-13.3 0z" fill="#feb730" />
<circle cx="188.4" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="181.7" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="175" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="181.7" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="188.4" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="175" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="181.7" cy="250.1" r="1.7" fill="#71470d" />
<circle cx="208.5" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="215.1" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="221.8" cy="236.7" r="1.7" fill="#71470d" />
<circle cx="208.5" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="215.1" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="221.8" cy="243.4" r="1.7" fill="#71470d" />
<circle cx="215.1" cy="250.1" r="1.7" fill="#71470d" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

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

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 2.1 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 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g stroke-width=".047"><path fill="#aa968c" d="M23.625 11.625c0 6.006-5.205 11.25-11.625 11.25S.375 17.631.375 11.625 5.58 1.125 12 1.125s11.625 4.494 11.625 10.5z"/><path fill="#aa968c" d="M12 1.125C5.58 1.125.375 5.619.375 11.625c0 1.155.194 2.28.55 3.347a6.546 6.546 0 0 0 5.263 2.653A6.558 6.558 0 0 0 12 14.103a6.558 6.558 0 0 0 5.813 3.522 6.546 6.546 0 0 0 5.262-2.653c.356-1.067.55-2.192.55-3.347 0-6.006-5.205-10.5-11.625-10.5z"/><path fill="#c8af9b" d="M18.375 16.5A6.375 6.375 0 0 1 12 22.875 6.375 6.375 0 0 1 5.625 16.5 6.375 6.375 0 0 1 12 10.125a6.375 6.375 0 0 1 6.375 6.375z"/></g><g fill="#464655" stroke-width=".047"><path d="M7.5 9.563a1.313 1.313 0 0 1-1.313 1.312 1.313 1.313 0 0 1-1.312-1.313A1.313 1.313 0 0 1 6.188 8.25 1.313 1.313 0 0 1 7.5 9.563zM19.125 9.563a1.313 1.313 0 0 1-1.313 1.312A1.313 1.313 0 0 1 16.5 9.562a1.313 1.313 0 0 1 1.313-1.312 1.313 1.313 0 0 1 1.312 1.313zM12.654 13.337c-.36.503-.948.503-1.308 0l-.567-.794c-.36-.504-.148-.916.471-.916h1.5c.619 0 .83.412.471.916z"/></g><path fill="#aa968c" d="M16.451 18.75c-1.61 0-2.435-2.25-4.457-2.25s-2.848 2.25-4.457 2.25c-.722 0-1.363-.274-1.883-1.181.514 3.01 3.153 5.306 6.34 5.306s5.826-2.295 6.34-5.306c-.52.907-1.16 1.181-1.883 1.181z"/><g fill="#8c7873" stroke-width=".047"><path d="M1.5 19.875a.375.375 0 0 1-.14-.723l7.501-3a.375.375 0 1 1 .278.697l-7.5 3a.375.375 0 0 1-.139.026zM.75 17.625a.375.375 0 0 1-.096-.738l7.125-1.875a.375.375 0 1 1 .192.726L.846 17.613a.377.377 0 0 1-.096.012zM.375 15.75a.375.375 0 0 1-.065-.744l6.375-1.125a.375.375 0 0 1 .13.738L.44 15.744a.385.385 0 0 1-.065.006zM22.5 19.875a.375.375 0 0 0 .14-.723l-7.501-3a.375.375 0 0 0-.278.697l7.5 3a.375.375 0 0 0 .139.026zM23.25 17.625a.375.375 0 0 0 .095-.738l-7.125-1.875a.375.375 0 1 0-.19.726l7.124 1.875a.378.378 0 0 0 .096.012zM23.625 15.75a.375.375 0 0 0 .065-.744l-6.375-1.125a.375.375 0 0 0-.13.738l6.374 1.125a.386.386 0 0 0 .066.006z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" width="474.2" height="474.2" version="1.1" viewBox="0 0 474.2 474.2" xml:space="preserve">
<g transform="translate(-20.412 -2.725)">
<circle transform="matrix(.7071 -.7071 .7071 .7071 -94.131 252.34)" cx="257.5" cy="239.8" r="237.1" fill="#4D6BDD" />
<path d="m350.6 211.4c-8.9-9.6-12.2-30.5-12.2-30.5l-2.6-12s-3.1-11.3-5.4-14.6c-1-2.6-2.8-9.7 3.5-16.9 0 0 6.3-8.1-2.8-14.6 0 0-10-8.3-17.2 1.2 0 0-6.7 12.3-16.4 10.4-2.6-0.7-4.3-1-4.3-1s-21.7-4.2-35.7-4.3c-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.4-7.2-9.6-17.2-1.2-17.2-1.2-9.2 6.6-2.8 14.6-2.8 14.6 6.3 7.2 4.5 14.4 3.5 16.9-2.3 3.4-5.4 14.6-5.4 14.6l-2.6 12s-3.3 20.8-12.2 30.5c0 0-60.2 54.1-19.4 109.4 0 0 26.8 31.8 71 7.2 0 0 20.6-11.4 41.5-11.5 20.8 0 41.5 11.5 41.5 11.5 44.2 24.6 70.9-7.2 70.9-7.2 40.9-55.3-19.3-109.4-19.3-109.4zm-132.8 45.8c-4.2 5.6-14.6 5-23.2-1.4s-12.2-16.2-8-21.8 14.6-5 23.2 1.4 12.2 16.2 8 21.8zm7-60.5c-7.6 0-13.8-7.1-13.8-12.4h11.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.4 7.6 0 13.8 6.7 13.8 14.3 0.1 7.7-6.1 14.4-13.8 14.4zm51.6-12.4h11.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.4 7.6 0 13.8 6 13.8 13.6s-6.2 15.2-13.8 15.2-13.8-7.2-13.8-12.5zm44.1 70.1c-8.6 6.4-19 7-23.2 1.4-4.2-5.7-0.6-15.4 8-21.8s19-7 23.2-1.4 0.7 15.4-8 21.8z" fill="#FFF" />
<path d="m257.6 331.6c-27.6 0-39.9 15.3-39.9 15.3s-12.4 13.4 39.9 13.4 39.9-13.4 39.9-13.4-12.3-15.3-39.9-15.3z" fill="#FFF" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 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,19 @@
<svg width="100%" height="100%" viewBox="0 0 113 113" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-1298.97,-1016.72)">
<g transform="matrix(0.5,0,0,0.5,736.463,641.721)">
<g transform="matrix(0.834925,0,0,0.834925,161.667,288.323)">
<circle cx="1198.72" cy="777.527" r="44.914" style="fill:#000811;"/>
</g>
</g>
<g transform="matrix(0.5,0,0,0.5,736.463,641.721)">
<g transform="matrix(0.834925,0,0,0.834925,311.66,138.323)">
<circle cx="1198.72" cy="777.527" r="44.914" style="fill:#000811;"/>
</g>
</g>
<g transform="matrix(0.5,0,0,0.5,736.463,641.721)">
<g transform="matrix(1,0,0,1,281.792,137.715)">
<path d="M955.708,762.285C935.011,762.285 918.208,745.482 918.208,724.785C918.208,704.088 935.011,687.285 955.708,687.285C976.405,687.285 993.208,704.088 993.208,724.785C993.208,745.482 1010.01,762.285 1030.71,762.285C1051.4,762.285 1068.21,779.088 1068.21,799.785C1068.21,820.482 1051.4,837.285 1030.71,837.285C1010.01,837.285 993.208,820.482 993.208,799.785C993.208,779.088 976.405,762.285 955.708,762.285Z" style="fill:#000811;"/>
</g>
</g>
</g>
</svg>

After

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

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

View File

@@ -1,30 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 943.11 911.62"><script xmlns=""/>
<defs>
<style>
.cls-1 {
fill: #fff;
}
.cls-2 {
fill: #37474f;
}
.cls-3 {
fill: #46509e;
}
</style>
</defs>
<ellipse class="cls-3" cx="471.56" cy="454.28" rx="471.56" ry="454.28"/>
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 943.11 911.62"><script />
<ellipse cx="471.56" cy="454.28" rx="471.56" ry="454.28" fill="#46509e" />
<g>
<g>
<ellipse class="cls-2" cx="471.56" cy="390.28" rx="233.66" ry="207"/>
<path class="cls-2" d="m705.22,848.95c-36.69,21.14-123.09,64.33-240.64,62.57-109.54-1.63-190.04-41.45-226.68-62.57v-454.19h467.33v454.19Z"/>
<ellipse cx="471.56" cy="390.28" rx="233.66" ry="207" fill="#37474f" />
<path d="m705.22,848.95c-36.69,21.14-123.09,64.33-240.64,62.57-109.54-1.63-190.04-41.45-226.68-62.57v-454.19h467.33v454.19Z" fill="#37474f" />
</g>
<path class="cls-1" d="m658.81,397.7v475.8c-36.98,15.7-98.93,36.54-177.98,38.04-88.67,1.69-157.75-21.73-196.2-38.04v-475.8c0-95.55,83.77-173.02,187.09-173.02s187.09,77.47,187.09,173.02Z"/>
<polygon class="cls-3" points="565.02 431.68 471.56 514.49 378.09 431.68 565.02 431.68"/>
<ellipse class="cls-2" cx="378.09" cy="369.58" rx="23.37" ry="20.7"/>
<ellipse class="cls-2" cx="565.02" cy="369.58" rx="23.37" ry="20.7"/>
<path class="cls-2" d="m658.49,400.63c0-40.04-36.59-72.45-81.78-72.45s-81.78,32.41-81.78,72.45c0,11.14,2.81,21.65,7.9,31.05h-62.54c5.1-9.4,7.9-19.91,7.9-31.05,0-40.04-36.59-72.45-81.78-72.45s-81.78,32.41-81.78,72.45l-46.73-10.35c0-114.32,104.63-207,233.66-207s233.66,92.69,233.66,207l-46.73,10.35Z"/>
<path d="m658.81,397.7v475.8c-36.98,15.7-98.93,36.54-177.98,38.04-88.67,1.69-157.75-21.73-196.2-38.04v-475.8c0-95.55,83.77-173.02,187.09-173.02s187.09,77.47,187.09,173.02Z" fill="#fff" />
<polygon points="565.02 431.68 471.56 514.49 378.09 431.68 565.02 431.68" fill="#46509e" />
<ellipse cx="378.09" cy="369.58" rx="23.37" ry="20.7" fill="#37474f" />
<ellipse cx="565.02" cy="369.58" rx="23.37" ry="20.7" fill="#37474f" />
<path d="m658.49,400.63c0-40.04-36.59-72.45-81.78-72.45s-81.78,32.41-81.78,72.45c0,11.14,2.81,21.65,7.9,31.05h-62.54c5.1-9.4,7.9-19.91,7.9-31.05,0-40.04-36.59-72.45-81.78-72.45s-81.78,32.41-81.78,72.45l-46.73-10.35c0-114.32,104.63-207,233.66-207s233.66,92.69,233.66,207l-46.73,10.35Z" fill="#37474f" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 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,16 @@
<?xml version='1.0' encoding='utf-8'?>
<svg xmlns="http://www.w3.org/2000/svg" id="Lager_1" data-name="Lager 1" viewBox="0 0 189.11 188.93">
<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)" fill="#000" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
<path 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)" fill="#fff" />
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.143 8.572c0-.947-.768-1.715-1.714-1.715H1.715C.768 6.857 0 7.625 0 8.572v13.714C0 23.232.768 24 1.715 24h13.714c.946 0 1.714-.768 1.714-1.714V8.572M12 3.429A3.429 3.429 0 0 1 8.573 0h12A3.428 3.428 0 0 1 24 3.43v12A3.429 3.429 0 0 1 20.572 12V5.143c0-.946-.767-1.714-1.714-1.714H12"/></svg>

After

Width:  |  Height:  |  Size: 363 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#25f4ee" d="M9.844 20.069a3.323 3.323 0 0 0 2.295-.945c.616-.6.98-1.418 1.018-2.282l.008-15.815h2.843L16 .992A5.541 5.541 0 0 1 15.913 0h-3.92v15.846a3.342 3.342 0 0 1-.465 1.59 3.3 3.3 0 0 1-1.17 1.165 3.26 3.26 0 0 1-3.18.062c.302.43.702.782 1.166 1.027.463.244.978.374 1.5.379zM21.355 6.442v-.944a5.373 5.373 0 0 1-2.97-.896c.765.883 1.797 1.577 2.97 1.84z"/><g fill="#fe2c55" stroke-width="2"><path d="M18.386 4.602a5.507 5.507 0 0 1-1.34-3.606h-1.075c.14.734.427 1.432.842 2.052.415.62.95 1.149 1.573 1.554zM8.703 12.359a3.278 3.278 0 0 0-2.05.704c-.584.46-.999 1.107-1.175 1.835a3.362 3.362 0 0 0 .204 2.177 3.317 3.317 0 0 0 1.495 1.58 3.334 3.334 0 0 1-.013-3.89 3.28 3.28 0 0 1 1.633-1.21 3.247 3.247 0 0 1 2.025-.009V9.51a7.175 7.175 0 0 0-.971-.071h-.197v3.049a3.004 3.004 0 0 0-.951-.13z"/><path d="M21.355 6.375h-.021l-.01 3.044a9.23 9.23 0 0 1-5.437-1.781v8.08a7.34 7.34 0 0 1-1.054 3.755 7.241 7.241 0 0 1-2.822 2.667 7.151 7.151 0 0 1-7.432-.463 7.183 7.183 0 0 0 3.678 2.142 7.132 7.132 0 0 0 4.233-.323 7.212 7.212 0 0 0 3.316-2.676 7.324 7.324 0 0 0 1.248-4.099V8.678a9.254 9.254 0 0 0 5.446 1.768V6.498c-.385 0-.769-.041-1.146-.123z"/></g><path d="M15.913 15.714V7.68a9.249 9.249 0 0 0 5.446 1.768V6.375a5.444 5.444 0 0 1-2.973-1.773c-.62-.407-1.15-.936-1.56-1.556s-.692-1.318-.828-2.05h-2.863V16.84a3.338 3.338 0 0 1-.681 1.907c-.418.548-.996.95-1.652 1.15-.656.2-1.358.188-2.007-.035a3.287 3.287 0 0 1-1.611-1.208 3.309 3.309 0 0 1-1.473-1.577 3.353 3.353 0 0 1-.196-2.16 3.326 3.326 0 0 1 1.165-1.822 3.268 3.268 0 0 1 2.03-.707c.329.001.656.053.97.154v-3.1a7.149 7.149 0 0 0-3.884 1.259A7.255 7.255 0 0 0 3.21 13.89c-.539 1.292-.696 2.714-.453 4.095s.876 2.66 1.823 3.686a7.138 7.138 0 0 0 7.457.497 7.227 7.227 0 0 0 2.831-2.679 7.325 7.325 0 0 0 1.044-3.775z"/><path fill="#25f4ee" d="M9.674 9.484v-.976a7.14 7.14 0 0 0-4.62.934 7.253 7.253 0 0 0-3.059 3.62 7.341 7.341 0 0 0-.186 4.757 7.268 7.268 0 0 0 2.765 3.853l-.1-.11a7.31 7.31 0 0 1-1.704-3.678c-.212-1.364-.034-2.76.51-4.027s1.437-2.35 2.569-3.124a7.157 7.157 0 0 1 3.825-1.249z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,5 +1 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<g style="mix-blend-mode:difference">
<path d="M234.915 0C79.5084 0 12.429 138.162 12.429 138.162L32.1744 152.281C32.1744 152.281 7.3264 199.477 8.01401 260.013C8.01401 383.59 106.503 500 251.486 500C383.198 500 492 392.923 492 260.317C492 87.3677 357.722 0 234.916 0H234.915ZM236.263 42.1591C357.682 42.1591 451.9 139.886 451.9 253.497C451.9 373.933 361.21 457.689 255.53 457.689C177.753 457.689 107.59 398.53 107.59 317.419C107.59 270.572 132.52 237.911 160.456 220.504L164.544 224.935C156.899 230.91 135.1 265.885 135.1 300.261C135.1 364.077 185.205 408.275 248.333 408.275C328.747 408.275 382.377 339.771 382.377 260.231C382.377 167.686 300.59 89.1181 202.165 89.1181C147.726 89.1181 101.521 112.502 74.9709 133.145L70.8393 129.41C105.574 75.9175 165.725 42.1591 236.263 42.1591ZM200.034 130.691C262.843 130.691 324.165 172.193 339.471 231.103L333.904 233.21C306.421 196.961 261.388 166.92 208.21 166.92C110.357 166.92 58.9672 255.732 66.5114 329.908L60.749 332.016C60.749 332.016 49.9411 308.197 49.9411 279.952C49.9411 198.161 117.19 130.691 200.034 130.691ZM241.548 233.34C271.284 233.34 295.066 257.414 295.066 285.991C295.066 309.639 279.864 323.654 279.864 323.654L297.87 336.229C297.87 336.229 280.015 364.227 243.57 364.227C208.707 364.227 177.875 336.122 177.875 298.327C177.875 259.384 211.412 233.34 241.548 233.34Z" fill="white"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M23.561 11.988C23.301-.304 6.954-4.89.656 6.634c.282.206.661.477.943.672a11.747 11.747 0 0 0-.976 3.067 11.885 11.885 0 0 0-.184 2.071C.439 18.818 5.621 24 12.005 24c6.385 0 11.556-5.17 11.556-11.556v-.455zm-20.27 2.06c-.152 1.246-.054 1.636-.054 1.788l-.282.098c-.108-.206-.37-.932-.488-1.908C2.163 10.308 4.7 6.96 8.57 6.33c3.544-.52 6.937 1.68 7.728 4.758l-.282.098c-.087-.087-.228-.336-.77-.878-4.281-4.281-11.002-2.32-11.956 3.74zm11.002 2.081a3.145 3.145 0 0 1-2.59 1.355 3.15 3.15 0 0 1-3.155-3.155 3.159 3.159 0 0 1 2.927-3.144c1.018-.043 1.972.51 2.416 1.398a2.58 2.58 0 0 1-.455 2.95c.293.205.575.4.856.595zm6.58.12c-1.669 3.782-5.106 5.766-8.77 5.712-7.034-.347-9.083-8.466-4.38-11.393l.207.206c-.076.108-.358.325-.791 1.182-.51 1.041-.672 2.081-.607 2.732.369 5.67 8.314 6.83 11.045 1.214C21.057 8.217 11.822.401 3.626 6.374l-.184-.184C5.599 2.808 9.816 1.3 13.837 2.309c6.147 1.55 9.453 7.956 7.035 13.94z"/></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 996 B

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="256"
height="256"
id="svg2"
sodipodi:version="0.32"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="WCA Logo Only Positive Primary.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.0"
xml:space="preserve"
inkscape:export-filename="WCA Logo Only Negative Primary.png"
inkscape:export-xdpi="1536"
inkscape:export-ydpi="1536"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"><defs
id="defs4"><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 488.98764 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 488.98764 : 1"
inkscape:persp3d-origin="372.04724 : 313.59394 : 1"
id="perspective10" /><inkscape:perspective
id="perspective2708"
inkscape:persp3d-origin="0.5 : -36.860118 : 1"
inkscape:vp_z="1 : -36.693451 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : -36.693451 : 1"
sodipodi:type="inkscape:persp3d" /></defs><sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="210"
inkscape:cy="265.125"
inkscape:document-units="px"
inkscape:current-layer="g3312"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="-8"
inkscape:window-y="1432"
inkscape:showpageshadow="2"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:window-maximized="1" /><metadata
id="metadata7"><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><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-440.9061,488.30753)"><g
id="g3312"
transform="matrix(0.499989,0,0,0.499989,301.618,-244.854)"><g
id="g4"
transform="matrix(1.0018562,0,0,1,-0.51713006,0)"><path
style="fill:#ddda45;stroke-width:0.873144"
d="m 536.25328,-428.58851 c -0.021,-19.97227 -0.0227,-27.82159 -5e-4,-58.32991 105.40638,-0.17805 182.31227,64.21817 218.15501,126.42486 -45.15016,26.27039 -50.10755,29.12785 -50.10755,29.12785 -33.11708,-56.63926 -96.17928,-96.54551 -168.04696,-97.2228 z"
id="path8"
sodipodi:nodetypes="ccccc" /><path
style="fill:#ddda45;stroke-width:0.873144"
d="m 366.2197,-133.72782 0.0151,-192.06002 166.02237,95.88619 -0.17907,191.155551 C 476.51709,-69.927771 366.2197,-133.72782 366.2197,-133.72782 Z"
id="path2730" /><path
sodipodi:nodetypes="ccccc"
style="fill:#e7762a;stroke-width:0.873144"
d="m 706.37054,-133.96383 c 36.2716,-65.47593 30.50843,-138.95072 -0.0298,-193.85497 0.39613,-1.03249 33.46343,-19.33855 50.10377,-29.13739 51.21862,93.81548 36.51984,189.21677 0.1421,252.07328 -20.3537,-11.42655 -31.0669,-17.78432 -50.21605,-29.08092 z"
id="path2726" /><path
style="fill:#e02826;stroke-width:0.873144"
d="m 311.34759,-356.46181 50.35175,28.2771 c -35.18504,70.65751 -31.88557,124.21147 -0.28702,194.132 l -50.13488,28.72384 c -50.42479,-90.8489 -36.1234,-187.14573 0.0702,-251.13294 z"
id="path4" /><path
style="fill:#e02826;stroke-width:0.873144"
d="m 536.2423,-229.90781 c 56.13671,-32.73903 165.61719,-95.11799 165.61719,-95.11799 -0.67575,128.21382 0.0532,8.15816 -0.21804,191.35217 -54.38973,32.37299 -105.23267,61.003461 -165.50176,94.927531 -0.31544,-40.223801 0.10261,-46.61912 0.10261,-191.161711 z"
id="path2724"
sodipodi:nodetypes="ccccc" /><path
sodipodi:nodetypes="ccccc"
style="fill:#3d9c46;stroke-width:0.873144"
d="m 313.7727,-360.67732 c 38.71037,-70.10178 124.6252,-126.43919 218.12075,-126.24058 v 58.32974 c -79.9296,2.84524 -135.21709,43.39695 -168.14346,96.87297 -19.03513,-11.01192 -28.32282,-16.47474 -49.97729,-28.96213 z"
id="path2722" /><path
id="path2802"
d="m 363.46745,-130.48995 c 36.87186,61.386523 101.90167,96.576564 168.55822,97.399755 l 0.0525,58.183687 C 444.56118,25.630318 359.24663,-22.728811 313.43202,-101.575 Z"
style="fill:#eeeeec;stroke-width:0.873144"
sodipodi:nodetypes="ccccc" /><path
style="fill:#304a96;stroke-width:0.873144"
d="m 368.78398,-329.03858 165.28088,-95.18971 165.54442,95.6062 -165.35954,95.09314 z"
id="path5" /><path
style="fill:#304a96;stroke-width:0.873144"
d="m 536.25206,25.093492 c -0.14995,-22.2466531 -0.26346,-38.397197 -0.11279,-58.184006 78.82367,0.02164 144.07151,-53.088696 168.10562,-97.178966 21.6542,12.49748 29.7479,17.20359 50.23519,29.02341 C 683.82068,20.035204 554.37926,25.093492 536.25206,25.093492 Z"
id="path2720"
sodipodi:nodetypes="ccccc" /><path
style="fill:#ffffff;fill-opacity:1;stroke-width:0.873144"
d="m 494.47153,-109.23902 c 0,-11.24557 -0.16402,-13.10126 -1.27163,-14.3936 -0.69937,-0.81604 -15.49557,-9.23821 -32.88042,-18.71602 -34.42705,-18.76883 -37.64764,-20.6942 -42.21281,-25.23604 -5.5503,-5.52185 -5.57501,-5.66443 -5.85792,-33.80463 -0.24306,-24.17526 -0.20649,-24.97725 1.18835,-25.9983 2.91343,-2.13292 2.42236,-2.36343 44.5433,20.90507 36.85908,20.36163 34.92959,19.39131 35.80541,18.00702 0.36489,-0.57671 0.66848,-6.81646 0.67461,-13.86596 0.0107,-11.18148 -0.15111,-13.00198 -1.26052,-14.2642 -1.48226,-1.68665 -69.35219,-39.35146 -74.69152,-41.4505 -12.36338,-4.86053 -20.15829,-2.79877 -24.22969,6.40879 -2.51248,5.68199 -2.97922,11.7884 -2.97114,38.87079 0.0107,35.38896 1.46043,44.78242 8.86025,57.4045 3.60238,6.14475 13.57792,16.31539 20.27503,20.67168 2.64641,1.7214 19.97676,11.39689 38.51189,21.50099 24.61856,13.4204 33.94498,18.168905 34.60851,17.620833 0.66439,-0.548858 0.9083,-4.216849 0.9083,-13.660423 z"
id="path7" /><path
style="fill:#ffffff;fill-opacity:1;stroke-width:0.873144"
d="m 505.09984,-276.94542 c 1.62571,-0.8294 3.4446,-2.26258 4.04199,-3.18479 0.59738,-0.92222 6.23639,-11.5682 12.53121,-23.65766 6.29474,-12.08947 11.67266,-21.98079 11.95089,-21.98079 0.2782,0 5.72494,10.1654 12.10386,22.58972 7.96677,15.51716 12.33445,23.24274 13.95007,24.67522 4.82285,4.27605 13.93275,4.70162 19.40752,0.90658 2.71831,-1.88433 4.51003,-5.1519 23.16429,-42.24514 11.11996,-22.11158 20.04063,-40.66537 19.82372,-41.23064 -0.31784,-0.82827 -2.69013,-1.0256 -12.22507,-1.0166 -6.5069,0.009 -12.20035,0.25138 -12.65217,0.54501 -0.45185,0.29355 -6.76874,12.43017 -14.03759,26.97002 -7.35167,14.70566 -13.48862,26.15206 -13.83028,25.79573 -0.33785,-0.35232 -5.59609,-10.28669 -11.68508,-22.0764 -6.089,-11.78971 -11.88326,-22.53418 -12.87619,-23.87655 -4.87781,-6.5946 -16.58774,-6.78809 -21.98661,-0.36323 -0.98258,1.16931 -7.01834,12.16665 -13.41277,24.43842 -6.39441,12.27186 -11.80174,22.31573 -12.01628,22.31983 -0.21457,0.009 -6.08797,-11.51895 -13.05211,-25.60669 -6.9641,-14.08774 -13.13378,-26.18628 -13.71036,-26.88567 -0.91743,-1.11282 -2.46328,-1.27016 -12.38026,-1.26047 -6.23258,0.009 -11.79127,0.30193 -12.35263,0.6573 -1.12002,0.70908 4.58354,13.16491 26.31245,57.46273 11.69014,23.83212 13.1777,26.0988 18.40631,28.04573 3.75182,1.39712 10.7486,0.90493 14.52509,-1.02166 z"
id="path6" /><path
id="path2"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.873144"
d="m 631.01971,-246.39217 c -0.47323,0.0208 -0.97529,0.0984 -1.52122,0.21829 -2.82269,0.61994 -7.13602,4.93796 -9.07953,9.08636 -0.83468,1.78164 -8.7296,23.67679 -17.54171,48.65496 -8.81211,24.97818 -19.81733,56.13532 -24.45539,69.2391 -4.63806,13.10378 -8.22951,24.152572 -7.98126,24.554305 0.44123,0.713882 6.65438,-2.39945 15.95229,-7.994895 l 4.35899,-2.6229 6.53849,-18.88216 6.5419,-18.87874 23.23432,-12.89962 c 12.78056,-7.09376 23.46988,-12.89621 23.75277,-12.89621 0.28285,0 2.86467,4.26279 5.73695,9.47518 2.87232,5.21241 5.79232,10.17904 6.48733,11.03733 l 1.262,1.56215 8.26776,-4.69325 c 4.54677,-2.58163 8.36975,-5.23035 8.49629,-5.88704 0.12637,-0.65668 -7.09396,-15.03901 -16.04438,-31.95912 -8.95039,-16.92012 -19.15933,-36.26049 -22.68859,-42.97941 -6.07668,-11.5688 -8.00443,-14.27992 -11.31701,-14.13433 z m -3.31189,35.64962 c 1.02361,0.32811 12.91735,22.28651 12.46645,23.01602 -0.40514,0.65556 -22.03366,12.56041 -24.52019,13.49651 -0.98208,0.36969 0.12893,-3.59332 5.0855,-18.12154 3.48879,-10.22634 6.62422,-18.50118 6.96824,-18.39099 z" /></g><g
id="g4-1"
transform="matrix(1.7463512,0,0,1.7463512,829.98941,-617.46454)"
style="stroke:#ffffff;stroke-opacity:1"><g
id="g2-7"
transform="matrix(0.12458447,0,0,0.12458447,-46.754768,344.21344)"
style="stroke:#ffffff;stroke-opacity:1"><g
id="g3-6"
transform="translate(-93.696521,-2082.5864)"
style="stroke:#ffffff;stroke-opacity:1"><path
id="circle1-2"
style="fill:none;stroke-width:20"
d="m 176.38791,2073.0198 a 88.5,88.5 0 0 1 -88.500001,88.5 88.5,88.5 0 0 1 -88.50000006,-88.5 88.5,88.5 0 0 1 88.50000006,-88.5 88.5,88.5 0 0 1 88.500001,88.5 z" /><path
d="m 82.487909,2065.0198 c 5.500001,0 9.500001,-1.1 11.900001,-3.2 2.4,-2 3.7,-5.4 3.7,-10.2 0,-4.7 -1.3,-8 -3.7,-10.1 -2.4,-2 -6.4,-3 -11.900001,-3 h -11.2 v 26.5 h 11.2 m -11.2,18.3 v 39 H 44.687911 v -103.1 h 40.599998 c 13.600001,0 23.500001,2.3 29.800001,6.9 6.4,4.5 9.5,11.7 9.5,21.6 0,6.8 -1.6,12.4 -4.9,16.8 -3.3,4.3 -8.2,7.6 -14.9,9.6 3.7,0.9 6.9,2.8 9.8,5.7 2.9,2.9 5.8,7.3 8.7,13.3 l 14.5,29.2 h -28.3 l -12.6,-25.6 c -2.5,-5.1 -5.1,-8.7 -7.7,-10.5 -2.600001,-1.9 -6.100001,-2.9 -10.400001,-2.9 h -7.5"
id="path1-5"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.00334;stroke-dasharray:none;stroke-opacity:1" /></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,15 +1 @@
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_191_1078)">
<g style="mix-blend-mode:difference">
<path d="M261.198 1.60387L416.423 70.2759C420.678 72.1581 424.082 75.5557 425.971 79.8079L498.384 242.732C499.414 245.05 499.963 247.552 499.998 250.089C500.033 252.625 499.553 255.142 498.587 257.487L432.481 418.019C430.609 422.563 427.028 426.191 422.508 428.122L257.746 498.494C255.471 499.465 253.026 499.977 250.552 500C248.078 500.022 245.624 499.555 243.332 498.625L84.66 434.251C80.1712 432.43 76.5614 428.942 74.587 424.519L1.628 261.068C0.585027 258.731 0.0312788 256.206 0.000838817 253.648C-0.0296012 251.089 0.463911 248.551 1.451 246.191L71.265 79.2509C72.2146 76.9794 73.6024 74.9172 75.3491 73.1822C77.0958 71.4472 79.1672 70.0732 81.445 69.1389L246.493 1.40487C248.831 0.444804 251.339 -0.0324825 253.866 0.00171599C256.393 0.0359145 258.887 0.580891 261.198 1.60387ZM253.336 39.1309L102.865 100.883L39.175 253.184L105.754 402.34L250.196 460.942L400.726 396.649L460.856 250.63L394.639 101.645L253.336 39.1329V39.1309Z" fill="white"/>
</g>
<g style="mix-blend-mode:difference">
<path d="M168.865 308.963L237.36 243.644C244.618 236.723 256.037 236.738 263.276 243.679L332.104 309.671V168.751C332.104 158.402 340.504 150.001 350.854 150.001C361.201 150.001 369.604 158.402 369.604 168.751V329.907C369.604 340.262 361.208 348.657 350.854 348.657H326.115C321.279 348.656 316.629 346.788 313.138 343.441L250.264 283.156L187.012 343.476C183.525 346.802 178.891 348.657 174.072 348.657H150.115C139.76 348.657 131.365 340.262 131.365 329.907V168.751C131.365 158.402 139.767 150.001 150.115 150.001C160.464 150.001 168.865 158.402 168.865 168.751V308.963Z" fill="white"/>
</g>
</g>
<defs>
<clipPath id="clip0_191_1078">
<rect width="500" height="500" fill="white"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g fill-rule="evenodd" clip-rule="evenodd"><path fill="#030407" d="M20.5 20.5 12 24l-8.5-3.5L0 12l3.5-8.5L12 0l8.5 3.5L24 12z"/><g fill="#fff"><path fill-opacity=".5" d="m3 12 2.75-6.25L12 3l6.25 2.75L21 12h-3V7h-2.5L14 8.5V12h-4V8.5L8.5 7H6v5z"/><path d="M6 7v10.5h2.75L12 14l3.25 3.5H18V7h-2.5v7.5L12 10.75 8.5 14.5V7z"/><path d="m19.25 4.75-7.25-3-7.25 3-3 7.25 3 7.25 7.25 3 7.25-3 3-7.25zM20.5 20.5 12 24l-8.5-3.5L0 12l3.5-8.5L12 0l8.5 3.5L24 12z"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 528 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4.102 21.033A11.947 11.947 0 0 0 12 24a11.96 11.96 0 0 0 7.902-2.967c1.877-1.912-4.316-8.709-7.902-11.417-3.582 2.708-9.779 9.505-7.898 11.417zm11.16-14.406c2.5 2.961 7.484 10.313 6.076 12.912A11.942 11.942 0 0 0 24 12.004a11.95 11.95 0 0 0-3.57-8.536s-.027-.022-.082-.042a.824.824 0 0 0-.281-.045c-.592 0-1.985.434-4.805 3.246zM3.654 3.426c-.057.02-.082.041-.086.042A11.956 11.956 0 0 0 0 12.004c0 2.854.998 5.473 2.661 7.533-1.401-2.605 3.579-9.951 6.08-12.91-2.82-2.813-4.216-3.245-4.806-3.245a.725.725 0 0 0-.281.046v-.002zM12 3.551S9.055 1.828 6.755 1.746c-.903-.033-1.454.295-1.521.339C7.379.646 9.659 0 11.984 0H12c2.334 0 4.605.646 6.766 2.085-.068-.046-.615-.372-1.52-.339C14.946 1.828 12 3.545 12 3.545v.006z"/></svg>

After

Width:  |  Height:  |  Size: 797 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><circle cx="512" cy="512" r="512" style="fill:#6001d2"/><path d="M256 390.61h101.45l59.06 151 59.83-151H575L426.38 748.15H327l40.66-94.74Zm332.7 143.54a61.36 61.36 0 1 0 61.37 61.35 61.36 61.36 0 0 0-61.37-61.35M768 275.85H657.83l-98.09 235.67h110.55Z" style="fill:#fff"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m18.86 1.56-4.59 10.31h5.13L24 1.56h-5.14M0 6.71l5.15 11.56-1.85 4.17h4.53l6.86-15.73h-4.5l-2.8 6.73-2.77-6.73H0m15.62 6.16c-1.67 0-2.91 1.25-2.91 2.71 0 1.42 1.2 2.61 2.79 2.61 1.68 0 2.93-1.23 2.93-2.69 0-1.47-1.2-2.63-2.81-2.63Z"/></svg>

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 311 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><linearGradient id="a" x1="7.573" x2="24.427" y1="30.596" y2="1.404" gradientTransform="scale(.75)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0845BF"/><stop offset=".6" stop-color="#0B5CFF"/><stop offset="1" stop-color="#4F90EE"/></linearGradient></defs><path fill="url(#a)" d="M23.7 8.232A9.602 9.602 0 0 0 15.769.3a23.749 23.749 0 0 0-7.537 0A9.602 9.602 0 0 0 .3 8.232a23.749 23.749 0 0 0 0 7.536A9.602 9.602 0 0 0 8.232 23.7a23.751 23.751 0 0 0 7.537 0 9.602 9.602 0 0 0 7.931-7.932 23.752 23.752 0 0 0 0-7.536z"/><path fill="#fff" d="M10.204 15.721H4.265c-.417 0-.789-.249-.948-.634s-.073-.824.222-1.118l4.114-4.114H4.704c-.81 0-1.466-.657-1.466-1.467h5.477c.417 0 .789.249.948.634.16.385.073.824-.222 1.119l-4.114 4.114h3.41c.81 0 1.467.656 1.467 1.466zm10.559-4.583a2.863 2.863 0 0 0-2.86-2.86c-.843 0-1.602.368-2.126.95a2.853 2.853 0 0 0-2.127-.95 2.863 2.863 0 0 0-2.86 2.86v4.583c.81 0 1.467-.657 1.467-1.466v-3.117c0-.768.625-1.393 1.393-1.393s1.393.625 1.393 1.393v3.117c0 .81.657 1.466 1.467 1.466v-4.583c0-.768.625-1.393 1.393-1.393s1.393.625 1.393 1.393v3.117c0 .81.657 1.466 1.467 1.466z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
auth/assets/discount.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
auth/assets/ente_5gb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
auth/assets/rate_us.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
auth/assets/star_us.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -1,24 +1,19 @@
ente's Authenticator app helps you generate and store 2 step verification (2FA)
tokens on your mobile devices.
ente's Authenticator app helps you generate and store 2 step verification (2FA) tokens on your mobile devices.
FEATURES
- Secure Backups
ente provides end-to-end encrypted cloud backups so that you don't have to worry
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
and preserve your data.
ente provides end-to-end encrypted cloud backups so that you don't have to worry about losing your tokens. We use the same protocols Ente Photos uses to encrypt and preserve your data.
- Multi Device Synchronization
ente will automatically sync the 2FA tokens you add to your account, across all
your devices. Every new device you sign into will have access to these tokens.
ente will automatically sync the 2FA tokens you add to your account, across all your devices. Every new device you sign into will have access to these tokens.
- Web access
You can access your 2FA code from any web browser by visiting https://auth.ente.io .
- Offline Mode
ente generates 2FA tokens offline, so your network connectivity will not get in
the way of your workflow.
ente generates 2FA tokens offline, so your network connectivity will not get in the way of your workflow.
- Import and Export Tokens
You can add tokens to ente by one of the following methods:
@@ -30,8 +25,7 @@ otpauth://totp/provider.com:you@email.com?secret=YOUR_SECRET
The codes maybe separated by new lines or commas.
You can also export the codes you have added to ente, to an **unencrypted** text
file, that adheres to the above format.
You can also export the codes you have added to ente, to an **unencrypted** text file, that adheres to the above format.
SUPPORT

View File

@@ -82,8 +82,6 @@ PODS:
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- scan (0.0.1):
- Flutter
- SDWebImage (5.20.0):
- SDWebImage/Core (= 5.20.0)
- SDWebImage/Core (5.20.0)
@@ -146,7 +144,6 @@ DEPENDENCIES:
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- privacy_screen (from `.symlinks/plugins/privacy_screen/ios`)
- qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`)
- scan (from `.symlinks/plugins/scan/ios`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
@@ -208,8 +205,6 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/privacy_screen/ios"
qr_code_scanner:
:path: ".symlinks/plugins/qr_code_scanner/ios"
scan:
:path: ".symlinks/plugins/scan/ios"
sentry_flutter:
:path: ".symlinks/plugins/sentry_flutter/ios"
share_plus:
@@ -250,7 +245,6 @@ SPEC CHECKSUMS:
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
scan: aea35bb4aa59ccc8839c576a18cd57c7d492cc86
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe

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

@@ -504,5 +504,13 @@
"deselectAll": "Deselect all",
"selectAll": "Select all",
"deleteDuplicates": "Delete duplicates",
"plainHTML": "Plain HTML"
"plainHTML": "Plain HTML",
"tellUsWhatYouThink": "Tell us what you think",
"dropReview": "Drop a review on the App/Play Store",
"supportEnte": "Support <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Give us a star on Github",
"free5GB": "5GB free on <bold-green>ente</bold-green> Photos",
"loginWithAuthAccount": "Login with your Auth account",
"freeStorageOffer": "10% off on <bold-green>ente</bold-green> photos",
"freeStorageOfferDescription": "Use code \"AUTH\" to get 10% off first year"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Usar clave de recuperación",
"incorrectPasswordTitle": "Contraseña incorrecta",
"welcomeBack": "¡Te damos la bienvenida otra vez!",
"emailAlreadyRegistered": "Correo electrónico ya registrado.",
"emailNotRegistered": "Correo electrónico no registrado.",
"madeWithLoveAtPrefix": "hecho con ❤️ en ",
"supportDevs": "Suscríbase a <bold-green>ente</bold-green> para apoyar este proyecto",
"supportDiscount": "Utiliza el cupón promocional \"AUTH\" para obtener un 10% de descuento en el primer año",

View File

@@ -504,5 +504,13 @@
"deselectAll": "Tout désélectionner",
"selectAll": "Tout sélectionner",
"deleteDuplicates": "Supprimer les doublons",
"plainHTML": "HTML Pur"
"plainHTML": "HTML Pur",
"tellUsWhatYouThink": "Dites-nous ce que vous pensez",
"dropReview": "Déposez un avis sur l'App/Play Store",
"supportEnte": "Soutenir <bold-green>Ente</bold-green>",
"giveUsAStarOnGithub": "Donnez-nous une étoile sur Github",
"free5GB": "5 Go gratuits sur <bold-green>Ente</bold-green> Photos",
"loginWithAuthAccount": "Connectez-vous avec votre compte Auth",
"freeStorageOffer": "10% de réduction sur <bold-green>Ente</bold-green> Photos",
"freeStorageOfferDescription": "Utilisez le code coupon \"AUTH\" pour obtenir 10% de réduction la première année"
}

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

@@ -88,6 +88,8 @@
"useRecoveryKey": "回復キーを使用",
"incorrectPasswordTitle": "パスワードが正しくありません",
"welcomeBack": "おかえりなさい!",
"emailAlreadyRegistered": "メールアドレスはすでに登録されています。",
"emailNotRegistered": "メールアドレスはまだ登録されていません。",
"madeWithLoveAtPrefix": "made with ❤️ at ",
"supportDevs": "プロジェクト支援のために <bold-green>ente</bold-green> に登録",
"supportDiscount": "クーポンコード \"AUTH\" の使用で初年度が 10% オフに",
@@ -258,6 +260,10 @@
"areYouSureYouWantToLogout": "本当にログアウトしてよろしいですか?",
"yesLogout": "はい、ログアウトします",
"exit": "やめる",
"theme": "テーマ",
"lightTheme": "ライト",
"darkTheme": "ダーク",
"systemTheme": "システム",
"verifyingRecoveryKey": "回復キーを確認中...",
"recoveryKeyVerified": "回復キーが確認されました",
"recoveryKeySuccessBody": "素晴らしい!回復キーは有効です。ご確認いただきありがとうございます。\n\n回復キーを安全にバックアップしておいてください。",
@@ -490,5 +496,10 @@
"appLockNotEnabled": "アプリロックが有効になっていません",
"appLockNotEnabledDescription": "セキュリティ > アプリロック からアプリロックを有効化してください",
"authToViewPasskey": "パスキーを見るには認証してください",
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。"
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。",
"duplicateCodes": "重複コード",
"noDuplicates": "✨ 重複なし",
"plainHTML": "Plain HTML",
"tellUsWhatYouThink": "ご意見をお聞かせください",
"loginWithAuthAccount": "認証アカウントでログイン"
}

View File

@@ -16,7 +16,7 @@
"secretCanNotBeEmpty": "Paslaptis negali būti tuščia.",
"bothIssuerAndAccountCanNotBeEmpty": "Tiek išdavėjas ir paskyra negali būti tušti.",
"incorrectDetails": "Neteisingi duomenys",
"pleaseVerifyDetails": "Patikrinkite duomenis ir bandykite dar kartą.",
"pleaseVerifyDetails": "Patvirtinkite duomenis ir bandykite dar kartą.",
"codeIssuerHint": "Išdavėjas",
"codeSecretKeyHint": "Slaptasis raktas",
"secret": "Paslaptis",
@@ -504,5 +504,6 @@
"deselectAll": "Naikinti visų pasirinkimą",
"selectAll": "Pasirinkti viską",
"deleteDuplicates": "Ištrinti dublikatus",
"plainHTML": "Grynasis HTML"
"plainHTML": "Grynasis HTML",
"freeStorageOfferDescription": "Naudokite 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",
@@ -502,5 +504,13 @@
"deselectAll": "Alles deselecteren",
"selectAll": "Alles selecteren",
"deleteDuplicates": "Dubbelen verwijderen",
"plainHTML": "Alleen HTML"
"plainHTML": "Alleen HTML",
"tellUsWhatYouThink": "Vertel ons wat je vindt",
"dropReview": "Laat een beoordeling achter in de App/Play Store",
"supportEnte": "Steun <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Geef ons een ster op Github",
"free5GB": "5GB gratis op <bold-green>ente</bold-green> Photos",
"loginWithAuthAccount": "Log in met je Auth account",
"freeStorageOffer": "10% korting op <bold-green>ente</bold-green> photos",
"freeStorageOfferDescription": "Gebruik de code \"AUTH\" voor 10% korting op je eerste jaar"
}

View File

@@ -504,5 +504,13 @@
"deselectAll": "Odznacz wszystko",
"selectAll": "Zaznacz wszystko",
"deleteDuplicates": "Usuń duplikaty",
"plainHTML": "Zwykły HTML"
"plainHTML": "Zwykły HTML",
"tellUsWhatYouThink": "Wyraź swoją opinię",
"dropReview": "Napisz recenzję w App Store/Play Store",
"supportEnte": "Wesprzyj <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Daj nam gwiazdkę na Githubie",
"free5GB": "5 GB za darmo na zdjęcia <bold-green>ente</bold-green>",
"loginWithAuthAccount": "Zaloguj się przy użyciu konta Auth",
"freeStorageOffer": "10% zniżki na zdjęcia <bold-green>ente</bold-green>",
"freeStorageOfferDescription": "Użyj kodu „AUTH”, aby uzyskać 10% zniżki na pierwszy rok"
}

View File

@@ -6,7 +6,7 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Copie com segurança seus códigos 2FA",
"onBoardingBody": "Salve com segurança seus códigos 2FA",
"onBoardingGetStarted": "Introdução",
"setupFirstAccount": "Configure sua primeira conta",
"importScanQrCode": "Escanear QR code",
@@ -19,7 +19,7 @@
"pleaseVerifyDetails": "Verifique os detalhes e tente novamente",
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Chave secreta",
"secret": "Segredo",
"secret": "Chave secreta",
"all": "Todos",
"notes": "Notas",
"notesLengthLimit": "Notas tem um limite de até {count} caracteres",
@@ -504,5 +504,13 @@
"deselectAll": "Deselecionar tudo",
"selectAll": "Selecionar tudo",
"deleteDuplicates": "Excluir duplicados",
"plainHTML": "HTML simples"
"plainHTML": "HTML simples",
"tellUsWhatYouThink": "Diga-nos o que pensa",
"dropReview": "Deixe uma avaliação na App/Play Store",
"supportEnte": "Apoie o <bold-green>ente.io</bold-green>",
"giveUsAStarOnGithub": "Dê-nos uma estrela no Github",
"free5GB": "5GB grátis no <bold-green>ente</bold-green> Photos",
"loginWithAuthAccount": "Registrar-se com sua conta Auth",
"freeStorageOffer": "10% de desconto no <bold-green>ente</bold-green> photos",
"freeStorageOfferDescription": "Use o cupom \"AUTH\" para obter 10% de desconto no primeiro ano"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Использовать ключ восстановления",
"incorrectPasswordTitle": "Неправильный пароль",
"welcomeBack": "С возвращением!",
"emailAlreadyRegistered": "Адрес электронной почты уже зарегистрирован.",
"emailNotRegistered": "Адрес электронной почты не зарегистрирован.",
"madeWithLoveAtPrefix": "сделана с ❤️ в ",
"supportDevs": "Подпишитесь на <bold-green>ente</bold-green> для поддержки нашего проекта",
"supportDiscount": "Используйте код скидки \"AUTH\", чтобы получить скидку 10% на первый год",
@@ -257,6 +259,10 @@
"areYouSureYouWantToLogout": "Вы уверены, что хотите выйти?",
"yesLogout": "Да, выйти",
"exit": "Выйти",
"theme": "Тема",
"lightTheme": "Светлая",
"darkTheme": "Тёмная",
"systemTheme": "Системная",
"verifyingRecoveryKey": "Проверка ключа восстановления...",
"recoveryKeyVerified": "Ключ восстановления подтвержден",
"recoveryKeySuccessBody": "Отлично! Ваш ключ восстановления действителен. Спасибо за проверку.\n\nПожалуйста, не забудьте сохранить ключ восстановления безопасно.",
@@ -327,6 +333,7 @@
}
}
},
"mostRecentlyUsed": "Недавно использованные",
"activeSessions": "Активные сеансы",
"somethingWentWrongPleaseTryAgain": "Что-то пошло не так. Попробуйте еще раз",
"thisWillLogYouOutOfThisDevice": "Вы выйдете из этого устройства!",
@@ -482,5 +489,9 @@
"appLockNotEnabled": "Блокировка приложения отключена",
"appLockNotEnabledDescription": "Пожалуйста, включите блокировку приложения в безопасности > Блокировка приложений",
"authToViewPasskey": "Пожалуйста, авторизуйтесь, чтобы просмотреть пароль",
"appLockOfflineModeWarning": "Вы решили продолжить работу без резервного копирования. Если вы забудете свой пароль, доступ к вашим данным будет заблокирован."
"appLockOfflineModeWarning": "Вы решили продолжить работу без резервного копирования. Если вы забудете свой пароль, доступ к вашим данным будет заблокирован.",
"duplicateCodes": "Дублировать коды",
"noDuplicates": "✨ Дубликатов нет",
"selectAll": "Выбрать все",
"plainHTML": "Обычный HTML"
}

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",
@@ -321,7 +323,11 @@
"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",

View File

@@ -504,5 +504,13 @@
"deselectAll": "取消全选",
"selectAll": "全选",
"deleteDuplicates": "删除重复项",
"plainHTML": "Plain HTML"
"plainHTML": "Plain HTML",
"tellUsWhatYouThink": "告诉我们您的想法",
"dropReview": "在 App Store/Play 商店上发表评测",
"supportEnte": "支持 <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "在 Github 上给我们一个星标",
"free5GB": "<bold-green>ente</bold-green> Photos 上 5GB 可用空间",
"loginWithAuthAccount": "使用您的认证账户登录",
"freeStorageOffer": "购买 <bold-green>ente</bold-green> Photos 可享受 10% 优惠",
"freeStorageOfferDescription": "使用优惠码“AUTH”可享受首年 10% 折扣"
}

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

@@ -364,12 +364,13 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
widget.code?.display.copyWith(tags: selectedTags) ??
CodeDisplay(tags: selectedTags);
display.note = notes;
if (widget.code!.issuer != issuer) {
display.iconID = issuer.toLowerCase();
}
if (widget.code!.display.iconID != _customIconID.toLowerCase()) {
display.iconID = _customIconID.toLowerCase();
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.iconSrc =

View File

@@ -23,6 +23,7 @@ class PreferenceService {
static const kShouldAutoFocusOnSearchBar = "should_auto_focus_on_search_bar";
static const kShouldMinimizeOnCopy = "should_minimize_on_copy";
static const kCompactMode = "vi.compactMode";
static const kAppInstallTime = "appInstallTime";
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
@@ -103,4 +104,14 @@ class PreferenceService {
Future<void> setShouldMinimizeOnCopy(bool value) async {
await _prefs.setBool(kShouldMinimizeOnCopy, value);
}
int getAppInstalledTime() {
if (_prefs.containsKey(kAppInstallTime)) {
return _prefs.getInt(kAppInstallTime)!;
} else {
int installedTimeinMillis = DateTime.now().millisecondsSinceEpoch;
_prefs.setInt(kAppInstallTime, installedTimeinMillis).ignore();
return installedTimeinMillis;
}
}
}

View File

@@ -689,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"];
@@ -705,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) {
@@ -877,6 +877,7 @@ class UserService {
"twoFactorType": twoFactorTypeToString(type),
},
);
await dialog.hide();
if (response.statusCode == 200) {
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
@@ -974,6 +975,7 @@ class UserService {
"twoFactorType": twoFactorTypeToString(type),
},
);
await dialog.hide();
if (response.statusCode == 200) {
showShortToast(
context,

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

@@ -33,12 +33,14 @@ class CodeWidget extends StatefulWidget {
final Code code;
final bool isCompactMode;
final CodeSortKey? sortKey;
final bool isReordering;
const CodeWidget(
this.code, {
super.key,
required this.isCompactMode,
this.sortKey,
this.isReordering = false,
});
@override
@@ -100,7 +102,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();
@@ -222,25 +224,27 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
: null,
onLongPress: () {
showModalBottomSheet(
context: context,
builder: (_) {
return BottomActionBarWidget(
code: widget.code,
showPin: !ignorePin,
onEdit: () => _onEditPressed(true),
onShare: () => _onSharePressed(true),
onPin: () => _onPinPressed(true),
onTrashed: () => _onTrashPressed(true),
onDelete: () => _onDeletePressed(true),
onRestore: () => _onRestoreClicked(true),
onShowQR: () => _onShowQrPressed(true),
onCancel: () => Navigator.of(context).pop(),
);
},
);
},
onLongPress: widget.isReordering
? null
: () {
showModalBottomSheet(
context: context,
builder: (_) {
return BottomActionBarWidget(
code: widget.code,
showPin: !ignorePin,
onEdit: () => _onEditPressed(true),
onShare: () => _onSharePressed(true),
onPin: () => _onPinPressed(true),
onTrashed: () => _onTrashPressed(true),
onDelete: () => _onDeletePressed(true),
onRestore: () => _onRestoreClicked(true),
onShowQR: () => _onShowQrPressed(true),
onCancel: () => Navigator.of(context).pop(),
);
},
);
},
child: getCardContents(l10n),
),
),
@@ -645,7 +649,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

@@ -0,0 +1,202 @@
import 'package:dotted_border/dotted_border.dart';
import 'package:ente_auth/services/update_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:flutter/material.dart';
import 'package:styled_text/tags/styled_text_tag.dart';
import 'package:styled_text/widgets/styled_text.dart';
import 'package:url_launcher/url_launcher.dart';
enum BannerType {
rateUs,
starUs,
freeStorage,
discount,
}
class BannerWidget extends StatelessWidget {
final String text;
final String? subText;
final BannerType type;
final TextStyle? mainTextStyle;
const BannerWidget({
super.key,
required this.text,
required this.type,
this.subText,
this.mainTextStyle,
});
@override
Widget build(BuildContext context) {
bool isLightMode =
MediaQuery.of(context).platformBrightness == Brightness.light;
final colorScheme = getEnteColorScheme(context);
Color dashColor;
List<BoxShadow>? boxShadow;
String imagePath;
Uri? url;
final result = UpdateService.instance.getRateDetails();
final String rateUrl = result.item2;
switch (type) {
case BannerType.rateUs:
if (PlatformUtil.isMobile()) {
url = Uri.parse(rateUrl);
} else if (PlatformUtil.isDesktop()) {
url = Uri.parse(
"https://play.google.com/store/apps/details?id=io.ente.auth",
);
}
imagePath = "assets/rate_us.png";
dashColor = const Color.fromRGBO(255, 191, 12, 1);
boxShadow = [
BoxShadow(
color: const Color(0xFFFDB816).withOpacity(0.1),
blurRadius: 50,
spreadRadius: 80,
),
BoxShadow(
color: const Color(0xFFFDB816).withOpacity(0.2),
blurRadius: 25,
),
];
break;
case BannerType.starUs:
url = Uri.parse("https://github.com/ente-io/ente");
imagePath = "assets/star_us.png";
dashColor = const Color.fromRGBO(233, 233, 233, 1);
boxShadow = [
BoxShadow(
color: const Color.fromRGBO(78, 78, 78, 1).withOpacity(0.2),
blurRadius: 50,
spreadRadius: 100,
),
BoxShadow(
color: const Color.fromRGBO(23, 22, 22, 0.30).withOpacity(0.1),
blurRadius: 25,
),
];
break;
case BannerType.freeStorage:
imagePath = "assets/ente_5gb.png";
dashColor = const Color.fromRGBO(29, 185, 84, 1);
boxShadow = [
BoxShadow(
color: const Color.fromRGBO(38, 203, 95, 1).withOpacity(0.08),
blurRadius: 50,
spreadRadius: 100,
),
BoxShadow(
color: const Color.fromRGBO(0, 0, 0, 0.50).withOpacity(0.08),
blurRadius: 25,
),
];
break;
case BannerType.discount:
dashColor = const Color.fromRGBO(29, 185, 84, 1);
imagePath = "assets/discount.png";
boxShadow = [
BoxShadow(
color: const Color.fromRGBO(38, 203, 95, 1).withOpacity(0.08),
blurRadius: 50,
spreadRadius: 100,
),
BoxShadow(
color: const Color.fromRGBO(0, 0, 0, 0.50).withOpacity(0.08),
blurRadius: 25,
),
];
break;
}
return GestureDetector(
onTap: () {
url != null ? launchUrl(url) : null;
},
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(50)),
child: DottedBorder(
borderType: BorderType.RRect,
radius: const Radius.circular(50),
dashPattern: const <double>[3, 3],
color: dashColor,
child: Stack(
children: [
if (BannerType.starUs == type)
Positioned(
right: 0,
top: 0,
bottom: 0,
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(50)),
child: isLightMode
? Image.asset("assets/calender_banner_light.png")
: Image.asset("assets/calender_banner_dark.png"),
),
),
Row(
children: [
Stack(
alignment: Alignment.center,
children: [
if (!isLightMode)
Container(
height: 80,
width: 80,
decoration: BoxDecoration(
shape: BoxShape.circle,
boxShadow: boxShadow,
),
),
Padding(
padding: const EdgeInsets.all(10.0),
child: SizedBox(
height: 60,
width: 60,
child: Image.asset(imagePath),
),
),
],
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StyledText(
text: text,
style: getEnteTextTheme(context).large,
textAlign: TextAlign.left,
tags: {
'bold-green': StyledTextTag(
style: TextStyle(
fontWeight: FontWeight.bold,
color: colorScheme.primaryGreen,
),
),
},
),
const SizedBox(height: 5),
Text(
subText ?? "",
textAlign: TextAlign.left,
style: const TextStyle(
color: Colors.grey,
),
),
],
),
),
],
),
],
),
),
),
);
}
}

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

@@ -1,5 +1,4 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/services/auth_feature_flag.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/settings/data/import_page.dart';
import 'package:ente_auth/utils/navigation_util.dart';
@@ -10,13 +9,11 @@ import 'package:logging/logging.dart';
class HomeEmptyStateWidget extends StatelessWidget {
final VoidCallback? onScanTap;
final VoidCallback? onManuallySetupTap;
final VoidCallback? onImportFromGallery;
const HomeEmptyStateWidget({
super.key,
required this.onScanTap,
required this.onManuallySetupTap,
this.onImportFromGallery,
});
@override
@@ -62,23 +59,6 @@ class HomeEmptyStateWidget extends StatelessWidget {
),
),
const SizedBox(height: 18),
if (PlatformUtil.isMobile() &&
FeatureFlagService.instance
.isInternalUserOrDebugBuild())
SizedBox(
width: 400,
child: OutlinedButton(
onPressed: onImportFromGallery,
style: OutlinedButton.styleFrom(
padding: const EdgeInsets.symmetric(vertical: 8),
),
child: const Text(
"Import from gallery",
textAlign: TextAlign.center,
),
),
),
const SizedBox(height: 18),
SizedBox(
width: 400,
child: OutlinedButton(

View File

@@ -14,7 +14,6 @@ import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/onboarding/model/tag_enums.dart';
import 'package:ente_auth/onboarding/view/common/tag_chip.dart';
import 'package:ente_auth/onboarding/view/setup_enter_secret_key_page.dart';
import 'package:ente_auth/services/auth_feature_flag.dart';
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';
@@ -40,7 +39,6 @@ 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:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -48,7 +46,6 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:logging/logging.dart';
import 'package:move_to_background/move_to_background.dart';
import 'package:scan/scan.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@@ -93,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();
@@ -274,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;
}
@@ -483,7 +479,6 @@ class _HomePageState extends State<HomePage> {
return HomeEmptyStateWidget(
onScanTap: _redirectToScannerPage,
onManuallySetupTap: _redirectToManualEntryPage,
onImportFromGallery: _importFromGallery,
);
} else {
final anyCodeHasError =
@@ -585,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,
@@ -621,6 +616,7 @@ class _HomePageState extends State<HomePage> {
key: ValueKey('${codeState.hashCode}_$index'),
codeState,
isCompactMode: isCompactMode,
sortKey: _codeSortKey,
);
}),
itemCount: _filteredCodes.length,
@@ -671,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(
@@ -699,29 +703,6 @@ class _HomePageState extends State<HomePage> {
_applyFilteringAndRefresh();
}
Future<void> _importFromGallery() async {
try {
final FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.image,
allowMultiple: false,
);
if (result != null) {
final path = result.files.single.path!;
String? res = await Scan.parse(path);
final Code? code = res != null ? Code.fromOTPAuthUrl(res) : null;
if (code != null) {
await CodeStore.instance.addCode(code);
if ((_allCodes?.where((e) => !e.hasError).length ?? 0) > 2) {
_focusNewCode(code);
}
}
}
} catch (e, s) {
await showGenericErrorDialog(context: context, error: e);
_logger.severe("Error while importing from gallery", e, s);
}
}
Widget _getFab() {
if (PlatformUtil.isDesktop()) {
return FloatingActionButton(
@@ -752,15 +733,6 @@ class _HomePageState extends State<HomePage> {
labelWidget: SpeedDialLabelWidget(context.l10n.scanAQrCode),
onTap: _redirectToScannerPage,
),
if (PlatformUtil.isMobile() &&
FeatureFlagService.instance.isInternalUserOrDebugBuild())
SpeedDialChild(
child: const Icon(Icons.image),
foregroundColor: Theme.of(context).colorScheme.fabForegroundColor,
backgroundColor: Theme.of(context).colorScheme.fabBackgroundColor,
labelWidget: const SpeedDialLabelWidget("Import from gallery"),
onTap: _importFromGallery,
),
SpeedDialChild(
child: const Icon(Icons.keyboard),
foregroundColor: Theme.of(context).colorScheme.fabForegroundColor,

View File

@@ -90,6 +90,7 @@ class _ReorderCodesPageState extends State<ReorderCodesPage> {
key: ValueKey(code.generatedID),
code,
isCompactMode: isCompactMode,
isReordering: true,
),
),
],

View File

@@ -0,0 +1,111 @@
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/user_details.dart';
import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/ui/components/banner_widget.dart';
import 'package:flutter/material.dart';
class NotificationBannerWidget extends StatelessWidget {
const NotificationBannerWidget({super.key});
@override
Widget build(BuildContext context) {
List<Widget> contents = [];
const sectionSpacing = SizedBox(height: 14);
final currentTime = DateTime.now();
final appInstallTime = PreferenceService.instance.getAppInstalledTime();
final differenceInDays = currentTime
.difference(DateTime.fromMillisecondsSinceEpoch(appInstallTime))
.inDays;
final l10n = context.l10n;
if (Configuration.instance.hasConfiguredAccount()) {
return FutureBuilder<UserDetails>(
future: UserService.instance.getUserDetailsV2(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final userDetails = snapshot.data;
if (differenceInDays >= 0 && differenceInDays <= 3) {
return const SizedBox.shrink();
} else if (differenceInDays >= 4 && differenceInDays <= 7) {
contents.clear();
contents.addAll(
[
BannerWidget(
text: l10n.tellUsWhatYouThink,
subText: l10n.dropReview,
type: BannerType.rateUs,
),
sectionSpacing,
BannerWidget(
text: l10n.supportEnte,
subText: l10n.giveUsAStarOnGithub,
type: BannerType.starUs,
),
],
);
return buildWidget(context, contents);
} else if (differenceInDays >= 7 && differenceInDays <= 30) {
if (userDetails?.usage == 0) {
contents.clear();
contents.addAll(
[
BannerWidget(
text: l10n.free5GB,
subText: l10n.loginWithAuthAccount,
type: BannerType.freeStorage,
),
],
);
} else if (userDetails!.usage < 5 * 1024 * 1024 * 1024 ||
userDetails.subscription.productID == 'free') {
contents.addAll(
[
BannerWidget(
text: l10n.freeStorageOffer,
subText: l10n.freeStorageOfferDescription,
type: BannerType.discount,
),
],
);
}
return buildWidget(context, contents);
}
}
return const SizedBox.shrink();
},
);
} else {
if (differenceInDays >= 4 && differenceInDays <= 7) {
contents.clear();
contents.addAll(
[
BannerWidget(
text: l10n.tellUsWhatYouThink,
subText: l10n.dropReview,
type: BannerType.rateUs,
),
sectionSpacing,
BannerWidget(
text: l10n.supportEnte,
subText: l10n.giveUsAStarOnGithub,
type: BannerType.starUs,
),
],
);
}
return buildWidget(context, contents);
}
}
Widget buildWidget(
BuildContext context,
List<Widget> contents,
) {
return Column(
children: contents,
);
}
}

View File

@@ -18,9 +18,9 @@ import 'package:ente_auth/ui/settings/data/data_section_widget.dart';
import 'package:ente_auth/ui/settings/data/export_widget.dart';
import 'package:ente_auth/ui/settings/developer_settings_widget.dart';
import 'package:ente_auth/ui/settings/general_section_widget.dart';
import 'package:ente_auth/ui/settings/notification_banner_widget.dart';
import 'package:ente_auth/ui/settings/security_section_widget.dart';
import 'package:ente_auth/ui/settings/social_section_widget.dart';
import 'package:ente_auth/ui/settings/support_dev_widget.dart';
import 'package:ente_auth/ui/settings/support_section_widget.dart';
import 'package:ente_auth/ui/settings/theme_switch_widget.dart';
import 'package:ente_auth/ui/settings/title_bar_widget.dart';
@@ -162,7 +162,7 @@ class SettingsPage extends StatelessWidget {
const AboutSectionWidget(),
const AppVersionWidget(),
const DeveloperSettingsWidget(),
const SupportDevWidget(),
const NotificationBannerWidget(),
const Padding(
padding: EdgeInsets.only(bottom: 60),
),

View File

@@ -33,8 +33,7 @@ class _LockScreenState extends State<LockScreen> with WidgetsBindingObserver {
int remainingTimeInSeconds = 0;
final _lockscreenSetting = LockScreenSettings.instance;
late Brightness _platformBrightness;
final bool hasOptedForOfflineMode =
Configuration.instance.hasOptedForOfflineMode();
final bool isLoggedIn = Configuration.instance.isLoggedIn();
@override
void initState() {
@@ -56,15 +55,15 @@ class _LockScreenState extends State<LockScreen> with WidgetsBindingObserver {
return Scaffold(
appBar: AppBar(
elevation: 0,
leading: hasOptedForOfflineMode
? const SizedBox.shrink()
: IconButton(
leading: isLoggedIn
? IconButton(
icon: const Icon(Icons.logout_outlined),
color: Theme.of(context).iconTheme.color,
onPressed: () {
_onLogoutTapped(context);
},
),
)
: const SizedBox.shrink(),
),
body: GestureDetector(
onTap: () {

View File

@@ -1,6 +1,7 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/account/two_factor.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/utils/email_util.dart';
import 'package:flutter/material.dart';
@@ -97,7 +98,8 @@ class _TwoFactorRecoveryPageState extends State<TwoFactorRecoveryPage> {
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 12,
color: Colors.white.withOpacity(0.9),
color:
getEnteColorScheme(context).textBase.withOpacity(0.9),
),
),
),

View File

@@ -90,7 +90,6 @@ class LockScreenSettings {
: await PrivacyScreen.instance.enable(
iosOptions: const PrivacyIosOptions(
enablePrivacy: true,
privacyImageName: 'LaunchImage',
),
androidOptions: const PrivacyAndroidOptions(
enableSecure: true,

View File

@@ -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"
@@ -1301,14 +1301,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.1.0"
scan:
dependency: "direct main"
description:
name: scan
sha256: b343ec36f863a88d41eb4c174b810c055c6bd1f1822b2188ab31aab684fb7cdb
url: "https://pub.dev"
source: hosted
version: "1.6.0"
screen_retriever:
dependency: transitive
description:

View File

@@ -1,7 +1,7 @@
name: ente_auth
description: ente two-factor authenticator
version: 4.2.7+427
version: 4.3.2+432
publish_to: none
environment:
@@ -82,8 +82,7 @@ dependencies:
privacy_screen: ^0.0.6
protobuf: ^3.0.0
qr_code_scanner: ^1.0.1
qr_flutter: ^4.1.0
scan: ^1.6.0
qr_flutter: ^4.1.0
sentry: ^8.7.0
sentry_flutter: ^8.7.0
share_plus: ^10.0.2

View File

@@ -10,7 +10,7 @@ DefaultDirName={{INSTALL_DIR_NAME}}
DisableProgramGroupPage=yes
OutputDir=.
OutputBaseFilename={{OUTPUT_BASE_FILENAME}}
Compression=lzma
Compression=zip
SolidCompression=yes
SetupIconFile={{SETUP_ICON_FILE}}
WizardStyle=modern

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.

7
desktop/.gitignore vendored
View File

@@ -20,3 +20,10 @@ out
# electron-builder
dist/
# Legacy, people who checked out main for a brief while in Jan 2025 may have
# this. Can be removed in the future.
build/magick*
# We download it on demand, if needed for the particular OS/arch.
build/vips*

View File

@@ -2,6 +2,9 @@
## v1.7.9 (Unreleased)
- Light mode.
- Faster and more stable thumbnail generation.
- Support `.supplemental-metadata` JSON files in Google Takeout.
- .
## v1.7.8

Binary file not shown.

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.ente.photos</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>AGPL-3.0</project_license>
<name>Ente Photos</name>
<summary>Safe home for your photos</summary>
<developer id="io.github.ente-io.ente">
<name>Ente.io Developers</name>
</developer>
<description>
<p>
Ente is an open-source, end-to-end encrypted (E2EE) photo storage app, that provides a secure way to backup your photos.
</p>
</description>
<launchable type="desktop-id">ente.desktop</launchable>
<content_rating type="oars-1.0" />
<url type="bugtracker">https://github.com/ente-io/ente/issues</url>
<url type="homepage">https://ente.io</url>
<url type="vcs-browser">https://github.com/ente-io/ente</url>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/ente-io/ente/main/.github/assets/photos.png</image>
</screenshot>
</screenshots>
<branding>
<color type="primary" scheme_preference="light">#1db954</color>
<color type="primary" scheme_preference="dark">#1db954</color>
</branding>
<releases>
<release version="1.7.8" date="2025-01-13">
<url type="details">https://github.com/ente-io/photos-desktop/releases/tag/v1.7.8</url>
</release>
</releases>
</component>

View File

@@ -103,18 +103,20 @@ Some extra ones specific to the code here are:
### Format conversion
The main tool we use is for arbitrary conversions is ffmpeg. To bundle a
For video conversions and metadata extraction, we use ffmpeg. To bundle a
(platform specific) static binary of ffmpeg with our app, we use
[ffmpeg-static](https://github.com/eugeneware/ffmpeg-static).
> There is a significant (~20x) speed difference between using the compiled
> ffmpeg binary and using the wasm one (that our renderer process already has).
> FFmpeg binary and using the Wasm one (that our renderer process already has).
> Which is why we bundle it to speed up operations on the desktop app.
In addition, we also bundle a static Linux binary of imagemagick in our extra
resources (`build`) folder. This is used for thumbnail generation on Linux.
On Linux and Windows, we use `vips` for thumbnail generation and JPEG conversion
of unpreviewable images. A static OS/architecture specific binary of this is
bundled in our extra resources (`build`) folder by `scripts/vips.sh` and/or
`scripts/beforeBuild.js`. See "[Note: vips]" for more details.
On macOS, we use the `sips` CLI tool for conversion, but that is already
On macOS, we use the `sips` CLI tool for these tasks, but that is already
available on the host machine, and is not bundled with our app.
### ML

View File

@@ -6,6 +6,7 @@ files:
extraFiles:
- from: build
to: resources
beforeBuild: scripts/beforeBuild.js
protocols:
- name: Ente
schemes: ["ente"]
@@ -33,3 +34,4 @@ mac:
arch: [universal]
category: public.app-category.photography
hardenedRuntime: true
mergeASARs: false

View File

@@ -19,7 +19,7 @@ export default ts.config(
{
// The list of (minimatch) globs to ignore. This needs to be the only
// key in this configuration object.
ignores: ["eslint.config.mjs", "app/", "out/", "dist/"],
ignores: ["eslint.config.mjs", "scripts/*.js", "app/", "out/", "dist/"],
},
{
// Rule customizations.

View File

@@ -8,17 +8,18 @@
"main": "app/main.js",
"scripts": {
"build": "yarn build-renderer && yarn build-main",
"build-main": "tsc && electron-builder",
"build-main:quick": "tsc && electron-builder --dir --config.compression=store --config.mac.identity=null",
"build-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn build:photos && cd ../desktop && shx rm -f out && shx ln -sf ../web/apps/photos/out out\"",
"build:ci": "yarn build-renderer && tsc",
"build:quick": "yarn build-renderer && yarn build-main:quick",
"build-main": "tsc && electron-builder",
"build-main:quick": "tsc && electron-builder --dir --config.compression=store --config.mac.identity=null",
"build-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn build:photos && cd ../desktop && shx rm -rf out && shx cp -r ../web/apps/photos/out out\"",
"dev": "concurrently --kill-others --success first --names 'main,rndr' \"yarn dev-main\" \"yarn dev-renderer\"",
"dev-main": "tsc && electron .",
"dev-renderer": "cross-env-shell _ENTE_IS_DESKTOP=1 \"cd ../web && yarn install && yarn workspace photos next dev -p 3008\"",
"postinstall": "electron-builder install-app-deps",
"lint": "yarn prettier --check --log-level warn . && yarn eslint && yarn tsc",
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc"
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc",
"prepare": "node scripts/vips.js"
},
"resolutions": {
"jackspeak": "2.1.1"
@@ -30,9 +31,9 @@
"clip-bpe-js": "^0.0.6",
"comlink": "^4.4.2",
"compare-versions": "^6.1.1",
"electron-log": "^5.2.4",
"electron-log": "^5.3.0",
"electron-store": "^8.2.0",
"electron-updater": "^6.3.9",
"electron-updater": "^6.4.0",
"ffmpeg-static": "^5.2.0",
"lru-cache": "^11.0.2",
"next-electron-server": "^1.0.0",
@@ -40,23 +41,23 @@
"onnxruntime-node": "^1.20.1"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
"@eslint/js": "^9.19.0",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0.5",
"@types/eslint__js": "^8.42.3",
"@types/ffmpeg-static": "^3.0.3",
"ajv": "^8.17.1",
"concurrently": "^9.1.1",
"concurrently": "^9.1.2",
"cross-env": "^7.0.3",
"electron": "^33.2.1",
"electron-builder": "^25.1.8",
"electron": "^34.0.2",
"electron-builder": "^26.0.0",
"eslint": "^9",
"prettier": "3.4.2",
"prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.6",
"prettier-plugin-packagejson": "^2.5.8",
"shx": "^0.3.4",
"typescript": "^5.7.2",
"typescript-eslint": "^8.18.2"
"typescript-eslint": "^8.23.0"
},
"packageManager": "yarn@1.22.22",
"productName": "ente"

66
desktop/scripts/beforeBuild.js Executable file
View File

@@ -0,0 +1,66 @@
const fsp = require("fs/promises");
/**
* This hook is invoked during the initial build (e.g. when triggered by "yarn
* build"), and importantly, on each rebuild for a different architecture during
* the build. We use it to ensure that the vips binary is for the current
* architecture being built. See "[Note: vips]" for more details.
*
* The documentation for this hook is at:
* https://www.electron.build/app-builder-lib.interface.configuration#beforebuild
*
* > The function to be run before dependencies are installed or rebuilt.
*
* Here is an example of the context that it gets
* https://www.electron.build/app-builder-lib.interface.beforebuildcontext
*
* appDir: '/path/to/ente/desktop',
* platform: Platform {
* name: 'mac',
* buildConfigurationKey: 'mac',
* nodeName: 'darwin'
* },
* arch: 'arm64'
*
* Note that we must not return falsey from this function, because:
*
* > Resolving to false will skip dependencies install or rebuild.
*
*/
module.exports = async (context) => {
const { appDir, platform, arch } = context;
// The arch used by Electron Builder is not the same as the arch used by
// Node's process, but for the two cases that we care about, "x64" and
// "arm64", both of them use the string constant and thus can be compared.
//
// https://github.com/electron-userland/electron-builder/blob/master/packages/builder-util/src/arch.ts#L9
// https://nodejs.org/api/process.html#processarch
if (arch == process.arch) {
// `vips.js` would've already downloaded the file, nothing to do.
return true;
}
const download = async (downloadName, outputName) => {
const out = `${appDir}/build/${outputName}`;
console.log(`Downloading ${downloadName}`);
const downloadPath = `https://github.com/ente-io/libvips-packaging/releases/download/v8.16.0/${downloadName}`;
return fetch(downloadPath)
.then((res) => res.blob())
.then((blob) => fsp.writeFile(out, blob.stream()))
.then(() => fsp.chmod(out, "744"));
};
switch (`${platform.nodeName}-${arch}`) {
case "linux-x64":
await download("vips-x64", "vips");
case "linux-arm64":
await download("vips-arm64", "vips");
case "win32-x64":
await download("vips-x86_64.exe", "vips.exe");
case "linux-arm64":
await download("vips-aarch64.exe", "vips.exe");
}
return true;
};

68
desktop/scripts/vips.js Executable file
View File

@@ -0,0 +1,68 @@
/**
* [Note: vips]
*
* For use within our Electron app we need static builds for Linux and Windows
* for both x64 and ARM. For this, we need a custom workflow because (as of
* writing) upstream doesn't publish these.
*
* This is our custom workflow, which runs on a fork of upstream:
* https://github.com/ente-io/libvips-packaging/commit/a298aff3e1f25f713508d31d0c3a55a4f828fdd3
*
* The binaries it creates are available at
* https://github.com/ente-io/libvips-packaging/releases/tag/v8.16.0
*
* To integrate this binary, we need to modify two places:
*
* 1. This script, `vips.js`, runs during "yarn install" (it is set as the
* "prepare" step in our `package.json`). It downloads the relevant binary
* for the current OS/arch combination and places it in the `build` folder,
* allowing it to be used during development.
*
* 2. The sibling script, `beforeBuild.js`, runs during "yarn build" (it is set
* as the beforeBuild script in `electrons-builder.yml`). It downloads the
* relevant binary for the OS/arch combination being built.
*
* Note that `vips.js` would've already run once `beforeBuild.js` is run, but on
* our CI we prepare builds for multiple architectures in one go, so we need to
* unconditonally replace the binary with the relevant one for the current
* architecture being built (which might be different from the one we're running
* on). `beforeBuild.js` runs for each architecture being built.
*
* On macOS, we don't need `vips` since there we use the native `sips`.
*/
const fs = require("fs");
const fsp = require("fs/promises");
const main = () => {
switch (`${process.platform}-${process.arch}`) {
case "linux-x64":
return downloadIfNeeded("vips-x64", "vips");
case "linux-arm64":
return downloadIfNeeded("vips-arm64", "vips");
case "win32-x64":
return downloadIfNeeded("vips-x86_64.exe", "vips.exe");
case "linux-arm64":
return downloadIfNeeded("vips-aarch64.exe", "vips.exe");
}
};
const downloadIfNeeded = (downloadName, outputName) => {
const out = `build/${outputName}`;
try {
// Making the file executable is the last step, so if the file exists at
// this path and is executable, we assume it is the correct one.
fs.accessSync(out, fs.constants.X_OK);
return;
} catch {}
console.log(`Downloading ${downloadName}`);
const downloadPath = `https://github.com/ente-io/libvips-packaging/releases/download/v8.16.0/${downloadName}`;
return fetch(downloadPath)
.then((res) => res.blob())
.then((blob) => fsp.writeFile(out, blob.stream()))
.then(() => fsp.chmod(out, "744"));
};
main();

View File

@@ -10,14 +10,15 @@
*/
import { nativeImage, shell } from "electron/common";
import type { WebContents } from "electron/main";
import {
BrowserWindow,
Menu,
Tray,
app,
dialog,
nativeTheme,
protocol,
type WebContents,
} from "electron/main";
import serveNextAt from "next-electron-server";
import { existsSync } from "node:fs";
@@ -95,10 +96,10 @@ const main = () => {
/**
* Handle an open URL request, but ensuring that we have a mainWindow.
*/
const handleOpenURLEnsuringWindow = (url: string) => {
const handleOpenEnteURLEnsuringWindow = (url: string) => {
log.info(`Attempting to handle request to open URL: ${url}`);
if (mainWindow) handleEnteLinks(mainWindow, url);
else setTimeout(() => handleOpenURLEnsuringWindow(url), 1000);
else setTimeout(() => handleOpenEnteURLEnsuringWindow(url), 1000);
};
app.on("second-instance", (_, argv: string[]) => {
@@ -109,9 +110,15 @@ const main = () => {
mainWindow.focus();
}
// On Windows and Linux, this is how we get deeplinks.
//
// See: registerForEnteLinks
const url = argv.pop();
if (url) handleOpenURLEnsuringWindow(url);
//
// Note that Chromium reserves the right to fudge with the order of the
// command line arguments, including inserting things in arbitrary
// places, so we need to go through the args to find the one that is
// pertinent to us (if any) instead of looking at a fixed position.
const url = argv.find((arg) => arg.startsWith("ente://app"));
if (url) handleOpenEnteURLEnsuringWindow(url);
});
// Emitted once, when Electron has finished initializing.
@@ -170,7 +177,7 @@ const main = () => {
});
// On macOS, this is how we get deeplinks. See: registerForEnteLinks
app.on("open-url", (_, url) => handleOpenURLEnsuringWindow(url));
app.on("open-url", (_, url) => handleOpenEnteURLEnsuringWindow(url));
};
/**
@@ -272,7 +279,7 @@ const handleEnteLinks = (mainWindow: BrowserWindow, url: string) => {
// - the protocol we're using to serve/ our bundled web app
//
// use the same scheme ("ente://"), so the URL can directly be forwarded.
mainWindow.webContents.send("openURL", url);
mainWindow.webContents.send("openEnteURL", url);
};
/** Attach handlers to the (node) process. */
@@ -319,6 +326,8 @@ const attachProcessHandlers = () => {
*/
const waitForRendererDevServer = () => wait(1000);
const wipDesktopCustomTitlebar = process.env.ENTE_WIP_TITLEBAR == "1";
/**
* Create an return the {@link BrowserWindow} that will form our app's UI.
*
@@ -341,9 +350,35 @@ const createMainWindow = () => {
...(bounds ?? {}),
// Enforce a minimum size
...minimumWindowSize(),
// [Note: Customize the desktop title bar]
//
// 1. Remove the default title bar.
// 2. Reintroduce the title bar controls.
// 3. Show a custom title bar in the renderer.
//
// For step 3, we use `app-region: drag` to allow dragging the window by
// the title bar, and use the Window Controls Overlay CSS environment
// variables to determine its dimensions. Note that these overlay CSS
// environment vars are only available when titleBarOverlay is true, so
// unlike the tutorial which enables it only for Windows and Linux, we
// do it (Step 2) unconditionally (i.e., on macOS too).
//
// https://www.electronjs.org/docs/latest/tutorial/custom-title-bar#create-a-custom-title-bar
...(wipDesktopCustomTitlebar
? {
titleBarStyle: "hidden",
titleBarOverlay: true,
}
: {}),
// The color to show in the window until the web content gets loaded.
// See: https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
backgroundColor: "black",
// https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
//
// To avoid a flash, we want to use the same background color as the
// theme of their choice. Unless the user has modified their preference
// to not follow the system, we can deduce it from the current OS theme.
//
// See: https://www.electronjs.org/docs/latest/tutorial/dark-mode
backgroundColor: nativeTheme.shouldUseDarkColors ? "black" : "white",
// We'll show it conditionally depending on `wasAutoLaunched` later.
show: false,
});

View File

@@ -9,7 +9,7 @@ import {
makeTempFilePath,
} from "../utils/temp";
/* Ditto in the web app's code (used by the WASM FFmpeg invocation). */
/* Ditto in the web app's code (used by the Wasm FFmpeg invocation). */
const ffmpegPathPlaceholder = "FFMPEG";
const inputPathPlaceholder = "INPUT";
const outputPathPlaceholder = "OUTPUT";
@@ -19,7 +19,7 @@ const outputPathPlaceholder = "OUTPUT";
*
* [Note: FFmpeg in Electron]
*
* There is a wasm build of FFmpeg, but that is currently 10-20 times slower
* There is a Wasm build of FFmpeg, but that is currently 10-20 times slower
* that the native build. That is slow enough to be unusable for our purposes.
* https://ffmpegwasm.netlify.app/docs/performance
*

View File

@@ -2,7 +2,7 @@
import fs from "node:fs/promises";
import path from "node:path";
import { CustomErrorMessage, type ZipItem } from "../../types/ipc";
import { type ZipItem } from "../../types/ipc";
import { execAsync, isDev } from "../utils/electron";
import {
deleteTempFileIgnoringErrors,
@@ -14,7 +14,6 @@ export const convertToJPEG = async (imageData: Uint8Array) => {
const inputFilePath = await makeTempFilePath();
const outputFilePath = await makeTempFilePath("jpeg");
// Construct the command first, it may throw NotAvailable on win32.
const command = convertToJPEGCommand(inputFilePath, outputFilePath);
try {
@@ -44,25 +43,22 @@ const convertToJPEGCommand = (
];
case "linux":
// The bundled binary is an ELF x86-64 executable.
if (process.arch != "x64")
throw new Error(CustomErrorMessage.NotAvailable);
return [
imageMagickPath(),
inputFilePath,
"-quality",
"100%",
outputFilePath,
];
case "win32":
return [vipsPath(), "copy", inputFilePath, outputFilePath];
default: // "win32"
throw new Error(CustomErrorMessage.NotAvailable);
default:
throw new Error("Not available on the current OS/arch");
}
};
/** Path to the Linux image-magick executable bundled with our app */
const imageMagickPath = () =>
path.join(isDev ? "build" : process.resourcesPath, "image-magick");
/**
* Path to the vips executable bundled with our app on Linux and Windows.
*/
const vipsPath = () =>
path.join(
isDev ? "build" : process.resourcesPath,
process.platform == "win32" ? "vips.exe" : "vips",
);
export const generateImageThumbnail = async (
dataOrPathOrZipItem: Uint8Array | string | ZipItem,
@@ -133,25 +129,16 @@ const generateImageThumbnailCommand = (
];
case "linux":
// The bundled binary is an ELF x86-64 executable.
if (process.arch != "x64")
throw new Error(CustomErrorMessage.NotAvailable);
case "win32":
return [
imageMagickPath(),
"-define",
`jpeg:size=${2 * maxDimension}x${2 * maxDimension}`,
vipsPath(),
"thumbnail",
inputFilePath,
"-auto-orient",
"-thumbnail",
`${maxDimension}x${maxDimension}`,
"-unsharp",
"0x.5",
"-quality",
`${quality}`,
outputFilePath,
`${outputFilePath}[Q=${quality}]`,
`${maxDimension}`,
];
default: // "win32"
throw new Error(CustomErrorMessage.NotAvailable);
default:
throw new Error("Not available on the current OS/arch");
}
};

View File

@@ -20,7 +20,7 @@ let _child: UtilityProcess | undefined;
* [Note: ML IPC]
*
* The primary reason for doing ML tasks in the Node.js layer is so that we can
* use the binary ONNX runtime, which is 10-20x faster than the WASM one that
* use the binary ONNX runtime, which is 10-20x faster than the Wasm one that
* can be used directly on the web layer.
*
* For this to work, the main and renderer process need to communicate with each

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