Compare commits

...

867 Commits

Author SHA1 Message Date
Neeraj Gupta
abca5bc798 [auth] Potential fix for invalid handshake error on Windows (#2247)
## Description

## Tests
2024-06-22 16:49:55 +05:30
Neeraj Gupta
8841dd44c4 Additional optimizations in file size and icon quality. (#2244) 2024-06-22 16:49:10 +05:30
Neeraj Gupta
316a5e7209 [auth] Bump version 2024-06-22 16:48:16 +05:30
Neeraj Gupta
2e53dcca00 Add logs 2024-06-22 16:47:53 +05:30
Manav Rathi
595d6f894e [accounts] Make it easier for self hosters to use passkeys (#2246)
Solves a problem someone was facing on our Discord:

https://discord.com/channels/948937918347608085/1215252276911018014/1253766354402545754
2024-06-22 11:38:23 +05:30
Manav Rathi
02a4e2b1ca [accounts] Make it easier for self hosters to use passkeys
Solves a problem someone was facing on our Discord:
https://discord.com/channels/948937918347608085/1215252276911018014/1253766354402545754
2024-06-22 11:30:20 +05:30
Victor Benincasa
e7b15b67d8 Additional optimizations in file size and icon quality. 2024-06-21 14:50:07 -03:00
Neeraj Gupta
30dd41e3ca Bump version (#2239)
## Description

## Tests
2024-06-21 14:18:52 +05:30
Neeraj Gupta
f8f43b8ab7 Bump version 2024-06-21 14:18:20 +05:30
Neeraj Gupta
662210b168 [auth] Potential fix for invalid handshake error 2024-06-21 13:35:50 +05:30
Neeraj Gupta
2f60894e59 [auth] Show contact support option on error (#2238)
## Description

## Tests
2024-06-21 12:18:52 +05:30
Neeraj Gupta
da9262da79 [auth] Bump version v3.0.14 2024-06-21 12:10:35 +05:30
Neeraj Gupta
29539d9db2 [auth] Show contact support button on error dialogs 2024-06-21 12:08:26 +05:30
Manav Rathi
c4df9c7bd4 [workers] Use yarn workspaces (#2237)
The duplicate disk usage of individual node_modules is starting to get
prohibitive.
2024-06-21 11:35:36 +05:30
Manav Rathi
37296806d6 Format 2024-06-21 11:35:24 +05:30
Manav Rathi
14e0afd867 [workers] Use yarn workspaces
The duplicate disk usage of individual node_modules is starting to get
prohibitive.
2024-06-21 11:33:38 +05:30
Laurens Priem
08ceb0d5f2 Upgrade onnx dependency (#2231)
## Description

## Tests
2024-06-21 11:09:03 +05:30
Neeraj Gupta
1e83ef0c06 Add contact support button 2024-06-21 09:09:47 +05:30
Neeraj Gupta
47eef986d7 [auth] Add new and updates custom icons in auth (#2157)
**New icons added:**

- NuCommunity
- CloudAMQP

**Updated icons:**

- Twitch
- Samsung
- Render
- Registro.br
2024-06-21 08:53:31 +05:30
Neeraj Gupta
378618ac1f Maximize icon compatibility (#2226) 2024-06-21 08:50:01 +05:30
Neeraj Gupta
01c1ae3b97 Reduce filesize (#2227) 2024-06-21 08:49:39 +05:30
Neeraj Gupta
ebd35c62ec Optimize and reduce filesize (#2228) 2024-06-21 08:49:26 +05:30
Neeraj Gupta
34753b5786 Optimize and reduce filesize (#2229) 2024-06-21 08:49:02 +05:30
Neeraj Gupta
56b62d8b1b Fix keyboard pop up when autofocus is turned on (#2232)
## Description

Keyboard didn't pop up when search-field was focused on startup. For
more information see this issue:
https://github.com/ente-io/ente/issues/279

## Tests

Created an build for my Android phone.
Outcome was as expected 
"Focus search on app start"  enabled did popped the keyboard out.
"Focus search on app start" disabled did NOT popped the keyboard out and
also didn't focused the search-textfield.


This is my first pull request to any open source project. So feel free
to give some feedback!
2024-06-21 08:47:41 +05:30
Manav Rathi
705dd1bee9 [desktop] Modify the upload workaround to not get in the way of Stripe payments (#2235) 2024-06-20 23:12:31 +05:30
Manav Rathi
921ddac630 [desktop] Modify the upload workaround to not get in the way of Stripe payments 2024-06-20 23:01:06 +05:30
Manav Rathi
c8158737f6 [desktop] Add a memory usage high water mark during uploads (#2233)
Tested on macOS with large videos, but I was unable to hit the scenario
described. Will request a user who reported this issue on their Linux
machine to try out a nightly build with this change and see if it helps.
2024-06-20 21:34:10 +05:30
Manav Rathi
398ce9d445 [desktop] Add a memory usage high water mark during uploads 2024-06-20 21:30:55 +05:30
Neeraj Gupta
933ab3ac2c Upgrade onnx dependency 2024-06-20 15:48:43 +05:30
Victor Benincasa
b798dacaf2 Optimize and reduce filesize 2024-06-20 02:56:30 -03:00
Victor Benincasa
c3e94a405f Optimize and reduce filesize 2024-06-20 02:38:31 -03:00
Victor Benincasa
22e09de07a Reduce filesize 2024-06-20 02:34:12 -03:00
Victor Benincasa
492d4f0fd7 Maximize icon compatibility 2024-06-20 02:13:38 -03:00
Fokke de Boer
b9556a91a0 Fix keyboard pop up when autofocus is turned on 2024-06-20 00:45:59 +02:00
Neeraj Gupta
477bc4ca92 [mob] Reduce error severity (#2224)
## Description

## Tests
2024-06-19 17:22:11 +05:30
Neeraj Gupta
9bf8e16978 [mob] Undo redundant changes 2024-06-19 17:10:40 +05:30
Neeraj Gupta
deace2bccd Skip reporting dio error to sentry 2024-06-19 16:28:38 +05:30
Ashil
f78e01ecd5 [mob][photos] Select all from gallery (only available to internal users) (#2217)
## Description

- This feature is behind feature flag, only available to internal users.
- Needs testing and some UI tweaks.


https://github.com/ente-io/ente/assets/77285023/19938641-e8b3-4473-bb23-909f57db6994
2024-06-19 16:23:53 +05:30
Neeraj Gupta
1a9e1d7d77 Reduce error noise 2024-06-19 16:20:37 +05:30
Laurens Priem
1481c16b31 Remove feedback (#2223)
## Description

This fixes a bug where user feedback to remove a file from a certain
person would immediately be overwritten by remote sync.

## Tests

Tested in debug mode on my pixel phone.
2024-06-19 16:19:21 +05:30
laurenspriem
15baf7d0fb [mob][photos] Update remote on remove feedback 2024-06-19 16:15:41 +05:30
Neeraj Gupta
15f4e5cae8 Reduce error noise 2024-06-19 16:14:55 +05:30
Neeraj Gupta
3321d58455 reduce error noise 2024-06-19 16:05:04 +05:30
laurenspriem
38e1208591 [mob][photos] Logging 2024-06-19 14:48:13 +05:30
laurenspriem
0588c32b52 [mob][photos] Don't let syncing trigger another sync 2024-06-19 14:47:40 +05:30
Neeraj Gupta
feaf8e3a8d [auth] Sync on app resume (#2221)
## Description

## Tests
Tested locally
2024-06-19 14:27:45 +05:30
Neeraj Gupta
72584e49d6 [auth] Clean up log 2024-06-19 14:26:43 +05:30
Neeraj Gupta
21f269c999 [auth] Bump version v3.0.13 2024-06-19 14:25:37 +05:30
Neeraj Gupta
0e92a56378 [auth] Update packages 2024-06-19 14:22:00 +05:30
Neeraj Gupta
e560eaeb41 [auth] Handle duplicate signout dialog 2024-06-19 14:21:48 +05:30
Neeraj Gupta
753801c401 [auth] Sync frequently to identify logout early 2024-06-19 14:21:34 +05:30
Manav Rathi
057ea875c9 [web] Better tsc/lint in more places (#2220)
\+ misc
2024-06-19 14:11:14 +05:30
laurenspriem
dfcd254668 [mob][photos] Don't falsely fire PeopleChangedEvent 2024-06-19 14:10:04 +05:30
laurenspriem
541ed4fdba [mob][photos] Logging 2024-06-19 14:07:20 +05:30
Manav Rathi
278e40639f Another temp fix 2024-06-19 14:05:56 +05:30
Manav Rathi
93d1813f97 Help not hinder 2024-06-19 13:57:41 +05:30
laurenspriem
8c0d21ea25 [mob][photos] More logging 2024-06-19 13:56:37 +05:30
Neeraj Gupta
ae93fbf45e [auth] Handle already logged out error 2024-06-19 13:53:25 +05:30
laurenspriem
53cb013576 [mob][photos] Better logging 2024-06-19 13:50:12 +05:30
Manav Rathi
a4ff0f0fd8 Disable 2024-06-19 13:43:15 +05:30
Manav Rathi
cd56583a56 Fix 2024-06-19 13:42:27 +05:30
Manav Rathi
42ac43ed90 Disable 2024-06-19 13:41:22 +05:30
Manav Rathi
face4bb55b Fix lints 2024-06-19 13:39:54 +05:30
Manav Rathi
c6110087d9 Fix lints 2024-06-19 13:34:58 +05:30
Manav Rathi
b89968ca47 Fix lints 2024-06-19 13:32:41 +05:30
Manav Rathi
f9588cf1c8 Allow referrer
https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/jsx-no-target-blank.md
2024-06-19 13:31:32 +05:30
Manav Rathi
04fd2f8007 Fix lints 2024-06-19 13:30:18 +05:30
Manav Rathi
b52192df6a Update 2024-06-19 13:25:10 +05:30
Manav Rathi
95cf85e573 Workers are in 2024-06-19 13:23:41 +05:30
Manav Rathi
6ed2ad0d28 [accounts] Handle long passkey names (#2219)
/cc @ua741
2024-06-19 13:08:42 +05:30
ashilkn
5d61750508 [mob][photos] Remove comments, clean up, use better variable name, add comments 2024-06-19 12:56:00 +05:30
Manav Rathi
22cf4eb1fb [accounts] Handle long passkey names 2024-06-19 12:52:58 +05:30
Neeraj Gupta
431ad66723 Dashboard improvement (#2207)
After clicking the FETCH button, if the data is fetched successfully
then a new button labelled as 'MORE' appears, clicking on this opens a
dropdown menu which has 3 options: Disable2fa, Disable Passkeys and
Close Family, clicking on any of the option directly performs the action
required.
2024-06-19 12:39:08 +05:30
ashilkn
6dfac5643a Merge branch 'main' into select_all 2024-06-19 12:29:42 +05:30
ashilkn
46b9aa259c [mob][photos] Keep select all feature behind feature flag 2024-06-19 12:28:47 +05:30
ashilkn
d7a1bf3fcc [mob][photos] Add select all feature to galleries (3) 2024-06-19 12:21:52 +05:30
atyabbin
b7d3e5439a Pressing enter key will call fetchdata 2024-06-19 12:09:55 +05:30
Manav Rathi
cca1b1971f [infra] Import Sentry configuration into monorepo (#2216) 2024-06-19 12:01:54 +05:30
Manav Rathi
e6a47b29bb [infra] Import Sentry configuration into monorepo 2024-06-19 10:54:04 +05:30
Neeraj Gupta
a10562018c [server] Improve passkey error handling (#2211)
## Description

## Tests
Tested locally
2024-06-19 10:12:20 +05:30
Neeraj Gupta
2a905a439c [server] Inc passkey name limit to 256 2024-06-19 10:11:10 +05:30
atyabbin
ef37a4cad8 Reverting the changes in local.yaml 2024-06-19 09:56:59 +05:30
Neeraj Gupta
2fcbebd375 [mob] Log suggestion errors (#2212)
## Description

## Tests
2024-06-18 23:36:15 +05:30
Neeraj Gupta
c50366ce3b Log suggestion errors 2024-06-18 23:33:36 +05:30
Neeraj Gupta
70a33ca0b8 [mob] Extract string 2024-06-18 23:30:26 +05:30
Neeraj Gupta
b89378e838 Return bad request if name validation fails 2024-06-18 22:54:42 +05:30
Manav Rathi
00f59dc842 [web] New translations (#2210)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-18 20:20:12 +05:30
Crowdin Bot
64470e156a New Crowdin translations by GitHub Action 2024-06-18 14:49:00 +00:00
Manav Rathi
5fbca87998 [meta] Split translation related workflows (#2209)
1. Sources uploaded anytime the {mobile,auth}/lib/l10n/arb/app_en.arb
changes in main.
2. Tuesday morning: Download translations from crowdin.

Step 2 can be done manually by running the workflows, e.g.

    gh workflow run auth-crowdin-push.yml
    gh workflow run mobile-crowdin-push.yml
2024-06-18 20:18:23 +05:30
Manav Rathi
ce989b786f [meta] Split translation related workflows
1. Sources uploaded anytime the {mobile,auth}/lib/l10n/arb/app_en.arb changes in main.
2. Tuesday morning: Download translations from crowdin.

Step 2 can be done manually by running the workflows, e.g.

    gh workflow run auth-crowdin-push.yml
    gh workflow run mobile-crowdin-push.yml
2024-06-18 20:15:00 +05:30
atyabbin
480a86af0a Changed the label of the new Button from 'More' to 'MORE' 2024-06-18 19:00:32 +05:30
Laurens Priem
8a9d196282 [Mob][Photos] Show video duration only on Gallery (#2205)
## Description

- Show video duration overlay only on galleries
- In all other places, show a centred play button -- showing the overlay
on some places wasn't looking good, like memories, when opening a video
etc. So have replaced the overlay with a play button, just like before.
- Pass optional parameter to get Thumbnail without any icons stacked
over it.
2024-06-18 18:43:28 +05:30
atyabbin
a5b0bc259d Added a dropdown button to select different actions to be performed 2024-06-18 18:40:40 +05:30
Neeraj Gupta
0ee2da9028 [server] Return bad req if passkey is deleted 2024-06-18 18:01:44 +05:30
ashilkn
a099869ecc [mob][photos] Add an new instance varialbe in ThumbnailWidget which can be optionally passed as true to get the thumbnail without any overlay icons 2024-06-18 17:10:22 +05:30
ashilkn
d282ef2eae [mob][photos] Show video duration only on GalleryFileWidget and show a centered play icon otherwise 2024-06-18 17:06:55 +05:30
Neeraj Gupta
bcca58d5c0 [auth] New translations (#2185)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-06-18 16:49:52 +05:30
Neeraj Gupta
ff0fa9a69f Date picker transaltion (#2203)
## Description
Fixes https://github.com/ente-io/ente/issues/2155

## Tests
Tested locally
2024-06-18 15:48:10 +05:30
Neeraj Gupta
852e3a59a3 [mob] Show am/pm picker for selected locale 2024-06-18 15:45:29 +05:30
Manav Rathi
5bad7dcb7a [web] Remove retries and other knick-knacks off the HEIC conversion (#2202) 2024-06-18 15:45:24 +05:30
Neeraj Gupta
23f6da17c4 [mob] Pass correct locale for datepicker 2024-06-18 15:41:14 +05:30
Manav Rathi
b22af43e8a Reuse 2024-06-18 15:39:11 +05:30
Manav Rathi
36e3907dfc [web] Remove retries and other knick-knacks off the HEIC conversion
- Have kept the GC pause
- If needed, will selectively bring back the other workarounds still demonstrably needed
2024-06-18 15:26:56 +05:30
Neeraj Gupta
38ee01017a [mob][fix] Hide archived items from memories (#2201)
## Description

## Tests
Tested locally and verified the archived items are now hidden from
memories.
2024-06-18 15:25:27 +05:30
Neeraj Gupta
ec81300971 [mob][fix] Hide archived items from memories 2024-06-18 15:23:28 +05:30
Crowdin Bot
bd239241d7 New Crowdin translations by GitHub Action 2024-06-18 09:27:36 +00:00
Manav Rathi
9951e8def4 [meta] Update to v2 of Crowdin action (#2200)
https://github.com/crowdin/github-action/releases/tag/v2.0.0
2024-06-18 14:57:04 +05:30
Manav Rathi
76993961f0 [meta] Update to v2 of Crowdin action
https://github.com/crowdin/github-action/releases/tag/v2.0.0
2024-06-18 14:56:29 +05:30
Manav Rathi
29805bdf4d [meta] Change translation sync freq to weekly (#2198) 2024-06-18 14:52:44 +05:30
Manav Rathi
7fb2956a2e [meta] Change translation sync freq to weekly 2024-06-18 14:51:54 +05:30
Manav Rathi
ec82518639 [web] New translations (#2197)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-18 14:51:17 +05:30
Crowdin Bot
b4cd1c715f New Crowdin translations by GitHub Action 2024-06-18 09:17:16 +00:00
Manav Rathi
9603c284dc [web] Sync delete message with mobile (#2196) 2024-06-18 14:46:32 +05:30
Neeraj Gupta
a638f9b4a1 [mobile] New translations (#2184)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-06-18 14:39:55 +05:30
Neeraj Gupta
a5c28f1a8e [cli] Add support for handling passkey based MFA (#2195)
## Description
- Print help docs when no input is passed.

## Tests
Tested locally
2024-06-18 14:38:09 +05:30
Neeraj Gupta
dd3d9c8d51 [cli] Bump version 0.1.16 2024-06-18 14:37:38 +05:30
Neeraj Gupta
58b9121e52 Add support to handle passkey verification 2024-06-18 14:36:15 +05:30
Manav Rathi
606b0c35bb context != nested 2024-06-18 14:30:00 +05:30
Manav Rathi
429d9fdbe5 [pk] Whitelist ente-cli's custom protocol (#2194) 2024-06-18 14:26:45 +05:30
atyabbin
326e673d12 Added display message after button clicks 2024-06-18 14:25:37 +05:30
Neeraj Gupta
dcbdeca64e [cli] Print help when no command is specified 2024-06-18 14:25:21 +05:30
Manav Rathi
32faa7f4f8 [pk] Whitelist ente-cli's custom protocol 2024-06-18 14:24:02 +05:30
Neeraj Gupta
ecb0d47055 [cli] Helper method to open url in browser 2024-06-18 14:15:31 +05:30
Manav Rathi
804fc71538 Context 2024-06-18 14:10:39 +05:30
Manav Rathi
eebfb27e5e Use same message as mobile 2024-06-18 14:09:33 +05:30
Manav Rathi
d18e257788 Key 2024-06-18 14:05:04 +05:30
Manav Rathi
adec30a01e Key 2024-06-18 14:03:06 +05:30
Manav Rathi
6645bd59b0 [web] Allow user to update subscriptions after cancel (#2192)
This fixes the issue reported by a user where they cancelled their
subscription, then later on tried to upgrade, but were then redirected
to the new subscription flow instead of the upgrade flow.

**Tested (on localhost):**

- [x] Buy new plan
- [x] Change existing plan
- [x] Change existing plan after cancelling
2024-06-18 13:43:46 +05:30
Manav Rathi
1aa3e9ac56 Key 2024-06-18 13:42:48 +05:30
Manav Rathi
ad406a0f0b Rearrange 2024-06-18 13:40:24 +05:30
Manav Rathi
6d6eae4c11 Keys 2024-06-18 13:31:51 +05:30
Manav Rathi
772e3f2ebd Keys 2024-06-18 13:30:04 +05:30
atyabbin
00b68131a8 Solved the lint issues 2024-06-18 13:21:37 +05:30
atyabbin
de8d81300f Modified the Sidebar Component 2024-06-18 13:10:19 +05:30
Manav Rathi
34f92f93e5 [docs] Add sidebar link to missing thumbs troubleshooting page (#2191) 2024-06-18 13:07:37 +05:30
Manav Rathi
00a293df02 [docs] Add sidebar link to missing thumbs troubleshooting page 2024-06-18 13:07:06 +05:30
Manav Rathi
8ebdab291c [docs] Mention Firefox's privacy.resistFingerprinting issue (#2190) 2024-06-18 13:05:28 +05:30
Manav Rathi
148ee3f2c4 lf 2024-06-18 13:03:04 +05:30
Manav Rathi
4428996541 Fix 2024-06-18 13:02:28 +05:30
Manav Rathi
fdd2bffc07 [docs] Mention Firefox's privacy.resistFingerprinting issue 2024-06-18 13:00:52 +05:30
Manav Rathi
dbf737092b [web] Allow user to update subscriptions after cancel
This fixes the issue reported by a user where they cancelled their subscription,
then later on tried to upgrade, but were then redirected to the new subscription
flow instead of the upgrade flow.
2024-06-18 11:30:39 +05:30
Manav Rathi
5506652179 [web-ish] yarn 1.22.21 => 1.22.22 (#2188) 2024-06-18 11:00:01 +05:30
Manav Rathi
d1c9033866 [web-ish] yarn 1.22.21 => 1.22.22 2024-06-18 10:56:37 +05:30
Manav Rathi
795767b2cb [worker] Log on all non-200 responses from upstream +1 (#2187)
- Allow albums.ente.io/sh
- Log on all non-200 responses from upstream
- Use an easier to grep label
2024-06-18 10:08:16 +05:30
Manav Rathi
544a1df21b Log on all non-200 responses from upstream 2024-06-18 09:58:36 +05:30
atyabbin
e287e80257 Added new buttons in the dashboard 2024-06-18 09:56:00 +05:30
Manav Rathi
1dffe49069 Apparently shared albums code also uses the upload URL
Need to understand more why this is happening, but it is.
2024-06-18 09:55:44 +05:30
Manav Rathi
64dedb7edd thumb 2024-06-18 09:50:20 +05:30
Manav Rathi
7566702569 Allow albums.ente.io/sh 2024-06-18 09:38:45 +05:30
atyabbin
d716f18c2e Added buttons for disable2fa, close family and disable passkeys 2024-06-18 09:38:36 +05:30
Manav Rathi
d006f74cd4 add human readable upload result to log file output (#2183)
## Description

Make the logfile more user friendly by adding a readable upload result
string instead of just a number.

Before the logfile showed only a not human understandable number for the
upload result:
`"Uploaded xyz.jpg with result 3"` 

This PR adds the key from the enum UPLOAD_RESULT to make it easy for a
human to understand the result:
`"Uploaded xyz.jpg with result 3 (BLOCKED)"`
2024-06-18 09:32:15 +05:30
Manav Rathi
27191d777a [web] Faster and noUncheckedIndexedAccess compliant uint8array merging (#2186)
The script I used for testing - 10-100x faster, and the faster the
longer the arrays. Note that speed was not the primary motivator for
this change, I just wanted to enable `noUncheckedIndexedAccess`

```js
//zs = [...Array(10).keys()].map(() => Uint8Array.from(Array(100000).keys()));                                                    
zs = [...Array(100).keys()].map(() => Uint8Array.from(Array(1000).keys()));

const m0 = (as) => new Uint8Array(as.reduce((acc, x) => acc.concat(...x), []));

const mergeUint8Arrays = (as) => {
    const len = as.reduce((len, xs) => len + xs.length, 0);
    const result = new Uint8Array(len);
    as.reduce((n, xs) => (result.set(xs, n), n + xs.length), 0);
    return result;
};

s = performance.now();
a = m0(zs);
e = performance.now();
console.log(e - s, "ms", a.length, "m0");
//console.log(a);                                                                                                                 

s = performance.now();
b = mergeUint8Arrays(zs);
e = performance.now();
console.log(e - s, "ms", b.length, "merge");
//console.log(b);                                                                                                                 

console.log(JSON.stringify(a) === JSON.stringify(b))
```
2024-06-18 09:28:25 +05:30
Manav Rathi
c68a16a9a9 Enable 2024-06-18 09:25:35 +05:30
Manav Rathi
ed1e6df967 Faster and noUncheckedIndexedAccess compliant 2024-06-18 09:19:43 +05:30
Crowdin Bot
396651b2b5 New Crowdin translations by GitHub Action 2024-06-18 01:59:37 +00:00
Joachim Weinbrenner
93f9848d02 add human readable upload result to log 2024-06-17 21:17:15 +02:00
ialexanderbrito
a2a295308d Merge branch 'main' into update-icons 2024-06-17 15:31:52 -03:00
Manav Rathi
aa0325d72c Faster method that doesn't trip up noUncheckedIndexedAccess 2024-06-17 20:29:28 +05:30
Manav Rathi
4510c14af2 Add a merge function 2024-06-17 19:58:46 +05:30
Manav Rathi
dc709e7649 [workers] Ignore case when comparing allowed headers (#2179) 2024-06-17 18:37:54 +05:30
Manav Rathi
b7fdf6c66b Log on errors 2024-06-17 18:35:59 +05:30
Manav Rathi
9f5115cc08 [workers] Ignore case when comparing allowed headers 2024-06-17 18:31:45 +05:30
Manav Rathi
a9bace7781 [desktop] Continue iterating of the pre-release process (#2177)
Ref:
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
2024-06-17 16:47:56 +05:30
Manav Rathi
014fbfe0eb lf 2024-06-17 16:42:36 +05:30
Manav Rathi
38cdfcf0a4 [desktop] Continue iterating of the pre-release process 2024-06-17 16:40:35 +05:30
Manav Rathi
3f9107c497 [server] Stop making 32 bit ARM images (#2175)
The code doesn't get tested or run and is likely not safe for 32 bits

> 941.0 pkg/utils/billing/billing.go:117:13: cannot use
ente.FreePlanStorage
(untyped int constant 5368709120) as int value in struct literal
(overflows)
>
>
https://github.com/ente-io/ente/actions/runs/9546167833/job/26308448952
2024-06-17 16:28:17 +05:30
Manav Rathi
8870738330 [server] Stop making 32 bit ARM images
The code doesn't get tested or run and is likely not safe for 32 bits

> 941.0 pkg/utils/billing/billing.go:117:13: cannot use ente.FreePlanStorage
  (untyped int constant 5368709120) as int value in struct literal (overflows)
>
> https://github.com/ente-io/ente/actions/runs/9546167833/job/26308448952
2024-06-17 16:26:55 +05:30
Manav Rathi
38cae5c3d9 [docs] Passkeys: mention blog post (#2173) 2024-06-17 16:10:07 +05:30
Manav Rathi
e133e6272a [docs] Passkeys: mention blog post 2024-06-17 16:09:13 +05:30
Manav Rathi
c486b8f2c1 [desktop] Next RC (#2172) 2024-06-17 14:25:03 +05:30
Manav Rathi
f6cbbbead6 [docs] Mark passkeys as released (#2171) 2024-06-17 14:24:41 +05:30
Manav Rathi
3ecef5e751 [desktop] Next RC 2024-06-17 14:23:38 +05:30
Manav Rathi
ef64ce065b [docs] Mark passkeys as released 2024-06-17 14:09:56 +05:30
Manav Rathi
99fdbd8d40 photosd-v1.7.1 (#2170) 2024-06-17 13:57:28 +05:30
Manav Rathi
ac4a68d64e photosd-v1.7.1 2024-06-17 13:55:31 +05:30
Manav Rathi
dae5b29ef1 [docs] Add a border to help differentiate the image from the subsequent text (#2169)
Nb: black works fine in dark mode too
2024-06-17 12:24:14 +05:30
Manav Rathi
4451b489e4 Add a border to help differentiate the image from the subsequent text
black works fine in dark mode too
2024-06-17 12:22:47 +05:30
Manav Rathi
b19281ea2b [web] Update cast to use the tsconfig we want (#2168) 2024-06-17 12:08:41 +05:30
Manav Rathi
8e923fe443 All 2024-06-17 11:46:34 +05:30
Manav Rathi
fe47186ace tsc 2024-06-17 11:45:28 +05:30
Manav Rathi
326704a605 tsc 2024-06-17 11:38:13 +05:30
Manav Rathi
d560ed9a33 Reduce state 2024-06-17 11:35:19 +05:30
Manav Rathi
0a8f51832a tsc 2024-06-17 11:34:16 +05:30
Neeraj Gupta
d2112b984d Added coindcx icon (#2148)
## Description
Added coindcx icon
uploaded coindcx svg and updated json file.
2024-06-17 11:24:48 +05:30
Neeraj Gupta
50aad0c5d1 [Auth] Passkey fix for linux (#2154)
## Description

- Updated url to enteauth://passkey
- Support mimetype in appimage so redirection is done properly

## Tests
2024-06-17 11:24:09 +05:30
Manav Rathi
e6e721f0ba [workers] Import upload worker (#2164) 2024-06-17 09:12:15 +05:30
Manav Rathi
80b34f1aef Reduce spurious logs for headers our clients send 2024-06-17 09:03:27 +05:30
ashilkn
ffcda13a4e [mob][photos] Add select all feature to galleries (2) 2024-06-17 08:51:18 +05:30
ashilkn
9f4ce085c1 [mob][photos] Add select all feature to galleries (1) 2024-06-17 08:43:07 +05:30
ashilkn
ff1e84d0d8 [mob][photos] Avoid using .of(context) in initState to stop exceptions from being thrown 2024-06-17 08:41:12 +05:30
ashilkn
4f18fff36b [mob][photos] Assert or log depending on the context if inherited widget holding selection state is used in a wrong way 2024-06-17 08:16:31 +05:30
Manav Rathi
d5a8586152 Import functionality
Rewritten but referencing the code imported from dashboard
2024-06-17 03:40:20 +05:30
Manav Rathi
bfcd84c940 Whitelist the necessary one 2024-06-16 20:56:28 +05:30
Manav Rathi
a4bc5fa0df OPTIONS 2024-06-16 20:49:44 +05:30
Manav Rathi
ed406e7eb0 Sketch 2024-06-16 20:33:56 +05:30
Manav Rathi
b4dc49ef2f [workers] Import health check worker (#2162) 2024-06-16 19:43:31 +05:30
Manav Rathi
483e3be682 Improvements 2024-06-16 19:40:03 +05:30
Manav Rathi
17f0d77a31 Reorder to fix errors 2024-06-16 19:18:39 +05:30
Manav Rathi
c6f644ef8a [workers] Import health check worker 2024-06-16 19:12:52 +05:30
Prateek Sunal
01b566698f fix(workflow/auth): revert back flutter_distributor to pub.dev source 2024-06-16 17:03:45 +05:30
Manav Rathi
469f884d8c [workers] Import files worker (#2161) 2024-06-16 15:01:26 +05:30
Manav Rathi
9e4412cbee Correct place 2024-06-16 14:52:15 +05:30
Manav Rathi
f4bab262ca Import 2024-06-16 14:47:35 +05:30
Manav Rathi
73fd63616d Sketch 2024-06-16 14:39:05 +05:30
Manav Rathi
9362a4b9d3 Reduce log noise 2024-06-16 14:29:54 +05:30
Manav Rathi
6c5ea59506 [workers] Import thumbnails worker (#2160) 2024-06-16 14:19:02 +05:30
Manav Rathi
90845bdb02 Rename 2024-06-16 14:12:16 +05:30
Manav Rathi
f6729be5ab Fix typo 2024-06-16 14:09:20 +05:30
Manav Rathi
344c5cc399 Desktop origin includes scheme 2024-06-16 14:06:20 +05:30
Manav Rathi
6e1ea29c39 Implement
Rewritten, but referencing the existing worker imported from the dashboard
2024-06-16 13:51:42 +05:30
Manav Rathi
d76c6dd63c Sketch 2024-06-16 13:24:56 +05:30
Manav Rathi
f69daa4608 [workers] Import public albums worker (#2158) 2024-06-16 10:19:42 +05:30
Manav Rathi
290564c973 x-client-package
Albums app is using the old axios layer which is passing "x-client-package",
will also allow that for now
2024-06-16 10:06:22 +05:30
Manav Rathi
b781f33e4b ditto 2024-06-16 09:57:44 +05:30
Manav Rathi
b8bc01561d GET
Rewritten, but referencing the existing worker imported from the dashboard
2024-06-16 09:55:49 +05:30
Manav Rathi
734cb798d3 Handle options
Rewritten, but referencing the existing worker imported from the dashboard
2024-06-16 09:27:59 +05:30
ialexanderbrito
e1f7b04aa0 fix: old icons import 2024-06-16 00:46:17 -03:00
ialexanderbrito
533c0230e4 feat: add and update icons 2024-06-16 00:33:48 -03:00
Manav Rathi
ac8ebd0ed3 Skeleton 2024-06-16 08:56:07 +05:30
Manav Rathi
fc5eb296d2 Disable default route 2024-06-16 08:39:59 +05:30
Manav Rathi
c05d8a8e44 [worker] Use tail worker for logging (#2153) 2024-06-15 22:59:50 +05:30
Manav Rathi
24845a4735 Update README 2024-06-15 22:56:32 +05:30
Manav Rathi
2b490fe131 Cleanup 2024-06-15 22:49:35 +05:30
Manav Rathi
07f0cc9342 Need to pass creds in authorization header 2024-06-15 22:35:38 +05:30
Manav Rathi
49ddd287d0 Only log interesting events 2024-06-15 20:18:10 +05:30
Manav Rathi
bffcd11100 console.log 2024-06-15 19:47:20 +05:30
Manav Rathi
25d6ebdb19 Add a check for an upcoming restriction 2024-06-15 19:42:10 +05:30
Manav Rathi
64a539adb0 Hook it up 2024-06-15 19:23:05 +05:30
Manav Rathi
3646809f06 Promise<void>
Ref: https://dev.to/krasun/pushing-cloudflare-worker-logs-to-grafana-loki-1elg
2024-06-15 19:18:39 +05:30
Manav Rathi
fb0e857514 Push the entire event (it contains the worker name too) 2024-06-15 19:16:17 +05:30
Manav Rathi
a1059c543b Fill in 2024-06-15 19:09:42 +05:30
Manav Rathi
8fe2b9cb27 The protocol 2024-06-15 18:27:44 +05:30
Manav Rathi
5e080a90e3 Skeletal tail worker 2024-06-15 17:51:46 +05:30
Vishnu Mohandas
08255b3f8a ente -> Ente (#2151) 2024-06-15 16:21:45 +05:30
vishnukvmd
f032739461 ente -> Ente 2024-06-15 16:21:10 +05:30
ashilkn
1e8f739ef2 Merge branch 'main' into select_all 2024-06-15 15:38:04 +05:30
ashilkn
befcb72b04 [mob][photos] Make Select all's UI better 2024-06-15 15:36:50 +05:30
Manav Rathi
841da80c97 [workers] Minor cleanup, in prep for moving more of their siblings here (#2149) 2024-06-15 12:28:34 +05:30
ashilkn
f001812a1d [mob][photos] Assert that SelectionState inherited widget is in context or not 2024-06-15 12:23:45 +05:30
ashilkn
1b993a617a [mob][photos] Update select all button's state checking if all are selected or not on each select/unselect operation 2024-06-15 12:21:58 +05:30
Manav Rathi
60b1c32567 Note 2024-06-15 12:09:21 +05:30
Manav Rathi
bd6ac2c4fc Sync 2024-06-15 12:03:32 +05:30
Manav Rathi
eaccba5f22 Explicit header whitelist 2024-06-15 12:02:29 +05:30
Manav Rathi
562313b218 Tweaks 2024-06-15 11:54:26 +05:30
Manav Rathi
0650d176ee Latest yarn
Corepack will automatically install the latest one
2024-06-15 11:44:39 +05:30
Manav Rathi
6bbd944de4 Update compt date
> When you start your project, you should always set compatibility_date to the
> current date. You should occasionally update the compatibility_date field.
>
> https://developers.cloudflare.com/workers/configuration/compatibility-dates/
2024-06-15 11:41:09 +05:30
Manav Rathi
8aaad79897 yarn add --dev '@cloudflare/workers-types@latest' 2024-06-15 11:39:56 +05:30
Manav Rathi
d499549734 Use syntax recommended in docs
https://developers.cloudflare.com/workers/configuration/routing/custom-domains
2024-06-15 11:26:54 +05:30
Nikunj Kumar Nakum
db22c5bc97 Update custom-icons.json
updated coindcx icon
2024-06-15 10:51:25 +05:30
Nikunj Kumar Nakum
34f49362fd Added CoinDCX icon
Uploaded coindcx svg file
2024-06-15 10:46:49 +05:30
Manav Rathi
af21ff640d (CF's) fetch can return a promise 2024-06-15 10:03:39 +05:30
Manav Rathi
69e69c2e0f Formatting and other minor tweaks 2024-06-15 09:54:28 +05:30
Vishnu Mohandas
a0445fb4f6 v901 (#2142) 2024-06-15 00:42:56 +05:30
Prateek Sunal
8161403d84 fix(workflow/auth): use custom distributor repo for appimage 2024-06-15 00:39:51 +05:30
Prateek Sunal
0713e34aec chore(auth): bump packages 2024-06-15 00:35:46 +05:30
Prateek Sunal
b504f554b3 fix(auth): add mimetype to appimage 2024-06-15 00:35:27 +05:30
vishnukvmd
3d6af698b6 v901 2024-06-15 00:00:07 +05:30
Prateek Sunal
ff3ddb3d8d fix(auth): update deep link for linux 2024-06-14 22:52:29 +05:30
ashilkn
f04e54f68b [mob][photos] Select all MVP 2024-06-14 22:30:02 +05:30
Neeraj Gupta
16817eceac [photos] Update bundle name from ente Photos -> Ente Photos (#2141)
## Description

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

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

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

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

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

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

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

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

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

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

(Did not verify by running on mobile)

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

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

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

Same as title.

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

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

Also update plugins.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

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

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

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

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

## Tests

Tested in debug mode on my pixel phone.
2024-06-04 18:33:22 +05:30
laurenspriem
465760e329 [mob][photos] Increase file download limit to 10 2024-06-04 18:11:54 +05:30
laurenspriem
04048b20fe [mob][photos] Make sure indexing is paused instantly 2024-06-04 18:11:15 +05:30
laurenspriem
6743aa3db4 [mob][photos] Cooldown in indexing to prevent OS killing app 2024-06-04 17:53:25 +05:30
Neeraj Gupta
e3bbd7f536 Remove shared files from large files list 2024-06-04 17:43:14 +05:30
Neeraj Gupta
e5a71da00a Revert "Rename Backed up folder -> Automatic backups'"
This reverts commit 0f99fa2ba7.
2024-06-04 17:40:12 +05:30
Neeraj Gupta
f47fc2c27c Add view large file option 2024-06-04 17:40:08 +05:30
laurenspriem
a24d8f94d3 [mob][photos] Wait on interaction in iOS 2024-06-04 17:02:45 +05:30
Neeraj Gupta
f8b933a08f Add descriptions to sections 2024-06-04 16:59:14 +05:30
Neeraj Gupta
943dceb993 Move free up space options into separate page 2024-06-04 16:44:58 +05:30
Neeraj Gupta
0f99fa2ba7 Rename Backed up folder -> Automatic backups' 2024-06-04 16:33:00 +05:30
Neeraj Gupta
8a81c0e66c generated strings 2024-06-04 16:10:09 +05:30
Manav Rathi
9faa75e7aa [web] New translations (#1997)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-04 15:41:23 +05:30
Crowdin Bot
1e420fce74 New Crowdin translations by GitHub Action 2024-06-04 10:08:32 +00:00
Manav Rathi
04a41e278d [web] Localized string fixes (#1996)
- Add missing string
- Rename
- Reuse
2024-06-04 15:37:39 +05:30
Manav Rathi
3735c0ba4f Rename 2024-06-04 15:34:57 +05:30
Manav Rathi
e49a7abe6d rename and reuse 2024-06-04 15:32:47 +05:30
Manav Rathi
a9c368fa0c Rename 2024-06-04 15:28:25 +05:30
Manav Rathi
1fcb26453a Add missing string 2024-06-04 15:25:47 +05:30
Manav Rathi
d863797f34 [web] Improve self hosted file fetch security (#1994) 2024-06-04 14:52:29 +05:30
Manav Rathi
13c64e0cce publ albums 2024-06-04 14:46:50 +05:30
Manav Rathi
21d3d55bf5 cast 2024-06-04 14:27:02 +05:30
Manav Rathi
895ab1764e Thumbs 2024-06-04 14:09:47 +05:30
Manav Rathi
d44b951f0d Retain older behaviour for default fetches 2024-06-04 13:58:07 +05:30
Manav Rathi
515c28530e Thumb 2024-06-04 13:40:49 +05:30
Manav Rathi
9edbdfdd49 File URL 2024-06-04 13:39:08 +05:30
Manav Rathi
efcf36ea4e files origin 2024-06-04 13:32:35 +05:30
Manav Rathi
471df817ac Thumbs 2024-06-04 13:28:03 +05:30
Manav Rathi
dcc599d856 Use for file 2024-06-04 13:22:34 +05:30
Ashil
f2283edb79 [mob][photos] Bump up version + use latest flutter version (v3.22.1) (#1993) 2024-06-04 13:07:17 +05:30
Manav Rathi
89b703498c [web] Pass the auth token as a query param when fetching files 2024-06-04 12:58:21 +05:30
Neeraj Gupta
72f4ebfe42 Merge branch 'generic_group_by' into group_by_size 2024-06-04 12:45:32 +05:30
Neeraj Gupta
f876ba627e Merge branch 'main' into generic_group_by 2024-06-04 12:44:00 +05:30
ashilkn
3d0a810f26 [mob][photos] Upgrade share_plus 2024-06-04 12:11:04 +05:30
ashilkn
8b44165b77 [mob][photos] Fix shadows in send link icon 2024-06-03 18:35:58 +05:30
ashilkn
482239ce8d [mob][photos] Change names and copy 2024-06-03 18:04:58 +05:30
ashilkn
ee602e63d2 [mob][photos] Show loading dialog after clicking on send link till the native share sheet comes up 2024-06-03 17:58:45 +05:30
ashilkn
5367e90ecf [mob][photos] Stop showing redundant toast 2024-06-03 17:49:37 +05:30
ashilkn
7204d3471f [mob][photos] Do not show fav icon on placeholder elements 2024-06-03 16:36:22 +05:30
ashilkn
f7e24287ba [mob][photos] Tweak stroke of elements in placeholder to match figma design 2024-06-03 16:30:50 +05:30
ashilkn
8367e4d4e1 [mob][photos] Fix UI of element depicting extra photos in placeholder shared with link 2024-06-03 16:22:22 +05:30
ashilkn
7ee9d8efdd [mob][photos] Upgrade dependency to work with flutter 3.22.x 2024-06-03 15:41:57 +05:30
ashilkn
4f2dd7ccdf Merge branch 'main' into send_link_button_change 2024-06-03 15:21:59 +05:30
Aman Raj Singh Mourya
0d99d3e037 [mob][photos] removed commented code 2024-06-03 13:20:05 +05:30
Aman Raj Singh Mourya
39d50d24f0 [mob][photos] send link button changed 2024-06-03 13:15:09 +05:30
Aman Raj Singh Mourya
ebf83b7bba [mob][photos] merge placeholder_for_link2 2024-06-03 12:15:43 +05:30
laurenspriem
1fdbf4f5f5 [mob][photos] Correct dynamic size of duration 2024-06-01 17:27:49 +05:30
ashilkn
33656c8206 [mob][photos] perf improvement when computing score on magic search 2024-06-01 13:12:29 +05:30
laurenspriem
354762eb72 Merge branch 'main' into thumbnail_duration 2024-05-31 18:27:58 +05:30
laurenspriem
054dd58435 Merge branch 'main' into thumbnail_duration 2024-05-31 15:30:33 +05:30
laurenspriem
ce7451dbb4 Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-31 13:59:43 +05:30
laurenspriem
e99da59699 Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-30 23:08:02 +05:30
laurenspriem
6635f4c9a4 [mob][photos] Play icon fallback for duration 2024-05-30 22:59:41 +05:30
Prateek Sunal
5448ca116c fix(mobile): update video editor trimmer color 2024-05-30 22:40:48 +05:30
Prateek Sunal
bfa652df36 feat(mobile): add all pages for video editor 2024-05-30 22:38:05 +05:30
laurenspriem
f71dd32400 [mob][photos] Add dark transparent background 2024-05-30 20:36:01 +05:30
Aman Raj Singh Mourya
3c5ba5b94e [mob][photos] changed variable and function name 2024-05-30 19:18:00 +05:30
laurenspriem
5a76df7f62 [mob][photos] Also show duration for less than 10 second videos 2024-05-30 17:30:10 +05:30
laurenspriem
12d9bc7bce Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-30 17:08:15 +05:30
Aman Raj Singh Mourya
5099dfdd74 [mob][photos] added delete function for placeholder image 2024-05-30 14:03:40 +05:30
Aman Raj Singh Mourya
7f816e80a2 [mob][photos] share placeholder with link when sharing 2nd draft 2024-05-30 12:48:07 +05:30
Aman Raj Singh Mourya
b5eae21ae7 [mob][photos] send placeholder with link when sharing 2024-05-29 13:02:45 +05:30
Aman Raj Singh Mourya
25d13d531d Merge branch 'main' into placeholder_for_link2 2024-05-29 12:44:03 +05:30
laurenspriem
5e50d80547 [mob][photos] Remove code 2024-05-27 22:09:20 +05:30
laurenspriem
65201d2b57 [mob][photos] Show video duration on thumbnails 2024-05-27 22:07:06 +05:30
Neeraj Gupta
f5093ddf63 Stick to old grouping behaviour for magicsearch 2024-05-27 18:07:07 +05:30
Neeraj Gupta
ac3c6b10a5 Gallery: Support for group by size 2024-05-27 18:03:26 +05:30
Neeraj Gupta
95bb363aba Add widget to show fileSize overlay 2024-05-27 15:33:29 +05:30
Aman Raj Singh Mourya
acf7b3a865 Merge branch 'main' into placeholder_for_link 2024-05-27 14:39:37 +05:30
Aman Raj Singh Mourya
8f1119525b [mob][photos] placeholder for link 1st draft 2024-05-27 14:38:48 +05:30
Neeraj Gupta
bcf3084d97 Merge branch 'main' into generic_group_by 2024-05-27 11:54:37 +05:30
Prateek Sunal
fae54faffc fix(icons): update dev flavor icon 2024-05-26 17:29:04 +05:30
Neeraj Gupta
5e4d530b93 [mob] Fix range calculation while refresh lazy gallery group 2024-05-23 15:18:02 +05:30
Neeraj Gupta
22ff318249 [mob] Fix bug in daysInSameWeek check 2024-05-23 15:11:41 +05:30
Neeraj Gupta
643b77e81e Fix title for month 2024-05-23 14:18:37 +05:30
Neeraj Gupta
3ce8a09e39 Merge branch 'main' into generic_group_by 2024-05-23 14:13:35 +05:30
Neeraj Gupta
ce6160a06a Merge branch 'main' into generic_group_by 2024-05-22 15:18:44 +05:30
Neeraj Gupta
c21a0cfdb4 [mob] Lint fix 2024-05-21 17:46:23 +05:30
Neeraj Gupta
241c755446 Merge branch 'main' into generic_group_by 2024-05-21 17:45:27 +05:30
Prateek Sunal
d4f781bf35 fix(auth): update video editor 2024-05-20 20:57:44 +05:30
Prateek Sunal
9c4e72aa0f feat(mobile): init video editor 2024-05-17 01:32:13 +05:30
Neeraj Gupta
cff695dd02 [mob] Fix title for month grouping 2024-05-04 12:35:33 +05:30
Neeraj Gupta
5f9b0d11f2 [mob] Gallery: Support grouping by day/week/month/year 2024-05-04 12:31:08 +05:30
Neeraj Gupta
e75be714d9 [mob] Refactor groupHeader to use groupType 2024-05-04 12:07:58 +05:30
Neeraj Gupta
da329c498c [mob] Add groupType in Gallery context state 2024-05-04 12:00:16 +05:30
Neeraj Gupta
cc74e08155 [mob] Add groupType with common extn methods 2024-05-04 11:56:29 +05:30
560 changed files with 24765 additions and 6490 deletions

31
.github/workflows/auth-crowdin-push.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: "Push sources to Crowdin (auth)"
on:
push:
branches: [main]
paths:
# Run workflow when auth's intl_en.arb is changed
- "auth/lib/l10n/arb/app_en.arb"
# Or the workflow itself is changed
- ".github/workflows/auth-crowdin.yml"
jobs:
push-sources-to-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Crowdin's action
uses: crowdin/github-action@v2
with:
base_path: "auth/"
config: "auth/crowdin.yml"
upload_sources: true
upload_translations: false
download_translations: false
project_id: 575169
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -1,17 +1,10 @@
name: "Sync Crowdin translations (auth)"
on:
push:
branches: [main]
paths:
# Run workflow when auth's intl_en.arb is changed
- "mobile/lib/l10n/arb/app_en.arb"
# Or the workflow itself is changed
- ".github/workflows/auth-crowdin.yml"
schedule:
# See: [Note: Run workflow on specific days of the week]
- cron: "50 1 * * 2,5"
# Also allow manually running the workflow
- cron: "50 1 * * 2"
# Also allow manually running the workflow.
workflow_dispatch:
jobs:
@@ -23,7 +16,7 @@ jobs:
uses: actions/checkout@v4
- name: Crowdin's action
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
base_path: "auth/"
config: "auth/crowdin.yml"

View File

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

View File

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

View File

@@ -0,0 +1,31 @@
name: "Push sources to Crowdin (mobile)"
on:
push:
branches: [main]
paths:
# Run workflow when mobiles's intl_en.arb is changed
- "mobile/lib/l10n/intl_en.arb"
# Or the workflow itself is changed
- ".github/workflows/mobile-crowdin.yml"
jobs:
push-sources-to-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Crowdin's action
uses: crowdin/github-action@v2
with:
base_path: "mobile/"
config: "mobile/crowdin.yml"
upload_sources: true
upload_translations: false
download_translations: false
project_id: 574741
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -1,17 +1,10 @@
name: "Sync Crowdin translations (mobile)"
on:
push:
branches: [main]
paths:
# Run workflow when mobiles's intl_en.arb is changed
- "mobile/lib/l10n/intl_en.arb"
# Or the workflow itself is changed
- ".github/workflows/mobile-crowdin.yml"
schedule:
# See: [Note: Run workflow on specific days of the week]
- cron: "40 1 * * 2,5"
# Also allow manually running the workflow
- cron: "40 1 * * 2"
# Also allow manually running the workflow.
workflow_dispatch:
jobs:
@@ -23,7 +16,7 @@ jobs:
uses: actions/checkout@v4
- name: Crowdin's action
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
base_path: "mobile/"
config: "mobile/crowdin.yml"

View File

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

View File

@@ -10,7 +10,7 @@ on:
env:
FLUTTER_VERSION: "3.22.0"
FLUTTER_VERSION: "3.22.2"
jobs:
lint:

View File

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

View File

@@ -33,7 +33,7 @@ jobs:
registry: ghcr.io
enableBuildKit: true
multiPlatform: true
platform: linux/amd64,linux/arm64,linux/arm/v7
platform: linux/amd64,linux/arm64
buildArgs: GIT_COMMIT=${{ inputs.commit }}
tags: ${{ inputs.commit }}, latest
username: ${{ github.actor }}

View File

@@ -1,6 +1,6 @@
name: "Push Crowdin translations (web)"
# This is a variant of web-crowdin.yml that uploads the translated strings in
# This is a variant of web-crowdin-sync.yml that uploads the translated strings in
# addition to the source strings.
#
# This allows us to change the strings in our source code for an automated
@@ -9,11 +9,11 @@ name: "Push Crowdin translations (web)"
on:
# Trigger manually, or using
# `gh workflow run web-crowdin-push.yml --ref <my-branch>`
# `gh workflow run web-crowdin-push-both.yml --ref <my-branch>`
workflow_dispatch:
jobs:
push-to-crowdin:
push-both-to-crowdin:
runs-on: ubuntu-latest
steps:
@@ -21,7 +21,7 @@ jobs:
uses: actions/checkout@v4
- name: Crowdin push
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
base_path: "web/"
config: "web/crowdin.yml"

View File

@@ -16,8 +16,8 @@ on:
# and FRI, this can be set to `2,5`.
#
# See also: [Note: Run workflow every 24 hours]
- cron: "20 1 * * 2,5"
# Also allow manually running the workflow
- cron: "20 1 * * 2"
# Also allow manually running the workflow.
workflow_dispatch:
jobs:
@@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@v4
- name: Crowdin's action
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
base_path: "web/"
config: "web/crowdin.yml"

View File

@@ -70,7 +70,7 @@ want to give back, please check out Ente Photos or spread the word.
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
</div>

View File

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

View File

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

View File

@@ -6,7 +6,7 @@ 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
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
and preserve your data.
- Multi Device Synchronization

View File

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

View File

@@ -23,6 +23,12 @@
{
"title": "BitMEX"
},
{
"title": "BitSkins"
},
{
"title": "Bitstamp"
},
{
"title": "Bitvavo",
"hex": "0051FF"
@@ -33,11 +39,15 @@
{
"title": "Bloom Host",
"slug": "bloom_host",
"altNames": ["Bloom Host Billing"]
"altNames": [
"Bloom Host Billing"
]
},
{
"title": "BorgBase",
"altNames": ["borg"],
"altNames": [
"borg"
],
"slug": "BorgBase"
},
{
@@ -50,6 +60,9 @@
{
"title": "CERN"
},
{
"title": "ChangeNOW"
},
{
"title": "Channel Island Hosting",
"slug": "cih",
@@ -58,6 +71,16 @@
{
"title": "Cloudflare"
},
{
"title": "CloudAMQP"
},
{
"title": "ConfigCat",
"slug": "configcat"
},
{
"title": "CoinDCX"
},
{
"title": "ConfigCat"
},
@@ -71,15 +94,23 @@
},
{
"title": "DCS",
"altNames": ["Digital Combat Simulator"],
"altNames": [
"Digital Combat Simulator"
],
"slug": "dcs"
},
{
"title": "DEGIRO"
},
{
"title": "DirectAdmin"
},
{
"title": "Discourse"
},
{
"title": "DMarket"
},
{
"title": "Doppler"
},
@@ -125,7 +156,9 @@
},
{
"title": "Gosuslugi",
"altNames": ["Госуслуги"],
"altNames": [
"Госуслуги"
],
"slug": "Gosuslugi"
},
{
@@ -135,6 +168,9 @@
"title": "Healthchecks.io",
"slug": "healthchecks"
},
{
"title": "Hivelocity"
},
{
"title": "IceDrive",
"slug": "Icedrive"
@@ -148,6 +184,10 @@
{
"title": "INWX"
},
{
"title": "Itch.io",
"slug": "itch_io"
},
{
"title": "IVPN",
"slug": "IVPN"
@@ -194,22 +234,42 @@
{
"title": "Local",
"slug": "local_wp",
"altNames": ["LocalWP", "Local WP", "Local Wordpress"]
"altNames": [
"LocalWP",
"Local WP",
"Local Wordpress"
]
},
{
"title": "Marketplace.tf",
"slug": "marketplacedottf"
},
{
"title": "Mastodon",
"altNames": ["mstdn", "fediscience", "mathstodon", "fosstodon"],
"altNames": [
"mstdn",
"fediscience",
"mathstodon",
"fosstodon"
],
"slug": "mastodon",
"hex": "6364FF"
},
{
"title": "Mercado Livre",
"slug": "mercado_livre",
"altNames": ["Mercado Libre", "MercadoLibre", "MercadoLivre"]
"altNames": [
"Mercado Libre",
"MercadoLibre",
"MercadoLivre"
]
},
{
"title": "Microsoft"
},
{
"title": "Migros"
},
{
"title": "Mintos"
},
@@ -218,13 +278,19 @@
},
{
"title": "Murena",
"altNames": ["eCloud"],
"altNames": [
"eCloud"
],
"slug": "ecloud"
},
{
"title": "MyFRITZ!Net",
"slug": "myfritz"
},
{
"title": "Name.com",
"slug": "name_com"
},
{
"title": "NextDNS"
},
@@ -241,6 +307,10 @@
{
"title": "Notion"
},
{
"title": "NuCommunity",
"slug": "nucommunity"
},
{
"title": "NVIDIA"
},
@@ -298,6 +368,18 @@
"title": "Real-Debrid",
"slug": "real_debrid"
},
{
"title": "Registro br",
"slug": "registro_br",
"altNames": [
"Registro br",
"registrobr",
"Registro.br"
]
},
{
"title": "Render"
},
{
"title": "Revolt",
"hex": "858585"
@@ -315,6 +397,9 @@
"slug": "rust_language_forum",
"hex": "000000"
},
{
"title": "Samsung"
},
{
"title": "Sendgrid"
},
@@ -331,6 +416,9 @@
"title": "Skiff",
"hex": "EF5A3C"
},
{
"title": "Skinport"
},
{
"title": "Snapchat"
},
@@ -353,7 +441,10 @@
},
{
"title": "Techlore",
"altNames": ["Techlore Courses", "Techlore Forums"]
"altNames": [
"Techlore Courses",
"Techlore Forums"
]
},
{
"title": "Termius",
@@ -383,10 +474,21 @@
"title": "Twingate",
"hex": "858585"
},
{
"title": "Twitch",
"altNames": [
"Twitch.tv",
"Twitch tv"
]
},
{
"title": "Ubisoft",
"hex": "4285f4"
},
{
"title": "Ubuntu One",
"slug": "ubuntu_one"
},
{
"title": "Unity",
"hex": "858585"
@@ -419,19 +521,26 @@
},
{
"title": "X",
"altNames": ["twitter"],
"altNames": [
"twitter"
],
"slug": "x"
},
{
"title": "Yandex",
"altNames": ["Ya", "Яндекс"],
"altNames": [
"Ya",
"Яндекс"
],
"slug": "Yandex"
},
{
"title": "YNAB",
"altNames": ["You Need A Budget"],
"altNames": [
"You Need A Budget"
],
"slug": "ynab",
"hex": "3B5EDA"
}
]
}
}

View File

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

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

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

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="512px" height="512px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#0f0f0f" d="M 511.5,272.5 C 511.5,285.5 511.5,298.5 511.5,311.5C 508.543,328.958 502.376,345.291 493,360.5C 489.783,363.38 486.95,366.547 484.5,370C 491.258,380.639 489.591,389.639 479.5,397C 464.044,407.934 447.377,416.601 429.5,423C 412.83,426.168 399.163,421.335 388.5,408.5C 367.197,419.324 344.531,424.491 320.5,424C 318.692,436.612 312.359,446.279 301.5,453C 283.703,460.911 265.036,464.411 245.5,463.5C 242.9,471.276 237.9,477.109 230.5,481C 217.623,486.044 204.289,487.711 190.5,486C 185.821,485.662 181.488,484.328 177.5,482C 156.539,481.714 144.039,471.214 140,450.5C 127.176,458.148 113.343,460.648 98.5,458C 90.6339,455.515 82.6339,453.515 74.5,452C 54.9132,442.997 49.0799,428.497 57,408.5C 66.2342,395.627 78.7342,387.961 94.5,385.5C 92.6275,381.588 90.6275,377.755 88.5,374C 70.6568,365.82 58.8235,352.32 53,333.5C 40.7936,289.193 46.2936,247.193 69.5,207.5C 59.4487,191.064 51.2821,173.73 45,155.5C 46.0538,140.201 46.3871,124.867 46,109.5C 35.4808,94.9732 23.4808,81.6398 10,69.5C 6.25674,65.2678 2.75674,60.9345 -0.5,56.5C -0.5,52.1667 -0.5,47.8333 -0.5,43.5C 9.76623,24.2659 25.0996,18.7659 45.5,27C 67.9457,36.2887 85.1124,51.4554 97,72.5C 110.456,95.0753 121.456,118.742 130,143.5C 131.478,149.551 132.812,155.551 134,161.5C 150.985,156.607 167.819,150.94 184.5,144.5C 189.063,124.296 197.563,105.963 210,89.5C 221.355,76.4675 234.189,65.3008 248.5,56C 281.602,35.3661 304.768,43.1994 318,79.5C 320.953,90.3093 322.453,101.309 322.5,112.5C 360.236,109.787 395.903,116.953 429.5,134C 465.163,161.014 489.997,195.848 504,238.5C 507.153,249.807 509.653,261.14 511.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#f9f9f9" d="M 24.5,29.5 C 29.5518,29.4502 34.5518,29.9502 39.5,31C 64.2651,40.4294 82.7651,56.9294 95,80.5C 105.37,98.9048 114.37,117.905 122,137.5C 124.445,145.715 126.278,154.048 127.5,162.5C 112.806,166.18 99.806,173.013 88.5,183C 87.6683,183.688 87.0016,183.521 86.5,182.5C 81.5074,171.354 77.0074,160.021 73,148.5C 71.949,132.503 70.949,116.503 70,100.5C 69.8323,89.9943 66.4989,80.661 60,72.5C 50.2229,59.4865 39.3896,47.3198 27.5,36C 24.3562,34.3084 21.0229,33.1418 17.5,32.5C 19.7639,31.1308 22.0972,30.1308 24.5,29.5 Z"/></g>
<g><path style="opacity:1" fill="#f8a38f" d="M 12.5,38.5 C 17.3236,37.9711 21.6569,39.1378 25.5,42C 39.5654,55.7226 51.7321,70.8893 62,87.5C 64.8374,107.385 66.5041,127.385 67,147.5C 70.9051,161.478 76.0717,174.978 82.5,188C 79.7313,192.44 76.5646,196.606 73,200.5C 64.0573,185.948 56.724,170.614 51,154.5C 51.9952,139.197 52.3286,123.864 52,108.5C 48.7377,102.307 44.7377,96.6405 40,91.5C 29,79.8333 18,68.1667 7,56.5C 3.70863,48.8182 5.54196,42.8182 12.5,38.5 Z"/></g>
<g><path style="opacity:1" fill="#fafafa" d="M 75.5,358.5 C 75.5,358.167 75.5,357.833 75.5,357.5C 89.9869,361.531 96.4869,355.865 95,340.5C 88.9149,339.688 82.7482,339.188 76.5,339C 72.7424,337.077 69.4091,334.577 66.5,331.5C 65.914,331.709 65.414,332.043 65,332.5C 64.3219,336.221 64.4886,339.888 65.5,343.5C 65.5,344.167 65.5,344.833 65.5,345.5C 56.2828,328.814 51.9494,310.814 52.5,291.5C 52.6554,251.963 65.6554,217.463 91.5,188C 109.872,171.873 131.372,164.04 156,164.5C 163.871,164.941 171.705,165.774 179.5,167C 180.059,167.725 180.392,168.558 180.5,169.5C 177.315,184.684 175.315,200.018 174.5,215.5C 176.5,215.5 178.5,215.5 180.5,215.5C 182.202,180.727 189.035,147.061 201,114.5C 217.196,84.2957 241.363,63.4624 273.5,52C 285.541,49.4426 295.374,52.9426 303,62.5C 310.113,73.413 314.447,85.413 316,98.5C 321.979,137.67 310.146,170.17 280.5,196C 263.081,211.714 243.415,223.881 221.5,232.5C 221.08,234.326 221.08,236.326 221.5,238.5C 234.851,234.241 247.351,228.241 259,220.5C 259.772,220.645 260.439,220.978 261,221.5C 275.359,247.499 277.359,274.499 267,302.5C 255.866,325.636 239.699,344.469 218.5,359C 205.461,365.355 191.794,369.689 177.5,372C 152.14,376.37 126.806,376.37 101.5,372C 91.2074,370.356 82.5408,365.856 75.5,358.5 Z"/></g>
<g><path style="opacity:1" fill="#0f0c0c" d="M 193.5,223.5 C 192.507,215.35 192.174,207.017 192.5,198.5C 193.5,169.804 200.666,142.804 214,117.5C 225.84,98.1554 243.007,87.1554 265.5,84.5C 286.335,85.1601 299.835,95.4934 306,115.5C 309.914,142.091 302.081,164.591 282.5,183C 256.19,203.482 226.523,216.982 193.5,223.5 Z"/></g>
<g><path style="opacity:1" fill="#fca592" d="M 257.5,90.5 C 284.894,88.5662 299.56,101.233 301.5,128.5C 300.608,150.45 291.608,168.284 274.5,182C 251.674,198.494 226.507,209.994 199,216.5C 197.361,188.998 201.361,162.331 211,136.5C 219.834,114.165 235.334,98.8314 257.5,90.5 Z"/></g>
<g><path style="opacity:1" fill="#fafafa" d="M 60.5,425.5 C 59.5386,423.735 59.2053,421.735 59.5,419.5C 63.1115,407.716 70.7781,399.549 82.5,395C 91.0632,391.633 99.5632,391.799 108,395.5C 108.667,394.833 108.667,394.167 108,393.5C 102.81,388.767 99.4764,383.1 98,376.5C 102.705,378.033 107.538,379.2 112.5,380C 140.837,382.162 168.837,380.162 196.5,374C 217.812,367.925 235.645,356.425 250,339.5C 264.443,322.614 274.11,303.281 279,281.5C 281.871,258.038 277.038,236.371 264.5,216.5C 281.854,203.979 296.687,188.979 309,171.5C 318.099,155.03 322.599,137.363 322.5,118.5C 360.451,115.776 396.117,123.276 429.5,141C 473.317,176.458 498.484,222.292 505,278.5C 507.615,302.611 503.949,325.611 494,347.5C 489.686,356.123 483.52,363.123 475.5,368.5C 480.461,372.751 482.961,378.085 483,384.5C 480.5,388.333 477.333,391.5 473.5,394C 459.716,403.227 445.049,410.893 429.5,417C 425.514,417.499 421.514,417.666 417.5,417.5C 417.193,411.907 417.527,406.407 418.5,401C 417.167,400.333 415.833,399.667 414.5,399C 430.794,394.523 446.461,388.356 461.5,380.5C 461.014,378.503 459.847,377.169 458,376.5C 440.722,385.148 422.555,390.982 403.5,394C 380.37,396.219 367.203,385.719 364,362.5C 362.937,347.817 366.437,334.317 374.5,322C 373.465,320.726 372.298,319.56 371,318.5C 354.722,340.239 353.389,362.905 367,386.5C 371.262,392.27 376.762,396.27 383.5,398.5C 384.736,400.034 385.236,401.7 385,403.5C 364.91,414.289 343.41,418.956 320.5,417.5C 319.84,404.55 317.673,391.883 314,379.5C 311.816,377.129 309.65,377.296 307.5,380C 314.177,397.067 315.677,414.567 312,432.5C 305.593,444.224 295.76,451.39 282.5,454C 268.581,456.057 254.581,457.224 240.5,457.5C 239.833,466.67 235.166,472.837 226.5,476C 215.527,480.056 204.193,481.39 192.5,480C 187.997,479.932 183.83,478.765 180,476.5C 179.18,467.46 181.68,459.46 187.5,452.5C 186.167,451.5 184.833,450.5 183.5,449.5C 176.525,456.706 173.192,465.372 173.5,475.5C 155.566,474.56 151.066,466.227 160,450.5C 165.03,445.927 164.364,443.594 158,443.5C 153.995,448.511 151.328,454.178 150,460.5C 149.667,460.167 149.333,459.833 149,459.5C 144.897,446.475 148.397,435.975 159.5,428C 163.945,425.443 168.611,423.443 173.5,422C 182.977,422.438 192.477,422.938 202,423.5C 220.978,425.676 230.811,417.343 231.5,398.5C 229.5,398.5 227.5,398.5 225.5,398.5C 226.791,409.364 222.125,415.864 211.5,418C 200.619,418.627 189.786,418.127 179,416.5C 166.002,416.349 155.502,421.349 147.5,431.5C 146.029,427.759 144.363,424.092 142.5,420.5C 141.998,419.479 141.332,419.312 140.5,420C 139.272,420.779 138.272,421.779 137.5,423C 139.652,428.271 141.652,433.604 143.5,439C 129.108,453.41 112.441,456.91 93.5,449.5C 89.7245,439.648 91.3911,430.815 98.5,423C 97.3147,421.647 95.9814,420.48 94.5,419.5C 87.1734,427.469 84.5067,436.803 86.5,447.5C 75.3584,448.43 68.025,443.597 64.5,433C 65.9688,424.073 69.6355,416.239 75.5,409.5C 74.5,407.833 73.1667,406.5 71.5,405.5C 66.2677,411.297 62.601,417.964 60.5,425.5 Z"/></g>
<g><path style="opacity:1" fill="#e5e5e5" d="M 180.5,151.5 C 181.675,151.281 182.675,151.614 183.5,152.5C 182.878,155.37 182.211,158.204 181.5,161C 175.174,160.8 168.84,160.134 162.5,159C 168.652,156.569 174.652,154.069 180.5,151.5 Z"/></g>
<g><path style="opacity:1" fill="#9b9b9b" d="M 192.5,198.5 C 192.174,207.017 192.507,215.35 193.5,223.5C 193.44,224.043 193.107,224.376 192.5,224.5C 191.179,215.675 191.179,207.009 192.5,198.5 Z"/></g>
<g><path style="opacity:1" fill="#090909" d="M 190.5,275.5 C 203.491,273.992 208.658,279.659 206,292.5C 201.745,299.54 195.578,302.04 187.5,300C 181.092,296.677 178.925,291.511 181,284.5C 183.679,280.924 186.846,277.924 190.5,275.5 Z"/></g>
<g><path style="opacity:1" fill="#dddddd" d="M 192.5,279.5 C 196.302,278.88 199.635,279.714 202.5,282C 201.646,283.022 200.646,283.855 199.5,284.5C 197.382,283.054 195.049,282.387 192.5,282.5C 192.5,281.5 192.5,280.5 192.5,279.5 Z"/></g>
<g><path style="opacity:1" fill="#070707" d="M 75.5,357.5 C 71.1612,353.465 67.8279,348.798 65.5,343.5C 64.4886,339.888 64.3219,336.221 65,332.5C 65.414,332.043 65.914,331.709 66.5,331.5C 69.4091,334.577 72.7424,337.077 76.5,339C 82.7482,339.188 88.9149,339.688 95,340.5C 96.4869,355.865 89.9869,361.531 75.5,357.5 Z"/></g>
<g><path style="opacity:1" fill="#afafaf" d="M 65.5,343.5 C 67.8279,348.798 71.1612,353.465 75.5,357.5C 75.5,357.833 75.5,358.167 75.5,358.5C 70.6417,355.312 67.3083,350.979 65.5,345.5C 65.5,344.833 65.5,344.167 65.5,343.5 Z"/></g>
<g><path style="opacity:1" fill="#ededed" d="M 407.5,398.5 C 409.167,398.5 410.833,398.5 412.5,398.5C 411.966,404.499 411.299,410.499 410.5,416.5C 402.406,414.736 396.739,410.069 393.5,402.5C 393.608,401.558 393.941,400.725 394.5,400C 399.019,399.825 403.353,399.325 407.5,398.5 Z"/></g>
<g><path style="opacity:1" fill="#8e8e8e" d="M 59.5,419.5 C 59.2053,421.735 59.5386,423.735 60.5,425.5C 60.6068,427.379 60.1068,427.712 59,426.5C 58.2042,423.961 58.3709,421.628 59.5,419.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 500 500">
<path fill="#182954" d="m75.705 269.386 12.606 10.812a40.902 40.902 0 0 1-8.642 8.853 53.365 53.365 0 0 1-13.599 7.73 45.769 45.769 0 0 1-16.998 3.094 49.02 49.02 0 0 1-25.212-6.466A45.84 45.84 0 0 1 6.72 275.84a50.83 50.83 0 0 1-6.212-25.287 52.621 52.621 0 0 1 3.525-19.394 49.28 49.28 0 0 1 10.2-16.022 46.603 46.603 0 0 1 15.44-10.812 49.626 49.626 0 0 1 19.969-3.938 45.9 45.9 0 0 1 23.51 5.48A49.016 49.016 0 0 1 88.308 219.5l-12.744 11.244A39.368 39.368 0 0 0 64.938 220.2a27.358 27.358 0 0 0-15.296-3.933 27.636 27.636 0 0 0-16.147 4.632 30.695 30.695 0 0 0-10.478 12.508 38.957 38.957 0 0 0-3.688 16.879 36.724 36.724 0 0 0 3.684 16.442 29.719 29.719 0 0 0 10.184 11.793 27.208 27.208 0 0 0 15.44 4.358c4.608.197 9.203-.62 13.456-2.391a27.765 27.765 0 0 0 8.214-5.622l5.381-5.481M93.275 264.047a35.477 35.477 0 0 1 4.535-17.71 34.84 34.84 0 0 1 12.748-12.929 39.497 39.497 0 0 1 18.838-4.778 39.497 39.497 0 0 1 18.838 4.778 34.846 34.846 0 0 1 12.749 12.928 36.889 36.889 0 0 1 4.532 17.709 36.891 36.891 0 0 1-4.532 17.708 36.519 36.519 0 0 1-13.365 13.153 36.875 36.875 0 0 1-18.181 4.837 36.88 36.88 0 0 1-18.203-4.756 36.513 36.513 0 0 1-13.424-13.092 35.479 35.479 0 0 1-4.535-17.707v-.141zm35.979 21.224a16.949 16.949 0 0 0 10.623-3.23c2.804-2.121 5-4.93 6.375-8.151a24.848 24.848 0 0 0 2.124-9.698 24.293 24.293 0 0 0-2.124-9.697 20.265 20.265 0 0 0-6.375-8.15 19.056 19.056 0 0 0-10.623-3.233 19.057 19.057 0 0 0-10.625 3.233 20.118 20.118 0 0 0-6.231 8.009 24.296 24.296 0 0 0-2.125 9.697 24.713 24.713 0 0 0 2.125 9.839 19.985 19.985 0 0 0 6.374 8.15 16.949 16.949 0 0 0 10.624 3.231M168.905 202.628h16.856v17.71h-16.856v-17.71zm0 28.11h16.856v66.758h-16.856v-66.758zM192.416 297.495V230.88h16.147l.42 7.589a35.937 35.937 0 0 1 7.505-5.905 23.656 23.656 0 0 1 12.749-3.094 24.38 24.38 0 0 1 10.396 1.612 24.22 24.22 0 0 1 8.726 5.836 29.047 29.047 0 0 1 6.66 20.097v40.477H238.02v-40.335a13.257 13.257 0 0 0-.76-5.278 13.337 13.337 0 0 0-2.78-4.561 12.19 12.19 0 0 0-4.164-2.694 12.27 12.27 0 0 0-4.902-.82 14.974 14.974 0 0 0-6.377 1.24 14.87 14.87 0 0 0-5.236 3.82 18.046 18.046 0 0 0-4.534 12.51v36.118l-16.851.004z"/>
<path fill="#FA4A29" d="m463.25 246.618 29.754-44.007h-28.187l-15.44 24.596-15.883-24.596h-31.163l1.416 1.967-.993-.416a63.329 63.329 0 0 0-23.083-4.046 50.453 50.453 0 0 0-25.92 6.607 46.609 46.609 0 0 0-14.308 12.929 40.334 40.334 0 0 0-15.582-11.806 65.028 65.028 0 0 0-26.344-5.077h-36.686v94.727h36.544a64.026 64.026 0 0 0 26.344-5.202A41.612 41.612 0 0 0 339.3 280.63c3.87 5.299 8.846 9.709 14.59 12.928a51.44 51.44 0 0 0 25.777 6.325 55.023 55.023 0 0 0 24.646-5.34l-1.982 2.953h27.76l18.558-29.108 19.122 29.108h31.73l-36.252-50.878zm-147.452 21.624a25.772 25.772 0 0 1-8.902 5.504 25.916 25.916 0 0 1-10.376 1.523h-10.334v-50.573h10.338c3.62-.305 7.264.165 10.685 1.378a25.427 25.427 0 0 1 9.147 5.65 26.146 26.146 0 0 1 6.374 18.271 24.821 24.821 0 0 1-1.597 9.836 24.965 24.965 0 0 1-5.343 8.436l.008-.025zm101.549 6.911-12.04-11.228a38.572 38.572 0 0 1-10.197 9.149 27.09 27.09 0 0 1-13.6 2.952 25.509 25.509 0 0 1-13.314-3.372 22.838 22.838 0 0 1-8.8-9.415 29.459 29.459 0 0 1-3.118-13.63c-.091-4.623.929-9.2 2.975-13.353a23.258 23.258 0 0 1 8.642-9.415 25.653 25.653 0 0 1 13.738-3.513 24.798 24.798 0 0 1 12.748 3.23 32.061 32.061 0 0 1 9.639 8.733l12.606-12.508 18.415 26.28-17.694 26.09z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

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

After

Width:  |  Height:  |  Size: 378 B

View File

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

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150" fill="#e31937" xmlns:v="https://vecta.io/nano"><path d="M13.34 14.37h15.01v123.08H13.34zm109.58 0h15.01v123.08h-15.01zM43.36 54.9h64.54v15.01H43.36zm0 28.52h64.54v15.01H43.36z"/></svg>

After

Width:  |  Height:  |  Size: 247 B

View File

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

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 386 KiB

After

Width:  |  Height:  |  Size: 316 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 523 KiB

After

Width:  |  Height:  |  Size: 735 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

View File

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

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

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

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

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

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="900px" height="900px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fefefe" d="M -0.5,-0.5 C 299.5,-0.5 599.5,-0.5 899.5,-0.5C 899.5,299.5 899.5,599.5 899.5,899.5C 599.5,899.5 299.5,899.5 -0.5,899.5C -0.5,599.5 -0.5,299.5 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#e0a5fc" d="M 297.5,264.5 C 309.66,263.34 321.993,263.173 334.5,264C 337.457,264.279 340.123,265.113 342.5,266.5C 327.57,264.717 312.57,264.051 297.5,264.5 Z"/></g>
<g><path style="opacity:1" fill="#8f02d8" d="M 297.5,264.5 C 312.57,264.051 327.57,264.717 342.5,266.5C 369.173,272.584 390.673,286.584 407,308.5C 421.104,329.299 429.604,352.299 432.5,377.5C 432.334,383.509 432.501,389.509 433,395.5C 433.21,397.058 433.71,398.391 434.5,399.5C 434.5,406.5 434.5,413.5 434.5,420.5C 434.5,421.5 434.5,422.5 434.5,423.5C 433.71,422.391 433.21,421.058 433,419.5C 432.5,487.833 432.333,556.166 432.5,624.5C 404.167,624.5 375.833,624.5 347.5,624.5C 347.832,575.997 347.499,527.664 346.5,479.5C 346.829,464.99 346.496,450.657 345.5,436.5C 347.595,406.902 342.095,378.902 329,352.5C 307.252,317.035 275.419,299.368 233.5,299.5C 233.5,299.167 233.5,298.833 233.5,298.5C 250.906,279.797 272.24,268.463 297.5,264.5 Z"/></g>
<g><path style="opacity:1" fill="#e2aefc" d="M 464.5,272.5 C 494.329,271.502 524.329,271.169 554.5,271.5C 554.5,330.167 554.5,388.833 554.5,447.5C 554.5,452.833 554.5,458.167 554.5,463.5C 553.501,400.002 553.168,336.336 553.5,272.5C 523.833,272.5 494.167,272.5 464.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#c47ceb" d="M 789.5,272.5 C 759.662,272.169 729.995,272.502 700.5,273.5C 700.667,355.501 700.5,437.501 700,519.5C 699.819,522.695 699.319,525.695 698.5,528.5C 699.467,442.842 699.801,357.175 699.5,271.5C 729.671,271.169 759.671,271.502 789.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#f9fff3" d="M 790.5,489.5 C 790.5,417.167 790.5,344.833 790.5,272.5C 791.341,271.991 791.841,272.657 792,274.5C 792.667,345.167 792.667,415.833 792,486.5C 791.667,489.5 791.333,492.5 791,495.5C 790.505,493.527 790.338,491.527 790.5,489.5 Z"/></g>
<g><path style="opacity:1" fill="#fedffe" d="M 789.5,272.5 C 789.833,272.5 790.167,272.5 790.5,272.5C 790.5,344.833 790.5,417.167 790.5,489.5C 789.833,492.167 789.167,494.833 788.5,497.5C 789.469,422.51 789.802,347.51 789.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#eb99fb" d="M 464.5,272.5 C 464.168,339.002 464.501,405.335 465.5,471.5C 465.5,480.5 465.5,489.5 465.5,498.5C 464.672,492.347 464.172,486.013 464,479.5C 463.168,410.332 463.335,341.332 464.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#8113b9" d="M 464.5,272.5 C 494.167,272.5 523.833,272.5 553.5,272.5C 553.168,336.336 553.501,400.002 554.5,463.5C 554.334,472.173 554.5,480.84 555,489.5C 555.183,492.365 555.683,495.031 556.5,497.5C 557.067,504.237 558.067,510.904 559.5,517.5C 558.069,517.119 557.236,516.119 557,514.5C 555.425,506.905 554.259,499.238 553.5,491.5C 552.5,418.836 552.167,346.17 552.5,273.5C 523.5,273.5 494.5,273.5 465.5,273.5C 465.5,339.5 465.5,405.5 465.5,471.5C 464.501,405.335 464.168,339.002 464.5,272.5 Z"/></g>
<g><path style="opacity:1" fill="#8f02d8" d="M 559.5,517.5 C 567.209,549.077 585.209,572.91 613.5,589C 621.878,592.737 630.545,595.571 639.5,597.5C 641.515,598.924 643.848,599.59 646.5,599.5C 652.509,599.701 658.509,600.034 664.5,600.5C 664.833,601.167 665.167,601.833 665.5,602.5C 652.044,616.271 636.044,625.937 617.5,631.5C 613.313,632.213 609.313,633.213 605.5,634.5C 604.167,634.5 602.833,634.5 601.5,634.5C 584.03,635.144 566.696,634.144 549.5,631.5C 522.738,623.576 502.238,607.576 488,583.5C 473.799,557.033 466.299,528.699 465.5,498.5C 465.5,489.5 465.5,480.5 465.5,471.5C 465.5,405.5 465.5,339.5 465.5,273.5C 494.5,273.5 523.5,273.5 552.5,273.5C 552.167,346.17 552.5,418.836 553.5,491.5C 554.259,499.238 555.425,506.905 557,514.5C 557.236,516.119 558.069,517.119 559.5,517.5 Z"/></g>
<g><path style="opacity:1" fill="#8f01d8" d="M 700.5,273.5 C 730.005,273.169 759.338,273.502 788.5,274.5C 787.167,309.327 786.5,344.494 786.5,380C 786.5,415.506 787.167,450.673 788.5,485.5C 787.326,491.399 786.659,497.399 786.5,503.5C 786.5,505.167 786.5,506.833 786.5,508.5C 775.375,553.295 747.708,582.629 703.5,596.5C 699.521,596.742 695.854,597.742 692.5,599.5C 684.181,600.124 675.848,600.457 667.5,600.5C 685.44,579.935 695.774,555.935 698.5,528.5C 699.319,525.695 699.819,522.695 700,519.5C 700.5,437.501 700.667,355.501 700.5,273.5 Z"/></g>
<g><path style="opacity:1" fill="#9700e9" d="M 788.5,274.5 C 788.5,344.833 788.5,415.167 788.5,485.5C 787.167,450.673 786.5,415.506 786.5,380C 786.5,344.494 787.167,309.327 788.5,274.5 Z"/></g>
<g><path style="opacity:1" fill="#7c10b7" d="M 700.5,273.5 C 729.995,272.502 759.662,272.169 789.5,272.5C 789.802,347.51 789.469,422.51 788.5,497.5C 787.833,499.5 787.167,501.5 786.5,503.5C 786.659,497.399 787.326,491.399 788.5,485.5C 788.5,415.167 788.5,344.833 788.5,274.5C 759.338,273.502 730.005,273.169 700.5,273.5 Z"/></g>
<g><path style="opacity:1" fill="#e0b2f7" d="M 214.5,299.5 C 220.645,298.51 226.978,298.177 233.5,298.5C 233.5,298.833 233.5,299.167 233.5,299.5C 232.833,299.833 232.167,300.167 231.5,300.5C 226.025,299.511 220.358,299.178 214.5,299.5 Z"/></g>
<g><path style="opacity:1" fill="#bb82dc" d="M 203.5,301.5 C 201.485,302.924 199.152,303.59 196.5,303.5C 198.515,302.076 200.848,301.41 203.5,301.5 Z"/></g>
<g><path style="opacity:1" fill="#8f01d8" d="M 214.5,299.5 C 220.358,299.178 226.025,299.511 231.5,300.5C 214.94,317.802 205.273,338.469 202.5,362.5C 201.693,366.021 201.026,369.688 200.5,373.5C 199.833,374.5 199.167,375.5 198.5,376.5C 196.503,458.827 195.836,541.493 196.5,624.5C 168.167,624.5 139.833,624.5 111.5,624.5C 111.5,552.833 111.5,481.167 111.5,409.5C 111.5,408.833 111.5,408.167 111.5,407.5C 111.646,403.481 111.979,399.481 112.5,395.5C 113.768,393.095 114.435,390.428 114.5,387.5C 121.985,358.168 138.319,335.001 163.5,318C 173.533,310.984 184.533,306.151 196.5,303.5C 199.152,303.59 201.485,302.924 203.5,301.5C 207.221,301.089 210.888,300.422 214.5,299.5 Z"/></g>
<g><path style="opacity:1" fill="#9500e4" d="M 198.5,376.5 C 198.5,459.833 198.5,543.167 198.5,626.5C 169.147,627.159 140.147,626.492 111.5,624.5C 139.833,624.5 168.167,624.5 196.5,624.5C 195.836,541.493 196.503,458.827 198.5,376.5 Z"/></g>
<g><path style="opacity:1" fill="#7d10b7" d="M 200.5,373.5 C 199.513,458.149 199.18,542.815 199.5,627.5C 169.833,627.5 140.167,627.5 110.5,627.5C 110.167,554.665 110.501,481.998 111.5,409.5C 111.5,481.167 111.5,552.833 111.5,624.5C 140.147,626.492 169.147,627.159 198.5,626.5C 198.5,543.167 198.5,459.833 198.5,376.5C 199.167,375.5 199.833,374.5 200.5,373.5 Z"/></g>
<g><path style="opacity:1" fill="#a456d2" d="M 432.5,377.5 C 434.105,384.603 434.772,391.937 434.5,399.5C 433.71,398.391 433.21,397.058 433,395.5C 432.501,389.509 432.334,383.509 432.5,377.5 Z"/></g>
<g><path style="opacity:1" fill="#d898f7" d="M 114.5,387.5 C 114.435,390.428 113.768,393.095 112.5,395.5C 112.294,392.505 112.96,389.838 114.5,387.5 Z"/></g>
<g><path style="opacity:1" fill="#fccbfe" d="M 111.5,407.5 C 111.5,408.167 111.5,408.833 111.5,409.5C 110.501,481.998 110.167,554.665 110.5,627.5C 140.167,627.5 169.833,627.5 199.5,627.5C 169.671,628.498 139.671,628.831 109.5,628.5C 109.333,555.166 109.5,481.833 110,408.5C 110.383,407.944 110.883,407.611 111.5,407.5 Z"/></g>
<g><path style="opacity:1" fill="#8313bf" d="M 434.5,420.5 C 435.499,489.331 435.833,558.331 435.5,627.5C 405.833,627.5 376.167,627.5 346.5,627.5C 346.5,578.167 346.5,528.833 346.5,479.5C 347.499,527.664 347.832,575.997 347.5,624.5C 376.147,626.492 405.147,627.159 434.5,626.5C 434.5,558.833 434.5,491.167 434.5,423.5C 434.5,422.5 434.5,421.5 434.5,420.5 Z"/></g>
<g><path style="opacity:1" fill="#e6b9fc" d="M 434.5,399.5 C 435.327,404.651 435.827,409.984 436,415.5C 436.832,486.335 436.665,557.001 435.5,627.5C 435.833,558.331 435.499,489.331 434.5,420.5C 434.5,413.5 434.5,406.5 434.5,399.5 Z"/></g>
<g><path style="opacity:1" fill="#c48ee5" d="M 202.5,362.5 C 202.271,369.515 201.771,376.515 201,383.5C 200.833,465.001 200.333,546.334 199.5,627.5C 199.18,542.815 199.513,458.149 200.5,373.5C 201.026,369.688 201.693,366.021 202.5,362.5 Z"/></g>
<g><path style="opacity:1" fill="#9800e9" d="M 434.5,423.5 C 434.5,491.167 434.5,558.833 434.5,626.5C 405.147,627.159 376.147,626.492 347.5,624.5C 375.833,624.5 404.167,624.5 432.5,624.5C 432.333,556.166 432.5,487.833 433,419.5C 433.21,421.058 433.71,422.391 434.5,423.5 Z"/></g>
<g><path style="opacity:1" fill="#fde2ff" d="M 554.5,447.5 C 555.97,463.978 556.637,480.645 556.5,497.5C 555.683,495.031 555.183,492.365 555,489.5C 554.5,480.84 554.334,472.173 554.5,463.5C 554.5,458.167 554.5,452.833 554.5,447.5 Z"/></g>
<g><path style="opacity:1" fill="#e6b4fd" d="M 788.5,497.5 C 788.749,501.458 788.082,505.124 786.5,508.5C 786.5,506.833 786.5,505.167 786.5,503.5C 787.167,501.5 787.833,499.5 788.5,497.5 Z"/></g>
<g><path style="opacity:1" fill="#e6b5fa" d="M 703.5,596.5 C 700.146,598.258 696.479,599.258 692.5,599.5C 695.854,597.742 699.521,596.742 703.5,596.5 Z"/></g>
<g><path style="opacity:1" fill="#d196ef" d="M 639.5,597.5 C 642.152,597.41 644.485,598.076 646.5,599.5C 643.848,599.59 641.515,598.924 639.5,597.5 Z"/></g>
<g><path style="opacity:1" fill="#eebef9" d="M 692.5,599.5 C 683.638,600.905 674.638,601.905 665.5,602.5C 665.167,601.833 664.833,601.167 664.5,600.5C 665.5,600.5 666.5,600.5 667.5,600.5C 675.848,600.457 684.181,600.124 692.5,599.5 Z"/></g>
<g><path style="opacity:1" fill="#e8b7fd" d="M 345.5,436.5 C 346.496,450.657 346.829,464.99 346.5,479.5C 346.5,528.833 346.5,578.167 346.5,627.5C 376.167,627.5 405.833,627.5 435.5,627.5C 405.671,628.498 375.671,628.831 345.5,628.5C 345.5,564.5 345.5,500.5 345.5,436.5 Z"/></g>
<g><path style="opacity:1" fill="#eeccfd" d="M 617.5,631.5 C 614.032,634.114 610.032,635.114 605.5,634.5C 609.313,633.213 613.313,632.213 617.5,631.5 Z"/></g>
<g><path style="opacity:1" fill="#902eca" d="M 549.5,631.5 C 566.696,634.144 584.03,635.144 601.5,634.5C 598.375,635.479 595.042,635.813 591.5,635.5C 581.461,635.758 571.461,635.424 561.5,634.5C 557.098,634.692 553.098,633.692 549.5,631.5 Z"/></g>
<g><path style="opacity:1" fill="#e2b3f9" d="M 561.5,634.5 C 571.461,635.424 581.461,635.758 591.5,635.5C 582.009,636.658 572.342,636.825 562.5,636C 561.944,635.617 561.611,635.117 561.5,634.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 671 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="1200px" height="1500px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:0.999" fill="#7cb342" d="M 248.5,50.5 C 304.5,50.5 360.5,50.5 416.5,50.5C 416.333,162.834 416.5,275.167 417,387.5C 463.158,333.548 521.658,311.714 592.5,322C 621.211,325.695 647.211,336.029 670.5,353C 693.13,369.295 711.963,389.128 727,412.5C 736.716,433.069 742.383,454.736 744,477.5C 744.856,485.484 745.523,493.484 746,501.5C 746.667,760.167 746.667,1018.83 746,1277.5C 744.931,1301.25 741.264,1324.58 735,1347.5C 727.824,1365 717.824,1380.67 705,1394.5C 660.653,1440.51 606.486,1459.34 542.5,1451C 508.878,1448.13 478.545,1436.8 451.5,1417C 439.841,1407.01 428.508,1396.67 417.5,1386C 402.255,1378.15 387.255,1378.15 372.5,1386C 321.478,1439.78 259.478,1458.78 186.5,1443C 116.39,1421.89 71.5569,1376.06 52,1305.5C 37.0037,1228.41 59.1704,1164.57 118.5,1114C 145.794,1093.36 176.461,1080.36 210.5,1075C 231.775,1067.37 243.942,1052.2 247,1029.5C 248.491,703.18 248.991,376.847 248.5,50.5 Z M 488.5,488.5 C 525.651,484.321 552.817,498.655 570,531.5C 573.47,540.851 575.137,550.517 575,560.5C 575.986,784.18 575.652,1007.85 574,1231.5C 570.781,1249.77 561.615,1264.27 546.5,1275C 524.716,1290.02 501.049,1293.68 475.5,1286C 450.46,1275.63 430.96,1258.8 417,1235.5C 416.333,1003.5 416.333,771.5 417,539.5C 429.606,521.452 445.439,506.952 464.5,496C 472.328,492.55 480.328,490.05 488.5,488.5 Z"/></g>
<g><path style="opacity:1" fill="#7bb342" d="M 1126.5,319.5 C 1132.83,319.5 1139.17,319.5 1145.5,319.5C 1145.83,381.837 1145.5,444.17 1144.5,506.5C 1116.31,484.358 1085.31,479.525 1051.5,492C 1040.07,497.435 1029.74,504.435 1020.5,513C 1013.33,520.833 1006.17,528.667 999,536.5C 998.5,838.5 998.333,1140.5 998.5,1442.5C 942.5,1442.5 886.5,1442.5 830.5,1442.5C 830.5,1071.5 830.5,700.5 830.5,329.5C 886.5,329.5 942.5,329.5 998.5,329.5C 998.333,348.836 998.5,368.17 999,387.5C 1031.29,345.77 1073.79,323.104 1126.5,319.5 Z"/></g>
<g><path style="opacity:1" fill="#f9ec00" d="M 220.5,1166.5 C 269.575,1163.94 304.075,1184.94 324,1229.5C 336.379,1271.49 326.546,1307.32 294.5,1337C 260.872,1361.72 225.205,1365.06 187.5,1347C 151.009,1324.85 134.509,1292.35 138,1249.5C 144.7,1212.27 165.533,1186.43 200.5,1172C 207.192,1169.83 213.859,1168 220.5,1166.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="200px" height="200px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#fefefe" d="M -0.5,-0.5 C 66.1667,-0.5 132.833,-0.5 199.5,-0.5C 199.5,66.1667 199.5,132.833 199.5,199.5C 132.833,199.5 66.1667,199.5 -0.5,199.5C -0.5,132.833 -0.5,66.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#0e0e0e" d="M 119.5,47.5 C 133.743,46.0344 143.909,51.701 150,64.5C 154.009,81.9852 147.509,93.4852 130.5,99C 123.167,99.3333 115.833,99.6667 108.5,100C 104.333,101.5 101.5,104.333 100,108.5C 99.5001,122.829 99.3334,137.163 99.5,151.5C 82.1667,151.5 64.8333,151.5 47.5,151.5C 47.5,132.833 47.5,114.167 47.5,95.5C 60.0736,101.213 72.4069,100.713 84.5,94C 88.6667,91.1667 92.1667,87.6667 95,83.5C 97.7515,75.0718 100.752,66.7384 104,58.5C 108.127,53.202 113.294,49.5354 119.5,47.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="2030px" height="2048px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:0.999" fill="#0066ff" d="M 922.5,-0.5 C 984.167,-0.5 1045.83,-0.5 1107.5,-0.5C 1183.34,2.62698 1259.01,9.46031 1334.5,20C 1435.99,34.2851 1532.99,63.2851 1625.5,107C 1686.68,137.224 1742.68,174.891 1793.5,220C 1851.84,280.056 1898,348.556 1932,425.5C 1968.98,509.727 1994.31,597.394 2008,688.5C 2018.55,761.657 2025.72,834.99 2029.5,908.5C 2029.5,984.833 2029.5,1061.17 2029.5,1137.5C 2025.59,1213.37 2018.09,1289.04 2007,1364.5C 1992.77,1456.52 1966.44,1544.85 1928,1629.5C 1897.8,1694.64 1859.13,1753.97 1812,1807.5C 1763.29,1856.1 1708.46,1896.26 1647.5,1928C 1544.73,1980.25 1436.06,2013.59 1321.5,2028C 1239.36,2038.97 1157.03,2045.47 1074.5,2047.5C 1060.5,2047.5 1046.5,2047.5 1032.5,2047.5C 1020.83,2046.17 1009.17,2046.17 997.5,2047.5C 983.5,2047.5 969.5,2047.5 955.5,2047.5C 872.975,2045.46 790.642,2038.96 708.5,2028C 606.933,2014.94 509.599,1987.28 416.5,1945C 347.284,1912.42 284.617,1870.42 228.5,1819C 172.903,1758.37 128.403,1690.2 95,1614.5C 60.5996,1534.57 36.5996,1451.57 23,1365.5C 10.7368,1283.1 2.90342,1200.43 -0.5,1117.5C -0.5,1054.5 -0.5,991.5 -0.5,928.5C 2.77579,849.967 9.94246,771.634 21,693.5C 36.75,581.253 70.75,474.92 123,374.5C 154.057,316.905 192.557,264.739 238.5,218C 316.452,150.162 404.785,99.4952 503.5,66C 559.947,46.805 617.613,32.4717 676.5,23C 758.221,10.617 840.221,2.78365 922.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#fefeff" d="M 626.5,1312.5 C 626.5,1276.83 626.5,1241.17 626.5,1205.5C 722.5,1205.5 818.5,1205.5 914.5,1205.5C 914.333,1244.17 914.5,1282.83 915,1321.5C 919.897,1362.39 941.73,1389.55 980.5,1403C 1004.93,1409.12 1029.59,1410.12 1054.5,1406C 1094.33,1398.51 1118.83,1375.01 1128,1335.5C 1139.64,1293.91 1132.31,1256.24 1106,1222.5C 1094.47,1209.3 1081.97,1197.13 1068.5,1186C 1051.72,1173.22 1034.38,1161.22 1016.5,1150C 961.491,1118.16 906.158,1086.83 850.5,1056C 810.408,1032.63 772.408,1006.29 736.5,977C 708.562,953.08 685.062,925.58 666,894.5C 645.646,856.764 634.646,816.431 633,773.5C 624.333,602.57 702.833,497.07 868.5,457C 927.844,444.215 987.844,439.548 1048.5,443C 1106.86,444.281 1163.52,454.614 1218.5,474C 1318.44,513.324 1371.28,586.824 1377,694.5C 1377.5,726.832 1377.67,759.165 1377.5,791.5C 1288.17,791.5 1198.83,791.5 1109.5,791.5C 1109.67,765.165 1109.5,738.831 1109,712.5C 1103.68,665.514 1077.85,637.347 1031.5,628C 1000.82,622.223 972.154,627.223 945.5,643C 926.118,658.253 914.285,678.086 910,702.5C 905.639,729.545 909.639,755.212 922,779.5C 936.918,800.419 955.085,817.919 976.5,832C 993.234,843.062 1010.23,853.729 1027.5,864C 1086.31,895.238 1144.65,927.238 1202.5,960C 1251.24,988.047 1295.4,1022.21 1335,1062.5C 1363.36,1092.86 1383.19,1128.19 1394.5,1168.5C 1403.09,1210.74 1405.93,1253.41 1403,1296.5C 1401.52,1447.37 1328.36,1543.2 1183.5,1584C 1116.22,1600.81 1047.89,1607.14 978.5,1603C 920.733,1601.37 864.733,1590.71 810.5,1571C 693.944,1524.55 632.61,1438.38 626.5,1312.5 Z"/></g>
<g><path style="opacity:1" fill="#8eb7ff" d="M 914.5,1205.5 C 818.5,1205.5 722.5,1205.5 626.5,1205.5C 626.5,1241.17 626.5,1276.83 626.5,1312.5C 625.502,1276.67 625.168,1240.67 625.5,1204.5C 722.001,1204.17 818.335,1204.5 914.5,1205.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 389 KiB

After

Width:  |  Height:  |  Size: 429 B

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="2400px" height="2800px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:1" fill="#9146ff" d="M 498.5,-0.5 C 1132.17,-0.5 1765.83,-0.5 2399.5,-0.5C 2399.5,466.5 2399.5,933.5 2399.5,1400.5C 2099.7,1699.8 1800.03,1999.3 1500.5,2299C 1366.83,2299.33 1233.17,2299.67 1099.5,2300C 932.965,2466.37 766.632,2632.87 600.5,2799.5C 600.167,2799.5 599.833,2799.5 599.5,2799.5C 599.5,2632.83 599.5,2466.17 599.5,2299.5C 399.5,2299.5 199.5,2299.5 -0.5,2299.5C -0.5,1699.17 -0.5,1098.83 -0.5,498.5C 166.167,332.5 332.5,166.167 498.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#fefffe" d="M 599.5,199.5 C 1132.83,199.5 1666.17,199.5 2199.5,199.5C 2199.67,566.167 2199.5,932.833 2199,1299.5C 2065.83,1432.67 1932.67,1565.83 1799.5,1699C 1665.83,1699.33 1532.17,1699.67 1398.5,1700C 1282.33,1816.17 1166.17,1932.33 1050,2048.5C 1049.5,1932.17 1049.33,1815.83 1049.5,1699.5C 899.5,1699.5 749.5,1699.5 599.5,1699.5C 599.5,1199.5 599.5,699.5 599.5,199.5 Z"/></g>
<g><path style="opacity:1" fill="#9146ff" d="M 1149.5,549.5 C 1216.17,549.5 1282.83,549.5 1349.5,549.5C 1349.5,749.5 1349.5,949.5 1349.5,1149.5C 1282.83,1149.5 1216.17,1149.5 1149.5,1149.5C 1149.5,949.5 1149.5,749.5 1149.5,549.5 Z"/></g>
<g><path style="opacity:1" fill="#9146ff" d="M 1699.5,549.5 C 1766.17,549.5 1832.83,549.5 1899.5,549.5C 1899.5,749.5 1899.5,949.5 1899.5,1149.5C 1832.83,1149.5 1766.17,1149.5 1699.5,1149.5C 1699.5,949.5 1699.5,749.5 1699.5,549.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

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

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -6,7 +6,7 @@ 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
about losing your tokens. We use the same protocols Ente Photos uses to encrypt
and preserve your data.
- Multi Device Synchronization

View File

@@ -81,12 +81,12 @@ PODS:
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- ReachabilitySwift (5.2.2)
- ReachabilitySwift (5.2.3)
- SDWebImage (5.19.2):
- SDWebImage/Core (= 5.19.2)
- SDWebImage/Core (5.19.2)
- Sentry/HybridSDK (8.25.0)
- sentry_flutter (7.20.1):
- sentry_flutter (7.20.2):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.25.0)
@@ -100,18 +100,21 @@ PODS:
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- "sqlite3 (3.45.3+1)":
- "sqlite3/common (= 3.45.3+1)"
- "sqlite3/common (3.45.3+1)"
- "sqlite3/fts5 (3.45.3+1)":
- "sqlite3 (3.46.0+1)":
- "sqlite3/common (= 3.46.0+1)"
- "sqlite3/common (3.46.0+1)"
- "sqlite3/dbstatvtab (3.46.0+1)":
- sqlite3/common
- "sqlite3/perf-threadsafe (3.45.3+1)":
- "sqlite3/fts5 (3.46.0+1)":
- sqlite3/common
- "sqlite3/rtree (3.45.3+1)":
- "sqlite3/perf-threadsafe (3.46.0+1)":
- sqlite3/common
- "sqlite3/rtree (3.46.0+1)":
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- Flutter
- "sqlite3 (~> 3.45.3+1)"
- "sqlite3 (~> 3.46.0+1)"
- sqlite3/dbstatvtab
- sqlite3/fts5
- sqlite3/perf-threadsafe
- sqlite3/rtree
@@ -233,29 +236,29 @@ SPEC CHECKSUMS:
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
local_auth_darwin: c7e464000a6a89e952235699e32b329457608d98
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
local_auth_darwin: 4d56c90c2683319835a61274b57620df9c4520ab
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
sentry_flutter: 0cf2507eb90ff7a6aa3304e900dd7f08edbbefdf
share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
sqlite3_flutter_libs: 9bfe005308998aeca155330bbc2ea6dddf834a3b
sqlite3: 292c3e1bfe89f64e51ea7fc7dab9182a017c8630
sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
PODFILE CHECKSUM: b4e3a7eabb03395b66e81fc061789f61526ee6bb

View File

@@ -10,6 +10,7 @@ import 'package:ente_auth/events/signed_out_event.dart';
import "package:ente_auth/l10n/l10n.dart";
import 'package:ente_auth/locale.dart';
import "package:ente_auth/onboarding/view/onboarding_page.dart";
import 'package:ente_auth/services/authenticator_service.dart';
import 'package:ente_auth/services/update_service.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/services/window_listener_service.dart';
@@ -34,7 +35,8 @@ class App extends StatefulWidget {
State<App> createState() => _AppState();
}
class _AppState extends State<App> with WindowListener, TrayListener {
class _AppState extends State<App>
with WindowListener, TrayListener, WidgetsBindingObserver {
late StreamSubscription<SignedOutEvent> _signedOutEvent;
late StreamSubscription<SignedInEvent> _signedInEvent;
Locale? locale;
@@ -56,6 +58,7 @@ class _AppState extends State<App> with WindowListener, TrayListener {
void initState() {
initWindowManager();
initTrayManager();
WidgetsBinding.instance.addObserver(this);
_signedOutEvent = Bus.instance.on<SignedOutEvent>().listen((event) {
if (mounted) {
@@ -98,6 +101,15 @@ class _AppState extends State<App> with WindowListener, TrayListener {
_signedInEvent.cancel();
}
@override
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
if (state == AppLifecycleState.resumed) {
if (Configuration.instance.hasConfiguredAccount()) {
AuthenticatorService.instance.onlineSync().ignore();
}
}
}
@override
Widget build(BuildContext context) {
if (Platform.isAndroid || kDebugMode) {

View File

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

View File

@@ -1,8 +1,10 @@
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:dio/io.dart';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/core/event_bus.dart';
import 'package:ente_auth/core/win_http_client.dart';
import 'package:ente_auth/events/endpoint_updated_event.dart';
import 'package:ente_auth/utils/package_info_util.dart';
import 'package:ente_auth/utils/platform_util.dart';
@@ -50,6 +52,19 @@ class Network {
},
),
);
if (Platform.isWindows) {
final customHttpClient = windowsHttpClient();
_enteDio.httpClientAdapter = IOHttpClientAdapter(
createHttpClient: () {
return customHttpClient;
},
);
_dio.httpClientAdapter = IOHttpClientAdapter(
createHttpClient: () {
return customHttpClient;
},
);
}
_setupInterceptors(endpoint);
Bus.instance.on<EndpointUpdatedEvent>().listen((event) {

View File

@@ -0,0 +1,68 @@
import 'dart:convert';
import 'dart:io';
import 'package:flutter/foundation.dart';
/*
Reference from
https://github.com/realm/realm-dart/blob/main/packages/realm_dart/lib/src/handles/native/default_client.dart
https://github.com/realm/realm-dart/pull/1378
*/
HttpClient windowsHttpClient() {
const isrgRootX1CertPEM = // The root certificate used by lets encrypt
'''
subject=CN=ISRG Root X1,O=Internet Security Research Group,C=US
issuer=CN=DST Root CA X3,O=Digital Signature Trust Co.
-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
-----END CERTIFICATE-----''';
if (Platform.isWindows) {
final context = SecurityContext(withTrustedRoots: true);
try {
context.setTrustedCertificatesBytes(
const AsciiEncoder().convert(isrgRootX1CertPEM),
);
debugPrint("Certificate added to trusted certificates");
return HttpClient(context: context);
} on TlsException catch (e) {
debugPrint(
"Error adding certificate to trusted certificates: ${e.osError?.message}");
// certificate is already trusted. Nothing to do here
if (e.osError?.message.contains("CERT_ALREADY_IN_HASH_TABLE") != true) {
rethrow;
} else {
return HttpClient();
}
}
}
throw UnsupportedError("This platform is not supported");
}

View File

@@ -269,6 +269,7 @@
"privacy": "Datenschutz",
"terms": "Bestimmungen",
"checkForUpdates": "Auf Updates prüfen",
"checkStatus": "Status überprüfen",
"downloadUpdate": "Herunterladen",
"criticalUpdateAvailable": "Kritische neue Aktualisierung ist verfügbar",
"updateAvailable": "Aktualisierung verfügbar",
@@ -417,6 +418,9 @@
"waitingForBrowserRequest": "Warten auf Browseranfrage...",
"waitingForVerification": "Warte auf Bestätigung...",
"passkey": "Passkey",
"passKeyPendingVerification": "Verifizierung steht noch aus",
"loginSessionExpired": "Sitzung abgelaufen",
"loginSessionExpiredDetails": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.",
"developerSettingsWarning": "Sind Sie sicher, dass Sie die Entwicklereinstellungen ändern möchten?",
"developerSettings": "Entwicklereinstellungen",
"serverEndpoint": "Server Endpunkt",

View File

@@ -263,12 +263,15 @@
"exportLogs": "Export logs",
"enterYourRecoveryKey": "Enter your recovery key",
"tempErrorContactSupportIfPersists": "It looks like something went wrong. Please retry after some time. If the error persists, please contact our support team.",
"networkHostLookUpErr": "Unable to connect to Ente, please check your network settings and contact support if the error persists.",
"networkConnectionRefusedErr": "Unable to connect to Ente, please retry after sometime. If the error persists, please contact support.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "It looks like something went wrong. Please retry after some time. If the error persists, please contact our support team.",
"about": "About",
"weAreOpenSource": "We are open source!",
"privacy": "Privacy",
"terms": "Terms",
"checkForUpdates": "Check for updates",
"checkStatus": "Check status",
"downloadUpdate": "Download",
"criticalUpdateAvailable": "Critical update available",
"updateAvailable": "Update available",
@@ -417,6 +420,9 @@
"waitingForBrowserRequest": "Waiting for browser request...",
"waitingForVerification": "Waiting for verification...",
"passkey": "Passkey",
"passKeyPendingVerification": "Verification is still pending",
"loginSessionExpired" : "Session expired",
"loginSessionExpiredDetails": "Your session has expired. Please login again.",
"developerSettingsWarning":"Are you sure that you want to modify Developer settings?",
"developerSettings": "Developer settings",
"serverEndpoint": "Server endpoint",

View File

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

View File

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

View File

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

View File

@@ -19,7 +19,7 @@
"pleaseVerifyDetails": "Por favor, verifique os detalhes e tente novamente",
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Chave secreta",
"codeAccountHint": "Conta (voce@dominio.com)",
"codeAccountHint": "Conta (você@domínio.com)",
"codeTagHint": "Etiqueta",
"accountKeyType": "Tipo de chave",
"sessionExpired": "Sessão expirada",
@@ -27,7 +27,7 @@
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Por favor, faça login novamente",
"loggingOut": "Desconectando...",
"loggingOut": "Saindo...",
"timeBasedKeyType": "Baseado no horário (TOTP)",
"counterBasedKeyType": "Baseado em um contador (HOTP)",
"saveAction": "Salvar",
@@ -51,7 +51,7 @@
"reportABug": "Informar um problema",
"crashAndErrorReporting": "Reporte de erros e falhas",
"reportBug": "Informar problema",
"emailUsMessage": "Por favor, envie um e-mail para {email}",
"emailUsMessage": "Envie um e-mail para {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
@@ -59,12 +59,12 @@
}
}
},
"contactSupport": "Falar com o suporte",
"contactSupport": "Falar com o Suporte",
"rateUsOnStore": "Avalie-nos na {storeName}",
"blog": "Blog",
"merchandise": "Produtos",
"verifyPassword": "Verificar senha",
"pleaseWait": "Por favor, aguarde...",
"pleaseWait": "Aguarde...",
"generatingEncryptionKeysTitle": "Gerando chaves de criptografia...",
"recreatePassword": "Recriar senha",
"recreatePasswordMessage": "O dispositivo atual não é poderoso o suficiente para verificar sua senha, mas podemos regenerar de uma forma que funcione com todos os dispositivos.\n\nPor favor, faça o login usando sua chave de recuperação e recrie sua senha (você pode usar o mesmo novamente se desejar).",
@@ -81,10 +81,10 @@
"importTypePlainText": "Texto simples",
"importTypeEnteEncrypted": "Exportação Ente criptografada",
"passwordForDecryptingExport": "Senha para descriptografar a exportação",
"passwordEmptyError": "O campo senha não pode estar vazio",
"passwordEmptyError": "A senha não pode estar vazia",
"importFromApp": "Importar códigos do {appName}",
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir contas\". Então, usando outro dispositivo, escaneie o QR code.\n\nDica: Você pode usar a câmera do seu notebook para fotografar o QR code.",
"importSelectJsonFile": "Selecione o arquivo JSON",
"importSelectJsonFile": "Selecionar arquivo JSON",
"importSelectAppExport": "Selecione o arquivo de exportação do aplicativo {appName}",
"importEnteEncGuide": "Selecione o arquivo JSON criptografado exportado do Ente",
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo Zip\" nas configurações do Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
@@ -92,7 +92,7 @@
"importAegisGuide": "Use a opção \"Exportar cofre\" nas Configurações do Aegis.\n\nSe o seu cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
"import2FasGuide": "Use a opção \"Configurações->Exportar cópia de segurança\" no aplicativo 2FAS.\n\nSe a cópia de segurança estiver criptografada, será necessário inserir a senha para descriptografá-la",
"importLastpassGuide": "Use a opção \"Transferir contas\" nas configurações do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
"exportCodes": "Exportar Códigos",
"exportCodes": "Exportar códigos",
"importLabel": "Importar",
"importInstruction": "Por favor, selecione um arquivo que contenha uma lista de códigos no seguinte formato",
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
@@ -114,14 +114,14 @@
"general": "Geral",
"settings": "Ajustes",
"copied": "Copiado",
"pleaseTryAgain": "Por favor, tente novamente",
"existingUser": "Usuário Existente",
"pleaseTryAgain": "Tente de novo",
"existingUser": "Usuário existente",
"newUser": "Novo no Ente",
"delete": "Excluir",
"enterYourPasswordHint": "Insira sua senha",
"forgotPassword": "Esqueci a senha",
"oops": "Opa",
"suggestFeatures": "Sugerir funcionalidades",
"suggestFeatures": "Sugerir recursos",
"faq": "Perguntas frequentes",
"faq_q_1": "Quão seguro é o Auth?",
"faq_a_1": "Todos os códigos que você faz backup via Auth são armazenados criptografados de ponta a ponta. Isso significa que somente você pode acessar seus códigos. Nossos aplicativos são de código aberto e nossa criptografia foi auditada externamente.",
@@ -143,12 +143,12 @@
"verify": "Verificar",
"verifyEmail": "Verificar e-mail",
"enterCodeHint": "Digite o código de 6 dígitos de\nseu aplicativo autenticador",
"lostDeviceTitle": "Perdeu seu dispositivo?",
"lostDeviceTitle": "Perdeu um dispositivo?",
"twoFactorAuthTitle": "Autenticação de dois fatores",
"passkeyAuthTitle": "Autenticação via Chave de acesso",
"verifyPasskey": "Verificar chave de acesso",
"verifyPasskey": "Verificar senha-mestra",
"recoverAccount": "Recuperar conta",
"enterRecoveryKeyHint": "Digite sua chave de recuperação",
"enterRecoveryKeyHint": "Digite a chave de recuperação",
"recover": "Recuperar",
"contactSupportViaEmailMessage": "Por favor, envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
"@contactSupportViaEmailMessage": {
@@ -160,7 +160,7 @@
},
"invalidQRCode": "QR Code inválido",
"noRecoveryKeyTitle": "Sem chave de recuperação?",
"enterEmailHint": "Insira o seu endereço de e-mail",
"enterEmailHint": "Insira o endereço de e-mail",
"invalidEmailTitle": "Endereço de e-mail inválido",
"invalidEmailMessage": "Por favor, insira um endereço de e-mail válido.",
"deleteAccount": "Excluir conta",
@@ -175,8 +175,8 @@
"moderateStrength": "Moderada",
"confirmPassword": "Confirme sua senha",
"close": "Fechar",
"oopsSomethingWentWrong": "Oops, Algo deu errado.",
"selectLanguage": "Selecionar idioma",
"oopsSomethingWentWrong": "Opa. Algo deu errado.",
"selectLanguage": "Trocar idioma",
"language": "Idioma",
"social": "Redes sociais",
"security": "Segurança",
@@ -199,14 +199,14 @@
"recoveryKeyCopiedToClipboard": "A chave de recuperação foi copiada para a área de transferência",
"recoveryKeyOnForgotPassword": "Caso você esqueça sua senha, a única maneira de recuperar seus dados é com essa chave.",
"recoveryKeySaveDescription": "Não armazenamos essa chave, por favor, salve essa chave de 24 palavras em um lugar seguro.",
"doThisLater": "Fazer isso mais tarde",
"doThisLater": "Fazer isso depois",
"saveKey": "Salvar chave",
"save": "Salvar",
"send": "Enviar",
"saveOrSendDescription": "Você deseja salvar isso no seu armazenamento (pasta de downloads por padrão) ou enviá-lo para outros aplicativos?",
"saveOnlyDescription": "Você deseja salvar isto no seu armazenamento (pasta de downloads por padrão)?",
"back": "Voltar",
"createAccount": "Criar uma conta",
"createAccount": "Criar conta",
"passwordStrength": "Força da senha: {passwordStrengthValue}",
"@passwordStrength": {
"description": "Text to indicate the password strength",
@@ -234,7 +234,7 @@
"passwordChangedSuccessfully": "Senha alterada com sucesso",
"generatingEncryptionKeys": "Gerando chaves de criptografia...",
"continueLabel": "Continuar",
"insecureDevice": "Dispositivo não seguro",
"insecureDevice": "Dispositivo inseguro",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves seguras neste dispositivo.\n\npor favor, faça o login com um dispositivo diferente.",
"howItWorks": "Como funciona",
"ackPasswordLostWarning": "Eu entendo que se eu perder minha senha, posso perder meus dados, já que meus dados são <underline>criptografados de ponta a ponta</underline>.",
@@ -257,11 +257,11 @@
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esquecer sua senha. Você pode encontrar sua chave de recuperação em Configurações > Conta.\n\nDigite sua chave de recuperação aqui para verificar se você a salvou corretamente.",
"confirmYourRecoveryKey": "Confirme sua chave de recuperação",
"confirm": "Confirmar",
"emailYourLogs": "Enviar por email seus logs",
"emailYourLogs": "Enviar logs por e-mail",
"pleaseSendTheLogsTo": "Por favor, envie os logs para \n{toEmail}",
"copyEmailAddress": "Copiar endereço de e-mail",
"exportLogs": "Exportar logs",
"enterYourRecoveryKey": "Digite sua chave de recuperação",
"enterYourRecoveryKey": "Digite a chave de recuperação",
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"about": "Sobre",
@@ -269,6 +269,7 @@
"privacy": "Privacidade",
"terms": "Termos",
"checkForUpdates": "Verificar por atualizações",
"checkStatus": "Verificar status",
"downloadUpdate": "Baixar",
"criticalUpdateAvailable": "Atualização crítica disponível",
"updateAvailable": "Atualização disponível",
@@ -277,7 +278,7 @@
"youAreOnTheLatestVersion": "Você está na versão mais recente",
"warning": "Atenção",
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Por favor, armazene-o com segurança.",
"iUnderStand": "Eu entendo",
"iUnderStand": "Entendo",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
@@ -326,11 +327,11 @@
"sorryTheCodeYouveEnteredIsIncorrect": "Desculpe, o código que você inseriu está incorreto",
"emailChangedTo": "E-mail alterado para {newEmail}",
"authenticationFailedPleaseTryAgain": "Falha na autenticação. Por favor, tente novamente",
"authenticationSuccessful": "Autenticação bem-sucedida!",
"authenticationSuccessful": "Autenticado!",
"twofactorAuthenticationSuccessfullyReset": "Autenticação de dois fatores redefinida com sucesso",
"incorrectRecoveryKey": "Chave de recuperação incorreta",
"theRecoveryKeyYouEnteredIsIncorrect": "A chave de recuperação inserida está incorreta",
"enterPassword": "Insira a senha",
"enterPassword": "Inserir senha",
"selectExportFormat": "Selecione o formato para exportação",
"exportDialogDesc": "As exportações criptografadas ficarão protegidas por uma senha de sua escolha.",
"encrypted": "Criptografado",
@@ -345,7 +346,7 @@
"showLargeIcons": "Mostrar ícones grandes",
"shouldHideCode": "Ocultar códigos",
"doubleTapToViewHiddenCode": "Você pode tocar duas vezes em uma entrada para ver o código",
"focusOnSearchBar": "Foco na pesquisa ao iniciar o aplicativo",
"focusOnSearchBar": "Foco na busca ao iniciar o app",
"confirmUpdatingkey": "Você tem certeza que deseja atualizar a chave secreta?",
"minimizeAppOnCopy": "Minimizar aplicativo ao copiar",
"editCodeAuthMessage": "Autenticar para editar o código",
@@ -357,7 +358,7 @@
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Não reconhecido. Tente novamente.",
"androidBiometricNotRecognized": "Não reconhecido. Tente de novo.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
@@ -385,7 +386,7 @@
"@androidDeviceCredentialsSetupDescription": {
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
},
"goToSettings": "Ir para Configurações",
"goToSettings": "Ir para Ajustes",
"@goToSettings": {
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
},
@@ -410,13 +411,16 @@
"signOutFromOtherDevices": "Terminar sessão em outros dispositivos",
"signOutOtherBody": "Se você acha que alguém pode saber sua senha, você pode forçar todos os outros dispositivos que estão com sua conta a desconectar.",
"signOutOtherDevices": "Terminar sessão em outros dispositivos",
"doNotSignOut": "Não encerrar sessão",
"doNotSignOut": "Não sair",
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
"hearUsExplanation": "Não rastreamos instalações do aplicativo. Seria útil se você nos contasse onde nos encontrou!",
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
"waitingForVerification": "Esperando por verificação...",
"passkey": "Chave de acesso",
"passkey": "Senha-mestra",
"passKeyPendingVerification": "A verificação ainda está pendente",
"loginSessionExpired": "Sessão expirada",
"loginSessionExpiredDetails": "Sua sessão expirou. Por favor, entre novamente.",
"developerSettingsWarning": "Tem certeza de que deseja modificar as configurações de Desenvolvedor?",
"developerSettings": "Configurações de desenvolvedor",
"serverEndpoint": "Endpoint do servidor",
@@ -429,7 +433,7 @@
"pinnedCodeMessage": "{code} foi fixado",
"unpinnedCodeMessage": "{code} foi desafixado",
"tags": "Etiquetas",
"createNewTag": "Criar etiqueta",
"createNewTag": "Criar nova etiqueta",
"tag": "Etiqueta",
"create": "Criar",
"editTag": "Editar etiqueta",

View File

@@ -269,6 +269,7 @@
"privacy": "Конфиденциальность",
"terms": "Условия использования",
"checkForUpdates": "Проверить наличие обновлений",
"checkStatus": "Проверить статус",
"downloadUpdate": "Скачать",
"criticalUpdateAvailable": "Доступно критическое обновление",
"updateAvailable": "Доступно обновление",
@@ -417,6 +418,9 @@
"waitingForBrowserRequest": "Ожидание запроса браузера...",
"waitingForVerification": "Ожидание подтверждения...",
"passkey": "Ключ",
"passKeyPendingVerification": "Верификация еще не завершена",
"loginSessionExpired": "Сессия недействительна",
"loginSessionExpiredDetails": "Сессия истекла. Войдите снова.",
"developerSettingsWarning": "Вы уверены, что хотите изменить настройки разработчика?",
"developerSettings": "Настройки разработчика",
"serverEndpoint": "Конечная точка сервера",

View File

@@ -159,5 +159,6 @@
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
},
"noInternetConnection": "Ingen internetanslutning",
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen."
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen.",
"loginSessionExpiredDetails": "Din session har upphört. Logga in igen."
}

View File

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

View File

@@ -269,6 +269,7 @@
"privacy": "隐私",
"terms": "使用条款",
"checkForUpdates": "检查更新",
"checkStatus": "检查状态",
"downloadUpdate": "下载",
"criticalUpdateAvailable": "有重要更新可用",
"updateAvailable": "有可用的更新",
@@ -417,6 +418,9 @@
"waitingForBrowserRequest": "正在等待浏览器请求...",
"waitingForVerification": "等待验证...",
"passkey": "通行密钥",
"passKeyPendingVerification": "仍需进行验证",
"loginSessionExpired": "会话已过期",
"loginSessionExpiredDetails": "您的会话已过期。请重新登录。",
"developerSettingsWarning": "您确定要修改开发者设置吗?",
"developerSettings": "开发者设置",
"serverEndpoint": "服务器端点",

View File

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

View File

@@ -42,14 +42,14 @@ class PasskeyService {
Future<void> openPasskeyPage(BuildContext context) async {
try {
final jwtToken = await getJwtToken();
final url = "https://accounts.ente.io/account-handoff?token=$jwtToken";
final url = "https://accounts.ente.io/passkeys?token=$jwtToken";
await launchUrlString(
url,
mode: LaunchMode.externalApplication,
);
} catch (e) {
Logger('PasskeyService').severe("failed to open passkey page", e);
showGenericErrorDialog(context: context).ignore();
showGenericErrorDialog(context: context, error: e).ignore();
}
}
}

View File

@@ -101,7 +101,7 @@ class UserService {
);
return;
}
unawaited(showGenericErrorDialog(context: context));
unawaited(showGenericErrorDialog(context: context, error: null));
} on DioException catch (e) {
await dialog.hide();
_logger.info(e);
@@ -114,12 +114,12 @@ class UserService {
),
);
} else {
unawaited(showGenericErrorDialog(context: context));
unawaited(showGenericErrorDialog(context: context, error: e));
}
} catch (e) {
await dialog.hide();
_logger.severe(e);
unawaited(showGenericErrorDialog(context: context));
unawaited(showGenericErrorDialog(context: context, error: e));
}
}
@@ -165,7 +165,11 @@ class UserService {
return userDetails;
} catch (e) {
_logger.warning("Failed to fetch", e);
rethrow;
if (e is DioException && e.response?.statusCode == 401) {
throw UnauthorizedError();
} else {
rethrow;
}
}
}
@@ -213,11 +217,17 @@ class UserService {
}
} catch (e) {
_logger.severe(e);
// check if token is already invalid
if (e is DioException && e.response?.statusCode == 401) {
await Configuration.instance.logout();
Navigator.of(context).popUntil((route) => route.isFirst);
return;
}
//This future is for waiting for the dialog from which logout() is called
//to close and only then to show the error dialog.
Future.delayed(
const Duration(milliseconds: 150),
() => showGenericErrorDialog(context: context),
() => showGenericErrorDialog(context: context, error: e),
);
rethrow;
}
@@ -238,7 +248,10 @@ class UserService {
}
} catch (e) {
_logger.severe(e);
await showGenericErrorDialog(context: context);
await showGenericErrorDialog(
context: context,
error: e,
);
return null;
}
}
@@ -266,32 +279,77 @@ class UserService {
}
}
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
final userPassword = Configuration.instance.getVolatilePassword();
if (userPassword == null) throw Exception("volatile password is null");
await _saveConfiguration(response);
Widget page;
if (Configuration.instance.getEncryptedToken() != null) {
await Configuration.instance.decryptSecretsAndGetKeyEncKey(
userPassword,
Configuration.instance.getKeyAttributes()!,
);
page = const HomePage();
} else {
throw Exception("unexpected response during passkey verification");
}
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
Future<dynamic> getTokenForPasskeySession(String sessionID) async {
try {
final response = await _dio.get(
"${_config.getHttpEndpoint()}/users/two-factor/passkeys/get-token",
queryParameters: {
"sessionID": sessionID,
},
),
(route) => route.isFirst,
);
);
return response.data;
} on DioException catch (e) {
if (e.response != null) {
if (e.response!.statusCode == 404 || e.response!.statusCode == 410) {
throw PassKeySessionExpiredError();
}
if (e.response!.statusCode == 400) {
throw PassKeySessionNotVerifiedError();
}
}
rethrow;
} catch (e, s) {
_logger.severe("unexpected error", e, s);
rethrow;
}
}
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
final ProgressDialog dialog =
createProgressDialog(context, context.l10n.pleaseWait);
await dialog.show();
try {
final userPassword = _config.getVolatilePassword();
await _saveConfiguration(response);
if (userPassword == null) {
await dialog.hide();
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return const PasswordReentryPage();
},
),
(route) => route.isFirst,
);
} else {
Widget page;
if (_config.getEncryptedToken() != null) {
await _config.decryptSecretsAndGetKeyEncKey(
userPassword,
_config.getKeyAttributes()!,
);
page = const HomePage();
} else {
throw Exception("unexpected response during passkey verification");
}
await dialog.hide();
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
},
),
(route) => route.isFirst,
);
}
} catch (e) {
_logger.severe(e);
await dialog.hide();
rethrow;
}
}
Future<void> verifyEmail(
@@ -316,9 +374,12 @@ class UserService {
await dialog.hide();
if (response.statusCode == 200) {
Widget page;
final String passkeySessionID = response.data["passkeySessionID"];
final String twoFASessionID = response.data["twoFactorSessionID"];
if (twoFASessionID.isNotEmpty) {
page = TwoFactorAuthenticationPage(twoFASessionID);
} else if (passkeySessionID.isNotEmpty) {
page = PasskeyPage(passkeySessionID);
} else {
await _saveConfiguration(response);
if (Configuration.instance.getEncryptedToken() != null) {

View File

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

View File

@@ -3,51 +3,64 @@ import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/store/authenticator_db.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
bool showingLogoutDialog = false;
Future<void> autoLogoutAlert(BuildContext context) async {
final l10n = context.l10n;
final AlertDialog alert = AlertDialog(
title: Text(l10n.sessionExpired),
content: Text(l10n.pleaseLoginAgain),
actions: [
TextButton(
child: Text(
l10n.ok,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
if (showingLogoutDialog) {
debugPrint("Ignore event as already logging out");
return;
}
try {
showingLogoutDialog = true;
final l10n = context.l10n;
final AlertDialog alert = AlertDialog(
title: Text(l10n.sessionExpired),
content: Text(l10n.pleaseLoginAgain),
actions: [
TextButton(
child: Text(
l10n.ok,
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
),
),
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop('dialog');
Navigator.of(context).popUntil((route) => route.isFirst);
int pendingSyncCount =
await AuthenticatorDB.instance.getNeedSyncCount();
if (pendingSyncCount > 0) {
// ignore: unawaited_futures
showChoiceActionSheet(
context,
title: l10n.pendingSyncs,
body: l10n.pendingSyncsWarningBody,
firstButtonLabel: context.l10n.yesLogout,
isCritical: true,
firstButtonOnTap: () async {
await _logout(context, l10n);
},
);
} else {
await _logout(context, l10n);
}
},
),
onPressed: () async {
Navigator.of(context, rootNavigator: true).pop('dialog');
Navigator.of(context).popUntil((route) => route.isFirst);
int pendingSyncCount =
await AuthenticatorDB.instance.getNeedSyncCount();
if (pendingSyncCount > 0) {
// ignore: unawaited_futures
showChoiceActionSheet(
context,
title: l10n.pendingSyncs,
body: l10n.pendingSyncsWarningBody,
firstButtonLabel: context.l10n.yesLogout,
isCritical: true,
firstButtonOnTap: () async {
await _logout(context, l10n);
},
);
} else {
await _logout(context, l10n);
}
},
),
],
);
await showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return alert;
},
);
],
);
await showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return alert;
},
);
} catch (e) {
Logger("LogoutDialog").severe('failed to process sign out action', e);
} finally {
showingLogoutDialog = false;
}
}
Future<void> _logout(BuildContext context, AppLocalizations l10n) async {

View File

@@ -412,7 +412,10 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
_logger.severe(e, s);
await dialog.hide();
// ignore: unawaited_futures
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
}
}
@@ -472,7 +475,10 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
_logger.severe(e, s);
await dialog.hide();
// ignore: unawaited_futures
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
}
}
@@ -500,7 +506,10 @@ class _PasswordEntryPageState extends State<PasswordEntryPage> {
);
} else {
// ignore: unawaited_futures
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
}
}
}

View File

@@ -47,7 +47,10 @@ class _VerifyRecoveryPageState extends State<VerifyRecoveryPage> {
"Please check your internet connection and try again.",
);
} else {
await showGenericErrorDialog(context: context);
await showGenericErrorDialog(
context: context,
error: e,
);
}
return;
}
@@ -107,7 +110,10 @@ class _VerifyRecoveryPageState extends State<VerifyRecoveryPage> {
);
} catch (e) {
// ignore: unawaited_futures
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
return;
}
}

View File

@@ -485,7 +485,10 @@ class _ButtonChildWidgetState extends State<ButtonChildWidget> {
} else if (exception != null) {
//This is to show the execution was unsuccessful if the dialog is manually
//closed before the execution completes.
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: exception,
);
}
}

View File

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

View File

@@ -56,7 +56,8 @@ class _HomePageState extends State<HomePage> {
final scaffoldKey = GlobalKey<ScaffoldState>();
final TextEditingController _textController = TextEditingController();
final FocusNode searchInputFocusNode = FocusNode();
final bool _autoFocusSearch =
PreferenceService.instance.shouldAutoFocusOnSearchBar();
bool _showSearchBox = false;
String _searchText = "";
List<Code>? _allCodes;
@@ -87,18 +88,7 @@ class _HomePageState extends State<HomePage> {
_iconsChangedEvent = Bus.instance.on<IconsChangedEvent>().listen((event) {
setState(() {});
});
_showSearchBox = PreferenceService.instance.shouldAutoFocusOnSearchBar();
if (_showSearchBox) {
WidgetsBinding.instance.addPostFrameCallback(
(_) {
// https://github.com/flutter/flutter/issues/20706#issuecomment-646328652
FocusScope.of(context).unfocus();
Timer(const Duration(milliseconds: 1), () {
FocusScope.of(context).requestFocus(searchInputFocusNode);
});
},
);
}
_showSearchBox = _autoFocusSearch;
}
void _loadCodes() {
@@ -238,8 +228,9 @@ class _HomePageState extends State<HomePage> {
title: !_showSearchBox
? const Text('Ente Auth')
: TextField(
focusNode: searchInputFocusNode,
autofocus: _searchText.isEmpty,
autocorrect: false,
enableSuggestions: false,
autofocus: _autoFocusSearch,
controller: _textController,
onChanged: (val) {
_searchText = val;
@@ -458,7 +449,10 @@ class _HomePageState extends State<HomePage> {
CodeStore.instance.addCode(newCode);
_focusNewCode(newCode);
} catch (e, s) {
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
_logger.severe("error while handling deeplink", e, s);
}
}

View File

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

View File

@@ -111,7 +111,10 @@ class AccountSectionWidget extends StatelessWidget {
CryptoUtil.bin2hex(Configuration.instance.getRecoveryKey());
} catch (e) {
// ignore: unawaited_futures
showGenericErrorDialog(context: context);
showGenericErrorDialog(
context: context,
error: e,
);
return;
}
// ignore: unawaited_futures

View File

@@ -109,8 +109,8 @@ Future<int?> _processBitwardenExportFile(
Code.steamDigits,
);
} else {
var issuer = item['name'];
var account = item['login']['username'];
var issuer = item['name'] ?? '';
var account = item['login']['username'] ?? '';
code = Code.fromAccountAndSecret(
Type.totp,
account,

View File

@@ -105,7 +105,7 @@ Future<int?> _processRaivoExportFile(BuildContext context, String path) async {
otpUrl =
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
} else {
throw Exception('Invalid OTP type');
throw Exception('Invalid OTP type $kind');
}
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
}

View File

@@ -139,7 +139,10 @@ Future<int?> _process2FasExportFile(
for (var item in decodedServices) {
var kind = item['otp']['tokenType'];
var account = item['otp']['account'] ?? '';
var issuer = item['otp']['issuer'] ?? item['name'] ?? '';
var issuer = item['otp']['issuer'];
if (issuer == null || (issuer as String).isEmpty) {
issuer = item['name'] ?? '';
}
var algorithm = item['otp']['algorithm'];
var secret = item['secret'];
var timer = item['otp']['period'];

View File

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

View File

@@ -13,6 +13,8 @@ import 'package:ente_auth/ui/components/components_constants.dart';
import 'package:ente_auth/ui/components/dialog_widget.dart';
import 'package:ente_auth/ui/components/models/button_result.dart';
import 'package:ente_auth/ui/components/models/button_type.dart';
import 'package:ente_auth/utils/email_util.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
typedef DialogBuilder = DialogWidget Function(BuildContext context);
@@ -69,22 +71,97 @@ Future<ButtonResult?> showErrorDialogForException({
);
}
String parseErrorForUI(
BuildContext context,
String genericError, {
Object? error,
bool surfaceError = kDebugMode,
}) {
try {
if (error == null) {
return genericError;
}
if (error is DioException) {
final DioException dioError = error;
if (dioError.type == DioExceptionType.unknown) {
if (dioError.error.toString().contains('Failed host lookup')) {
return context.l10n.networkHostLookUpErr;
} else if (dioError.error.toString().contains('SocketException')) {
return context.l10n.networkConnectionRefusedErr;
}
}
}
// return generic error if the user is not internal and the error is not in debug mode
if (!kDebugMode) {
return genericError;
}
String errorInfo = "";
if (error is DioException) {
final DioException dioError = error;
if (dioError.type == DioExceptionType.badResponse) {
if (dioError.response?.data["code"] != null) {
errorInfo = "Reason: " + dioError.response!.data["code"];
} else {
errorInfo = "Reason: " + dioError.response!.data.toString();
}
} else if (dioError.type == DioExceptionType.unknown) {
errorInfo = "Reason: " + dioError.error.toString();
} else {
errorInfo = "Reason: " + dioError.type.toString();
}
} else {
if (kDebugMode) {
errorInfo = error.toString();
} else {
errorInfo = error.toString().split('Source stack')[0];
}
}
if (errorInfo.isNotEmpty) {
return "$genericError\n\n$errorInfo";
}
return genericError;
} catch (e) {
return genericError;
}
}
///Will return null if dismissed by tapping outside
Future<ButtonResult?> showGenericErrorDialog({
required BuildContext context,
bool isDismissible = true,
required Object? error,
}) async {
final errorBody = parseErrorForUI(
context,
context.l10n.itLooksLikeSomethingWentWrongPleaseRetryAfterSome,
error: error,
);
return showDialogWidget(
context: context,
title: context.l10n.error,
icon: Icons.error_outline_outlined,
body: context.l10n.itLooksLikeSomethingWentWrongPleaseRetryAfterSome,
body: errorBody,
isDismissible: isDismissible,
buttons: const [
buttons: [
ButtonWidget(
buttonType: ButtonType.primary,
labelText: context.l10n.ok,
buttonAction: ButtonAction.first,
isInAlert: true,
),
ButtonWidget(
buttonType: ButtonType.secondary,
labelText: "OK",
isInAlert: true,
labelText: context.l10n.contactSupport,
buttonAction: ButtonAction.second,
onTap: () async {
await sendLogs(
context,
context.l10n.contactSupport,
"support@ente.io",
postShare: () {},
);
},
),
],
);

View File

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

View File

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

View File

@@ -27,3 +27,6 @@ include:
- libffi.so.8
- libtiff.so.5
- libjpeg.so.8
supported_mime_type:
- x-scheme-handler/enteauth

View File

@@ -31,4 +31,4 @@ categories:
startup_notify: false
supported_mime_type:
- x-scheme-handler/ente
- x-scheme-handler/enteauth

View File

@@ -28,4 +28,4 @@ categories:
startup_notify: false
supported_mime_type:
- x-scheme-handler/ente
- x-scheme-handler/enteauth

View File

@@ -26,11 +26,11 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- ReachabilitySwift (5.2.2)
- ReachabilitySwift (5.2.3)
- screen_retriever (0.0.1):
- FlutterMacOS
- Sentry/HybridSDK (8.25.0)
- sentry_flutter (7.20.1):
- sentry_flutter (7.20.2):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.25.0)
@@ -44,18 +44,21 @@ PODS:
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- "sqlite3 (3.45.3+1)":
- "sqlite3/common (= 3.45.3+1)"
- "sqlite3/common (3.45.3+1)"
- "sqlite3/fts5 (3.45.3+1)":
- "sqlite3 (3.46.0+1)":
- "sqlite3/common (= 3.46.0+1)"
- "sqlite3/common (3.46.0+1)"
- "sqlite3/dbstatvtab (3.46.0+1)":
- sqlite3/common
- "sqlite3/perf-threadsafe (3.45.3+1)":
- "sqlite3/fts5 (3.46.0+1)":
- sqlite3/common
- "sqlite3/rtree (3.45.3+1)":
- "sqlite3/perf-threadsafe (3.46.0+1)":
- sqlite3/common
- "sqlite3/rtree (3.46.0+1)":
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- FlutterMacOS
- "sqlite3 (~> 3.45.3+1)"
- "sqlite3 (~> 3.46.0+1)"
- sqlite3/dbstatvtab
- sqlite3/fts5
- sqlite3/perf-threadsafe
- sqlite3/rtree
@@ -152,23 +155,23 @@ SPEC CHECKSUMS:
flutter_inappwebview_macos: 9600c9df9fdb346aaa8933812009f8d94304203d
flutter_local_authentication: 85674893931e1c9cfa7c9e4f5973cb8c56b018b0
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
ReachabilitySwift: 7f151ff156cea1481a8411701195ac6a984f4979
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
sentry_flutter: 0cf2507eb90ff7a6aa3304e900dd7f08edbbefdf
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sodium_libs: d39bd76697736cb11ce4a0be73b9b4bc64466d6f
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
sqlite3_flutter_libs: 8d204ef443cf0d5c1c8b058044eab53f3943a9c5
sqlite3: 292c3e1bfe89f64e51ea7fc7dab9182a017c8630
sqlite3_flutter_libs: 5ca46c1a04eddfbeeb5b16566164aa7ad1616e7b
tray_manager: 9064e219c56d75c476e46b9a21182087930baf90
url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95
url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399
window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8
PODFILE CHECKSUM: f401c31c8f7c5571f6f565c78915d54338812dab

View File

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

View File

@@ -45,10 +45,10 @@ packages:
dependency: "direct main"
description:
name: archive
sha256: "0763b45fa9294197a2885c8567927e2830ade852e5c896fd4ab7e0e348d0f373"
sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d
url: "https://pub.dev"
source: hosted
version: "3.5.0"
version: "3.6.1"
args:
dependency: transitive
description:
@@ -117,10 +117,10 @@ packages:
dependency: transitive
description:
name: build_daemon
sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1"
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
url: "https://pub.dev"
source: hosted
version: "4.0.1"
version: "4.0.2"
build_resolvers:
dependency: transitive
description:
@@ -133,18 +133,18 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
sha256: "644dc98a0f179b872f612d3eb627924b578897c629788e858157fa5e704ca0c7"
url: "https://pub.dev"
source: hosted
version: "2.4.9"
version: "2.4.11"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799"
sha256: e3c79f69a64bdfcd8a776a3c28db4eb6e3fb5356d013ae5eb2e52007706d5dbe
url: "https://pub.dev"
source: hosted
version: "7.3.0"
version: "7.3.1"
built_collection:
dependency: transitive
description:
@@ -293,9 +293,9 @@ packages:
dependency: "direct main"
description:
path: "packages/desktop_webview_window"
ref: fix-webkit-version
resolved-ref: fe2223e4edfecdbb3a97bb9e3ced73db4ae9d979
url: "https://github.com/ente-io/flutter-desktopwebview-fork"
ref: main
resolved-ref: "726d8281a244d56ab36e843f0427c48de6d9cc56"
url: "https://github.com/MixinNetwork/flutter-plugins"
source: git
version: "0.2.4"
device_info_plus:
@@ -415,10 +415,10 @@ packages:
dependency: "direct main"
description:
name: file_saver
sha256: bdebc720e17b3e01aba59da69b6d47020a7e5ba7d5c75bd9194f9618d5f16ef4
sha256: d375b351e3331663abbaf99747abd72f159260c58fbbdbca9f926f02c01bdc48
url: "https://pub.dev"
source: hosted
version: "0.2.12"
version: "0.2.13"
fixnum:
dependency: "direct main"
description:
@@ -444,10 +444,10 @@ packages:
dependency: "direct main"
description:
name: flutter_bloc
sha256: f0ecf6e6eb955193ca60af2d5ca39565a86b8a142452c5b24d96fb477428f4d2
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
url: "https://pub.dev"
source: hosted
version: "8.1.5"
version: "8.1.6"
flutter_context_menu:
dependency: "direct main"
description:
@@ -586,59 +586,59 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f"
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
url: "https://pub.dev"
source: hosted
version: "2.0.19"
version: "2.0.20"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685
sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0"
url: "https://pub.dev"
source: hosted
version: "9.0.0"
version: "9.2.2"
flutter_secure_storage_linux:
dependency: "direct overridden"
description:
path: flutter_secure_storage_linux
ref: patch-1
resolved-ref: da8ab43bc51c8c3249a261c33b27aa6f018f819b
url: "https://github.com/prateekmedia/flutter_secure_storage.git"
ref: develop
resolved-ref: cb30953edc029dc4059b72700270b4cd3a3afade
url: "https://github.com/mogol/flutter_secure_storage.git"
source: git
version: "1.2.0"
version: "1.2.1"
flutter_secure_storage_macos:
dependency: transitive
description:
name: flutter_secure_storage_macos
sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c
sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.1.2"
flutter_secure_storage_platform_interface:
dependency: transitive
description:
name: flutter_secure_storage_platform_interface
sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e"
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
url: "https://pub.dev"
source: hosted
version: "1.0.2"
version: "1.1.2"
flutter_secure_storage_web:
dependency: transitive
description:
name: flutter_secure_storage_web
sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20"
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
url: "https://pub.dev"
source: hosted
version: "1.1.2"
version: "1.2.1"
flutter_secure_storage_windows:
dependency: transitive
description:
name: flutter_secure_storage_windows
sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108"
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "3.1.2"
flutter_slidable:
dependency: "direct main"
description:
@@ -685,10 +685,10 @@ packages:
dependency: "direct main"
description:
name: fluttertoast
sha256: "81b68579e23fcbcada2db3d50302813d2371664afe6165bc78148050ab94bf66"
sha256: "7eae679e596a44fdf761853a706f74979f8dd3cd92cf4e23cae161fda091b847"
url: "https://pub.dev"
source: hosted
version: "8.2.5"
version: "8.2.6"
freezed_annotation:
dependency: transitive
description:
@@ -725,10 +725,10 @@ packages:
dependency: "direct main"
description:
name: gradient_borders
sha256: "69eeaff519d145a4c6c213ada1abae386bcc8981a4970d923e478ce7ba19e309"
sha256: b1cd969552c83f458ff755aa68e13a0327d09f06c3f42f471b423b01427f21f8
url: "https://pub.dev"
source: hosted
version: "1.0.0"
version: "1.0.1"
graphs:
dependency: transitive
description:
@@ -757,10 +757,10 @@ packages:
dependency: transitive
description:
name: hashlib_codecs
sha256: "49e2a471f74b15f1854263e58c2ac11f2b631b5b12c836f9708a35397d36d626"
sha256: a1c7b5d89ff29e81fd8e8c0b35966db4c935e149fc4ebe1ebf71e358c15863ab
url: "https://pub.dev"
source: hosted
version: "2.2.0"
version: "2.4.0"
hex:
dependency: transitive
description:
@@ -805,18 +805,18 @@ packages:
dependency: transitive
description:
name: image
sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e"
sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
url: "https://pub.dev"
source: hosted
version: "4.1.7"
version: "4.2.0"
intl:
dependency: "direct main"
description:
name: intl
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.18.1"
version: "0.19.0"
io:
dependency: transitive
description:
@@ -853,26 +853,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.1"
lints:
dependency: "direct dev"
description:
@@ -893,18 +893,18 @@ packages:
dependency: "direct main"
description:
name: local_auth_android
sha256: e0e5b1ea247c5a0951c13a7ee13dc1beae69750e6a2e1910d1ed6a3cd4d56943
sha256: "48dfb2d954da8ef6a77adfc93a29998f7729e9308eaa817e91dea4500317b2c8"
url: "https://pub.dev"
source: hosted
version: "1.0.38"
version: "1.0.39"
local_auth_darwin:
dependency: "direct main"
description:
name: local_auth_darwin
sha256: "33381a15b0de2279523eca694089393bb146baebdce72a404555d03174ebc1e9"
sha256: e424ebf90d5233452be146d4a7da4bcd7a70278b67791592f3fde1bda8eef9e2
url: "https://pub.dev"
source: hosted
version: "1.2.2"
version: "1.3.1"
local_auth_platform_interface:
dependency: transitive
description:
@@ -957,10 +957,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.12.0"
mime:
dependency: transitive
description:
@@ -973,10 +973,10 @@ packages:
dependency: "direct dev"
description:
name: mocktail
sha256: c4b5007d91ca4f67256e720cb1b6d704e79a510183a12fa551021f652577dce6
sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
url: "https://pub.dev"
source: hosted
version: "1.0.3"
version: "1.0.4"
modal_bottom_sheet:
dependency: "direct main"
description:
@@ -1085,18 +1085,18 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
url: "https://pub.dev"
source: hosted
version: "2.2.4"
version: "2.2.5"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.4.0"
path_provider_linux:
dependency: transitive
description:
@@ -1141,10 +1141,10 @@ packages:
dependency: transitive
description:
name: platform
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65"
url: "https://pub.dev"
source: hosted
version: "3.1.4"
version: "3.1.5"
plugin_platform_interface:
dependency: transitive
description:
@@ -1157,10 +1157,10 @@ packages:
dependency: "direct main"
description:
name: pointycastle
sha256: "79fbafed02cfdbe85ef3fd06c7f4bc2cbcba0177e61b765264853d4253b21744"
sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe"
url: "https://pub.dev"
source: hosted
version: "3.9.0"
version: "3.9.1"
pool:
dependency: transitive
description:
@@ -1205,10 +1205,10 @@ packages:
dependency: transitive
description:
name: pubspec_parse
sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
url: "https://pub.dev"
source: hosted
version: "1.2.3"
version: "1.3.0"
qr:
dependency: transitive
description:
@@ -1245,18 +1245,18 @@ packages:
dependency: "direct main"
description:
name: sentry
sha256: e572d33a3ff1d69549f33ee828a8ff514047d43ca8eea4ab093d72461205aa3e
sha256: "57514bc72d441ffdc463f498d6886aa586a2494fa467a1eb9d649c28010d7ee3"
url: "https://pub.dev"
source: hosted
version: "7.20.1"
version: "7.20.2"
sentry_flutter:
dependency: "direct main"
description:
name: sentry_flutter
sha256: ac8cf6bb849f3560353ae33672e17b2713809a4e8de0d3cf372e9e9c42013757
sha256: "9723d58470ca43a360681ddd26abb71ca7b815f706bc8d3747afd054cf639ded"
url: "https://pub.dev"
source: hosted
version: "7.20.1"
version: "7.20.2"
share_plus:
dependency: "direct main"
description:
@@ -1285,18 +1285,18 @@ packages:
dependency: transitive
description:
name: shared_preferences_android
sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2"
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
version: "2.2.3"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
url: "https://pub.dev"
source: hosted
version: "2.3.5"
version: "2.4.0"
shared_preferences_linux:
dependency: transitive
description:
@@ -1341,10 +1341,10 @@ packages:
dependency: transitive
description:
name: shelf_web_socket
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "2.0.0"
shortid:
dependency: transitive
description:
@@ -1370,10 +1370,10 @@ packages:
dependency: transitive
description:
name: sodium_libs
sha256: f7f6719b7ab3e8512ce7a5ecd7bc8d865482431cdd5a07a46b55b13c152b54e1
sha256: "441444f6f433032bae3444c2ef5ed2cf5bc0def77f104abdff20aedcf79a7c7a"
url: "https://pub.dev"
source: hosted
version: "2.2.1+1"
version: "2.2.1+5"
source_gen:
dependency: transitive
description:
@@ -1411,10 +1411,10 @@ packages:
description:
path: sqflite
ref: HEAD
resolved-ref: f281785e12e8b1abf2f9d41a587fc83d810724cf
resolved-ref: "3309d399dd7d695bbfa7c05f643bb16765cef4ee"
url: "https://github.com/tekartik/sqflite"
source: git
version: "2.3.3"
version: "2.3.3+1"
sqflite_common:
dependency: transitive
description:
@@ -1435,18 +1435,18 @@ packages:
dependency: "direct main"
description:
name: sqlite3
sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202"
sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.4.3"
sqlite3_flutter_libs:
dependency: "direct main"
description:
name: sqlite3_flutter_libs
sha256: fb2a106a2ea6042fe57de2c47074cc31539a941819c91e105b864744605da3f5
sha256: "62bbb4073edbcdf53f40c80775f33eea01d301b7b81417e5b3fb7395416258c1"
url: "https://pub.dev"
source: hosted
version: "0.5.21"
version: "0.5.24"
stack_trace:
dependency: transitive
description:
@@ -1523,10 +1523,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.0"
timezone:
dependency: transitive
description:
@@ -1547,10 +1547,10 @@ packages:
dependency: "direct main"
description:
name: tray_manager
sha256: e0ac9a88b2700f366b8629b97e8663b6ef450a2f169560a685dc167bfe9c9c29
sha256: c9a63fd88bd3546287a7eb8ccc978d707eef82c775397af17dda3a4f4c039e64
url: "https://pub.dev"
source: hosted
version: "0.2.2"
version: "0.2.3"
tuple:
dependency: "direct main"
description:
@@ -1579,26 +1579,26 @@ packages:
dependency: "direct main"
description:
name: url_launcher
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
url: "https://pub.dev"
source: hosted
version: "6.2.6"
version: "6.3.0"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775"
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
url: "https://pub.dev"
source: hosted
version: "6.3.1"
version: "6.3.3"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5"
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
url: "https://pub.dev"
source: hosted
version: "6.2.5"
version: "6.3.0"
url_launcher_linux:
dependency: transitive
description:
@@ -1611,10 +1611,10 @@ packages:
dependency: transitive
description:
name: url_launcher_macos
sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
version: "3.2.0"
url_launcher_platform_interface:
dependency: transitive
description:
@@ -1683,10 +1683,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "13.0.0"
version: "14.2.1"
watcher:
dependency: transitive
description:
@@ -1703,22 +1703,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.1"
web_socket:
dependency: transitive
description:
name: web_socket
sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078"
url: "https://pub.dev"
source: hosted
version: "0.1.5"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276
url: "https://pub.dev"
source: hosted
version: "2.4.5"
version: "3.0.0"
win32:
dependency: "direct main"
description:
name: win32
sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb"
sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4
url: "https://pub.dev"
source: hosted
version: "5.5.0"
version: "5.5.1"
win32_registry:
dependency: transitive
description:
@@ -1731,10 +1739,10 @@ packages:
dependency: "direct main"
description:
name: window_manager
sha256: b3c895bdf936c77b83c5254bec2e6b3f066710c1f89c38b20b8acc382b525494
sha256: "8699323b30da4cdbe2aa2e7c9de567a6abd8a97d9a5c850a3c86dcd0b34bbfbf"
url: "https://pub.dev"
source: hosted
version: "0.3.8"
version: "0.3.9"
xdg_directories:
dependency: transitive
description:
@@ -1768,5 +1776,5 @@ packages:
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.19.0"
dart: ">=3.4.0 <4.0.0"
flutter: ">=3.22.0"

View File

@@ -1,6 +1,6 @@
name: ente_auth
description: ente two-factor authenticator
version: 3.0.7+307
version: 3.0.15+315
publish_to: none
environment:
@@ -20,8 +20,8 @@ dependencies:
convert: ^3.1.1
desktop_webview_window:
git:
url: https://github.com/ente-io/flutter-desktopwebview-fork
ref: fix-webkit-version
url: https://github.com/MixinNetwork/flutter-plugins
ref: main
path: packages/desktop_webview_window
device_info_plus: ^9.1.1
dio: ^5.4.0
@@ -64,7 +64,7 @@ dependencies:
google_nav_bar: ^5.0.5 #supported
gradient_borders: ^1.0.0
http: ^1.1.0
intl: ^0.18.0
intl: ^0.19.0
json_annotation: ^4.5.0
local_auth: ^2.2.0
local_auth_android: ^1.0.37
@@ -92,8 +92,8 @@ dependencies:
url: https://github.com/tekartik/sqflite
path: sqflite
sqflite_common_ffi: ^2.3.0+4
sqlite3: ^2.1.0
sqlite3_flutter_libs: ^0.5.19+1
sqlite3: ^2.4.3
sqlite3_flutter_libs: ^0.5.24
steam_totp: ^0.0.1
step_progress_indicator: ^1.0.2
styled_text: ^8.1.0
@@ -102,13 +102,13 @@ dependencies:
url_launcher: ^6.1.5
uuid: ^4.2.2
win32: ^5.1.1
window_manager: ^0.3.8
window_manager: ^0.3.9
dependency_overrides:
flutter_secure_storage_linux:
git:
url: https://github.com/prateekmedia/flutter_secure_storage.git
ref: patch-1
url: https://github.com/mogol/flutter_secure_storage.git
ref: develop
path: flutter_secure_storage_linux
dev_dependencies:
build_runner: ^2.1.11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

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

View File

@@ -5,6 +5,8 @@
endpoint:
api: "http://localhost:8080"
# Endpoint for the account service for passkey
accounts: "http://localhost:3001"
log:
http: false # log status code & time taken by requests

View File

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

View File

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

View File

@@ -161,3 +161,22 @@ func (c *Client) VerifyTotp(
}
return &res, nil
}
func (c *Client) CheckPasskeyStatus(ctx context.Context,
sessionID string) (*AuthorizationResponse, error) {
var res AuthorizationResponse
r, err := c.restClient.R().
SetContext(ctx).
SetResult(&res).
Get("/users/two-factor/passkeys/get-token?sessionID=" + sessionID)
if err != nil {
return nil, err
}
if r.IsError() {
return nil, &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return &res, nil
}

View File

@@ -37,6 +37,7 @@ type AuthorizationResponse struct {
EncryptedToken string `json:"encryptedToken,omitempty"`
Token string `json:"token,omitempty"`
TwoFactorSessionID string `json:"twoFactorSessionID"`
PassKeySessionID string `json:"passkeySessionID"`
// SrpM2 is sent only if the user is logging via SRP
// SrpM2 is the SRP M2 value aka the proof that the server has the verifier
SrpM2 *string `json:"srpM2,omitempty"`
@@ -45,3 +46,7 @@ type AuthorizationResponse struct {
func (a *AuthorizationResponse) IsMFARequired() bool {
return a.TwoFactorSessionID != ""
}
func (a *AuthorizationResponse) IsPasskeyRequired() bool {
return a.PassKeySessionID != ""
}

View File

@@ -38,6 +38,17 @@ func GetUserInput(label string) (string, error) {
return input, nil
}
func WaitForEnter(prompt string) error {
fmt.Println(prompt)
// Create a new reader from standard input.
reader := bufio.NewReader(os.Stdin)
_, err := reader.ReadString('\n')
if err != nil {
return err
}
return nil
}
func GetAppType() api.App {
for {
app, err := GetUserInput("Enter app type (default: photos)")

View File

@@ -15,7 +15,7 @@ import (
"strings"
)
var AppVersion = "0.1.14"
var AppVersion = "0.1.16"
func main() {
cliDBPath, err := GetCLIConfigPath()
@@ -23,7 +23,7 @@ func main() {
cliDBPath = constants.CliDataPath
_, err := internal.ValidateDirForWrite(cliDBPath)
if err != nil {
log.Fatalf("Please mount a volume to %s to persist cli data\n%v\n", cliDBPath, err)
log.Fatalf("Please mount a volume to %s\n%v\n", cliDBPath, err)
}
}
if err != nil {
@@ -75,6 +75,10 @@ func main() {
}
return
}
if len(os.Args) == 1 {
// If no arguments are passed, show help
os.Args = append(os.Args, "help")
}
cmd.Execute(&ctrl, AppVersion)
}
@@ -85,6 +89,7 @@ func initConfig(cliConfigPath string) {
viper.AddConfigPath(".") // optionally look for config in the working directory
viper.SetDefault("endpoint.api", constants.EnteApiUrl)
viper.SetDefault("endpoint.accounts", constants.EnteAccountUrl)
viper.SetDefault("log.http", false)
if err := viper.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); ok {

View File

@@ -58,6 +58,10 @@ func (c *ClICtrl) AddAccount(cxt context.Context) {
if authResponse.IsMFARequired() {
authResponse, flowErr = c.validateTOTP(cxt, authResponse)
}
if authResponse.IsPasskeyRequired() {
authResponse, flowErr = c.verifyPassKey(cxt, authResponse)
}
if authResponse.EncryptedToken == "" || authResponse.KeyAttributes == nil {
log.Fatalf("missing key attributes or token.\nNote: Please use the mobile,web or desktop app to create a new account.\nIf you are trying to login to an existing account, report a bug.")
}

View File

@@ -7,7 +7,9 @@ import (
"github.com/ente-io/cli/internal/api"
eCrypto "github.com/ente-io/cli/internal/crypto"
"github.com/ente-io/cli/pkg/model"
"github.com/ente-io/cli/utils/browser"
"github.com/ente-io/cli/utils/encoding"
"github.com/spf13/viper"
"log"
"github.com/kong/go-srp"
@@ -139,6 +141,31 @@ func (c *ClICtrl) validateTOTP(ctx context.Context, authResp *api.AuthorizationR
}
}
func (c *ClICtrl) verifyPassKey(ctx context.Context, authResp *api.AuthorizationResponse) (*api.AuthorizationResponse, error) {
if !authResp.IsPasskeyRequired() {
return authResp, nil
}
baseAccountUrl := viper.GetString("endpoint.accounts")
passkeyAuthUrl := fmt.Sprintf("%s/passkeys/verify?passkeySessionID=%s&redirect=ente-cli://passkey&clientPackage=io.ente.photos", baseAccountUrl, authResp.PassKeySessionID)
fmt.Printf("Open this url in browser to verify passkey: %s\n", passkeyAuthUrl)
err := browser.OpenURL(passkeyAuthUrl)
if err != nil {
fmt.Printf("Failed to open browser: %v\n", err)
}
for {
err = internal.WaitForEnter("Press enter once you have completed the passkey verification")
if err != nil {
return nil, err
}
totpResp, err := c.Client.CheckPasskeyStatus(ctx, authResp.PassKeySessionID)
if err != nil {
log.Printf("failed to verify %v", err)
continue
}
return totpResp, nil
}
}
func (c *ClICtrl) validateEmail(ctx context.Context, email string) (*api.AuthorizationResponse, error) {
err := c.Client.SendEmailOTP(ctx, email)
if err != nil {

View File

@@ -0,0 +1,48 @@
package browser
import (
"os/exec"
"runtime"
"strings"
)
// https://stackoverflow.com/questions/39320371/how-start-web-server-to-open-page-in-browser-in-golang
// openURL opens the specified URL in the default browser of the user.
func OpenURL(url string) error {
var cmd string
var args []string
switch runtime.GOOS {
case "windows":
cmd = "cmd"
args = []string{"/c", "start"}
case "darwin":
cmd = "open"
args = []string{url}
default: // "linux", "freebsd", "openbsd", "netbsd"
// Check if running under WSL
if isWSL() {
// Use 'cmd.exe /c start' to open the URL in the default Windows browser
cmd = "cmd.exe"
args = []string{"/c", "start", url}
} else {
// Use xdg-open on native Linux environments
cmd = "xdg-open"
args = []string{url}
}
}
if len(args) > 1 {
// args[0] is used for 'start' command argument, to prevent issues with URLs starting with a quote
args = append(args[:1], append([]string{""}, args[1:]...)...)
}
return exec.Command(cmd, args...).Start()
}
// isWSL checks if the Go program is running inside Windows Subsystem for Linux
func isWSL() bool {
releaseData, err := exec.Command("uname", "-r").Output()
if err != nil {
return false
}
return strings.Contains(strings.ToLower(string(releaseData)), "microsoft")
}

View File

@@ -1,4 +1,6 @@
package constants
const CliDataPath = "/cli-data/"
const EnteApiUrl = "https://api.ente.io"
const EnteAccountUrl = "https://account.ente.io"

View File

@@ -1,6 +1,6 @@
name: "Release"
# Build the ente-io/ente's desktop/rc branch and create/update a draft release.
# Build the desktop app with code from ente-io/ente and create/update a release.
#
# For more details, see `docs/release.md` in ente-io/ente.
@@ -17,9 +17,10 @@ on:
#
- cron: "45 2 * * 1-6"
push:
# Run when a tag matching the pattern "v*"" is pushed.
# Run when a tag matching the pattern "vd.d.d"" is pushed. Crucially for
# us, this excludes the "-rc" tags.
tags:
- "v*"
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
release:

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