Compare commits

...

961 Commits

Author SHA1 Message Date
Neeraj Gupta
7242176243 [mob] Bump version code 2025-03-06 15:46:52 +05:30
Ashil
fcc249b989 [mob][photos] Properly handle and log error/exception thrown in isolate (#5234) 2025-03-06 15:24:54 +05:30
ashilkn
ff82245293 [mob][photos] Rethrow 2025-03-06 15:08:59 +05:30
Vishnu Mohandas
4bd08f02f8 [docs] Update passkeys.md 2025-03-06 15:08:06 +05:30
Vishnu Mohandas
9650d3865a [docs] Update (#5237) 2025-03-06 12:40:04 +05:30
vishnukvmd
a4f64a73cb [docs] Update 2025-03-06 12:39:24 +05:30
Ashil
16baa84cf0 [mob][photos] Bump up build number (#5236) 2025-03-06 12:35:38 +05:30
ashilkn
db7f669198 [mob][photos] Bump up build number 2025-03-06 12:04:25 +05:30
ashilkn
5ec52541bf [mob][photos] Pass back any exceptions/errors back to main isolate when thrown from a different isolate when using _getLocalIDsAndFilesFromAssets + catch and log in the main isolate so that its reported on sentry 2025-03-06 01:13:49 +05:30
Manav Rathi
c7326c2efc [web] PhotoSwipe Update - WIP (#5233)
Nearing completion, perhaps the second last WIP PR in this series.
2025-03-05 20:08:56 +05:30
Ashil
904c93cf4e [mob][photos] Fix free up space bug (#5231)
## Description

If free up space fails, now we retry after removing `localIDs` that have
no asset returned by Photo Manager. If it still fails, we re-try after
running
[this](https://github.com/fluttercandies/flutter_photo_manager?tab=readme-ov-file#remove-all-non-exist-entities).

Note: It's not clear if this fixes received bug reports since we haven't
been able to reproduce
[deleteWithIds](https://github.com/fluttercandies/flutter_photo_manager?tab=readme-ov-file#delete-entities)
failing on using the Free up space feature.
2025-03-05 20:04:25 +05:30
Manav Rathi
d98394272e Fix formatting lints 2025-03-05 20:03:10 +05:30
Manav Rathi
1eed87e117 Revert "Temporary workbench"
This reverts commit 8ac9751891.
2025-03-05 20:00:29 +05:30
Manav Rathi
22cd3763b7 delegate 2025-03-05 19:59:03 +05:30
Manav Rathi
a18db13899 simpl 2025-03-05 19:25:42 +05:30
Manav Rathi
89d6ddf2c6 backdrop 2025-03-05 19:05:58 +05:30
Manav Rathi
aff27e662a More 2025-03-05 19:02:38 +05:30
Prateek Sunal
cc569eb192 chore: bump build number 2025-03-05 18:45:33 +05:30
ashilkn
8e1d931c1f [mob][photos] Extract string 2025-03-05 18:06:24 +05:30
ashilkn
abe313fff2 [mob][photos] Use better name 2025-03-05 18:03:06 +05:30
Neeraj
20095620c8 [mob][fix] share & description in android (#5229) 2025-03-05 17:57:01 +05:30
ashilkn
ec90db7b7d [mob][photos] Fix merge conflict and merge main 2025-03-05 17:48:15 +05:30
ashilkn
bb781e257e [mob][photos] More logging 2025-03-05 17:41:17 +05:30
Prateek Sunal
8902b99ae7 fix: add buffering indicator for media kit player 2025-03-05 17:31:36 +05:30
ashilkn
d5c9eea40f [mob][photos] Try checking for and handling already deleted local IDs during free up space only if freeing up space without it fails
This is to make free up space faster in most cases
2025-03-05 17:05:32 +05:30
Manav Rathi
4a8b130738 sc4 2025-03-05 16:22:25 +05:30
Manav Rathi
ed76b41392 sc3 2025-03-05 15:17:26 +05:30
Manav Rathi
270158dadc sc 2 2025-03-05 15:04:08 +05:30
Manav Rathi
5ea4f8b897 shortcut 1 2025-03-05 14:47:29 +05:30
Manav Rathi
e12a9aa800 fs 2 2025-03-05 14:08:10 +05:30
Manav Rathi
b4a853acc5 fs 1
Refs
 * https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API
 * https://mdn.github.io/dom-examples/fullscreen-api/index.html
2025-03-05 13:51:36 +05:30
Prateek Sunal
6c748f6c87 chore: bump locks 2025-03-05 13:36:37 +05:30
Prateek Sunal
f36666bd0a fix: show video description in previews for android 2025-03-05 13:36:22 +05:30
Manav Rathi
fb8f7901b1 Impl + shift top bar 2025-03-05 13:35:09 +05:30
Prateek Sunal
32ceac423b fix: share in android 2025-03-05 13:19:04 +05:30
Neeraj
7bbd432294 [mob] Refactor utils (#5228)
## Description

## Tests
2025-03-05 12:59:44 +05:30
Neeraj Gupta
72ba881e26 [mob] Remove assert 2025-03-05 12:36:25 +05:30
Neeraj Gupta
1c8860d08e Merge remote-tracking branch 'origin/main' into move_refactor 2025-03-05 12:28:44 +05:30
Manav Rathi
731c19d6a9 Notes of what needs to be done 2025-03-05 12:13:39 +05:30
Neeraj Gupta
3ac937a244 move 2025-03-05 12:00:02 +05:30
ashilkn
74ff170672 [mob][photos] Fix merge conflicts and merge main 2025-03-05 11:49:06 +05:30
Manav Rathi
1897285380 Don't show delete in shared
This functionality has not yet been implemented
2025-03-05 11:46:30 +05:30
Manav Rathi
7d8683640b vid 1 2025-03-05 11:19:12 +05:30
Manav Rathi
81e3593b74 PNG 2025-03-05 11:03:52 +05:30
Manav Rathi
21f87b7cba Different tack 2025-03-05 10:45:34 +05:30
Neeraj
5e4862cc3c [fix] steaming fixes (#5168)
## Description

- Update queuing logic
- Use native_video_player + exoplayer branch to fix artifacts for
android
- Support newer namespace and sdk 35
- Store failures and don't retry them
- Modify how sync file data status is happening i.e. don't remote sync
everytime we need to update previewIds, instead update it locally
- Add bandwidth check before queuing
- Remove rotate metadata parameter


Now the player decision logic is:
- Android: Native video Player for both Stream and original source
- iOS: Media Kit for stream and Native Video Player for Original

The UseMediaKitEvent is still there in case of any error or if user long
presses on that button (android) for original source.

## Tests
2025-03-05 10:43:42 +05:30
Manav Rathi
879f28599c Copy 2 2025-03-05 10:07:40 +05:30
Manav Rathi
11413ee77b Move closer to source 2025-03-05 09:47:30 +05:30
Manav Rathi
bb6c2f1656 Tweak 2025-03-05 08:12:37 +05:30
Manav Rathi
1bc8c44b54 copy 1 2025-03-05 07:56:16 +05:30
Manav Rathi
8f8cdbb13f mh 2025-03-05 07:43:38 +05:30
Manav Rathi
f3a079e734 Prevent rerenders 2025-03-05 07:32:40 +05:30
Manav Rathi
c0b3b4b38e link 2025-03-05 07:25:27 +05:30
Manav Rathi
848ec03827 Route 2025-03-05 07:12:13 +05:30
Manav Rathi
642320b1d9 icons 2 2025-03-05 06:55:57 +05:30
Manav Rathi
6f8f997f93 icons 2025-03-05 06:55:57 +05:30
Manav Rathi
fd13c737aa Download in bar 2025-03-05 06:55:57 +05:30
Manav Rathi
7fc96285f1 route 2025-03-05 06:55:57 +05:30
Manav Rathi
76efe1290c menu 2025-03-05 06:55:57 +05:30
Manav Rathi
3d44700010 Position 2025-03-05 06:55:56 +05:30
Manav Rathi
2541febb53 Download 2025-03-05 06:55:56 +05:30
Manav Rathi
62222b0228 Fix height
356b885778/packages/mui-material/src/MenuItem/MenuItem.js (L147)
2025-03-05 06:55:56 +05:30
Manav Rathi
9072766169 Fix 2025-03-05 06:55:56 +05:30
Manav Rathi
12f5c1db87 Handle singleton album deletes 2025-03-05 06:55:56 +05:30
Manav Rathi
60d3cad540 Also for favs 2025-03-05 06:55:56 +05:30
Manav Rathi
8e9eb79f2b Slightly better 2025-03-05 06:55:56 +05:30
Manav Rathi
ca276ba1fe Fix rerenders on remote sync 2025-03-05 06:55:56 +05:30
Manav Rathi
349ef3263c Workaround 2025-03-05 06:55:56 +05:30
Manav Rathi
7c1dae7c77 Update color 2025-03-05 06:55:56 +05:30
Manav Rathi
4fe12c46aa hov 2025-03-05 06:55:56 +05:30
Manav Rathi
b363e3663f del 2 2025-03-05 06:55:56 +05:30
Manav Rathi
043d3324ca del 1 2025-03-05 06:55:56 +05:30
Manav Rathi
a9540307bf Menu 2 2025-03-05 06:55:56 +05:30
Manav Rathi
35b3dbe650 Menu 1 2025-03-05 06:55:56 +05:30
Manav Rathi
e376bf00e0 Use same opacity throughout 2025-03-05 06:55:56 +05:30
Manav Rathi
fd87d196ac Handle 2025-03-05 06:55:56 +05:30
Manav Rathi
bad8a9c9b8 Rename and pass file 2025-03-05 06:55:56 +05:30
Manav Rathi
9c5adfe7cb Reset cache 2025-03-05 06:55:56 +05:30
Manav Rathi
6676668c86 alt 2025-03-05 06:55:55 +05:30
Manav Rathi
ca24541ea5 Limit text field rows 2025-03-05 06:55:55 +05:30
Manav Rathi
0e32e60dbd Tweak 2025-03-05 06:55:55 +05:30
Manav Rathi
79ac17a742 Vids 2025-03-05 06:55:55 +05:30
Manav Rathi
2490b5ca4f caption fin 2025-03-05 06:55:55 +05:30
Manav Rathi
72aab3f53c cap 2 2025-03-05 06:55:55 +05:30
Manav Rathi
a9def0ccc1 cap 1 2025-03-05 06:55:55 +05:30
Manav Rathi
8ac9751891 Temporary workbench
This reverts commit 2859e02dac.
2025-03-05 06:55:55 +05:30
Vishnu Mohandas
e2dceef8a4 [mob][photos] fix: Allow uploads when link shared from collect photos section (#5225) 2025-03-04 20:04:00 +05:30
Aman Raj Singh Mourya
6083992bfd [mob][photos] fix: Allow uploads when link shared from collect photos 2025-03-04 19:31:45 +05:30
Prateek Sunal
9507c6f882 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-03-04 16:33:44 +05:30
Neeraj
e01a2b7d65 [mob] Remove PrimitiveWrapper & simplify FilesDB::insertMultiple (#5222)
## Description

## Tests
2025-03-04 16:27:18 +05:30
Prateek Sunal
5ef1a0d3f7 chore: bump version 2025-03-04 16:11:12 +05:30
Neeraj
9ba2010293 [mob][photos] Video memory (#5211)
## Description
This PR introduces a feature that takes a list of images as input and
generates a video output. Each image is displayed for 2 seconds before
transitioning to the next image with smooth animations (fade, slide,
etc.).
2025-03-04 15:59:03 +05:30
Prateek Sunal
ebab9fd1a0 fix: remove stop code as there is no memory leak now 2025-03-04 15:44:04 +05:30
Aman Raj Singh Mourya
017692d80f [mob][photos] fix: change title to (i) Video Memory to identify its a internal feature 2025-03-04 15:35:43 +05:30
Prateek Sunal
de2bd40401 chore: bump package and add docs to them 2025-03-04 15:35:38 +05:30
Neeraj
50a0af23aa [mob][photos] Home memories [internal] (#5223)
## Description

MVP of new memories, for internal user only.

## Tests

Tested in debug mode on my pixel phone.
2025-03-04 15:24:48 +05:30
laurenspriem
ba6b34be2a [mob][photos] Move models 2025-03-04 15:17:19 +05:30
Prateek Sunal
f41c12cde8 fix: keep r8 enabled 2025-03-04 15:15:41 +05:30
Prateek Sunal
7d9e2eccd6 fix: add info to update to latest verison whenever update is available 2025-03-04 15:13:26 +05:30
laurenspriem
8792167986 [mob][photos] Move clearCache 2025-03-04 15:12:46 +05:30
laurenspriem
dcf6d3a9e1 [mob][photos] Fix title bug 2025-03-04 15:04:31 +05:30
laurenspriem
d9691ac089 [mob][photos] Resolve merge conflixt properly 2025-03-04 15:03:48 +05:30
Prateek Sunal
610c1ffc9f fix: add conflict resolution algorithm as replace 2025-03-04 15:03:42 +05:30
Laurens Priem
35bdacdc56 Merge branch 'main' into home_memories 2025-03-04 14:50:17 +05:30
laurenspriem
2147e13af4 [mob][photos] Fix 2025-03-04 14:45:34 +05:30
Neeraj Gupta
0c722171be move 2025-03-04 14:39:37 +05:30
Prateek Sunal
1f18c65ff6 fix: add other information like objectId and objectSize to previewIds 2025-03-04 14:38:30 +05:30
Prateek Sunal
985d530aef fix: don't make failureFiles a late variable 2025-03-04 14:20:29 +05:30
Aman Raj Singh Mourya
23dc378888 [mob][photos] fix: feature flag 2025-03-04 14:09:39 +05:30
Neeraj Gupta
fd5501882b [mob] Move toast 2025-03-04 13:54:26 +05:30
laurenspriem
b922bacb78 [mob][photos] Move dot product inside MLComputer 2025-03-04 13:45:26 +05:30
Prateek Sunal
33cd46583e fix: only update init if called from correct function 2025-03-04 13:02:16 +05:30
Prateek Sunal
5a2be86524 fix: make uploadedFileID as the primary key 2025-03-04 12:57:30 +05:30
Prateek Sunal
62e55cfd96 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-03-04 12:35:32 +05:30
Prateek Sunal
4439d97f31 chore: add doc for appendPreview 2025-03-04 12:20:17 +05:30
laurenspriem
71b7589de3 [mob][photos] method to compare embeddings in MLComputer 2025-03-04 11:40:11 +05:30
Neeraj Gupta
e145da5a8b [mob] move 2025-03-04 11:36:23 +05:30
Neeraj Gupta
3f721abc4d [mob] Simplify batch insert for files 2025-03-04 11:30:13 +05:30
mangesh
7ce9cc7468 [server][self-hosting] clear instructions to tweak compose (#5221) 2025-03-04 11:09:27 +05:30
mngshm
038692ad06 fix KEY_ID & s3 bucket url 2025-03-04 11:07:58 +05:30
mngshm
2dc71143b7 update 2025-03-04 10:45:44 +05:30
mngshm
1eec079a85 update dummy pass in minio provision script 2025-03-04 10:39:33 +05:30
mngshm
1eddf1f75a fix 2025-03-03 19:55:20 +05:30
mngshm
0940b8b3be [server] Instructions to tweak compose 2025-03-03 19:53:59 +05:30
laurenspriem
e459da3908 [mob][photos] Fix 2025-03-03 18:25:03 +05:30
laurenspriem
809fe6ab2c [mob][photos] show internal in UI only 2025-03-03 18:12:09 +05:30
laurenspriem
7b5ed1deaa [mob][photos] Fix correct sort 2025-03-03 18:03:00 +05:30
laurenspriem
d3d5aa5a8b [mob][photos] Fix 2025-03-03 17:54:24 +05:30
Neeraj
5466d80da9 [mobile] New translations (#5213)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-03-03 17:37:40 +05:30
Neeraj
52aa997807 [mob] Refactor: reorganize code (#5220)
## Description

## Tests
2025-03-03 17:33:42 +05:30
Neeraj Gupta
73efdbbf4d move 2025-03-03 17:29:03 +05:30
Neeraj Gupta
be6ca79c2d move 2025-03-03 17:21:31 +05:30
Neeraj Gupta
f2550bb253 move constant 2025-03-03 17:04:45 +05:30
Neeraj Gupta
3bf715fd46 [mob] Move 2025-03-03 17:00:50 +05:30
laurenspriem
28c19b8916 [mob][photos] filler memories 2025-03-03 16:18:39 +05:30
Neeraj
b4b5f834f7 [mob] Remove UserRemoteFlagService & switch to flagService (#5219)
## Description

## Tests
2025-03-03 16:15:13 +05:30
Caboose
ee41052eda [auth] BingX & CoinSpot Icons (#5186)
Added BingX & CoinSpot .svg files as well as updated the .JSON file to
include them
2025-03-03 16:13:04 +05:30
Neeraj Gupta
8898ac7060 clean up 2025-03-03 16:10:34 +05:30
Neeraj Gupta
976634f8c7 [mob] Show verification banner after 3 days 2025-03-03 16:08:26 +05:30
Neeraj Gupta
137a5cd772 Switch to flagService for mlConsent 2025-03-03 14:58:54 +05:30
Manav Rathi
631257de3c [web] Match mobile's internal user spec (#5217) 2025-03-03 14:33:43 +05:30
Neeraj Gupta
f556950c07 Remove unused constant 2025-03-03 14:32:38 +05:30
Neeraj Gupta
f8e2714315 [mob] Use flagservice for map consent 2025-03-03 14:30:52 +05:30
Manav Rathi
4b5618e1f2 [web] Match mobile's internal user spec 2025-03-03 14:27:10 +05:30
Neeraj Gupta
e34b70a8f9 [mob] Stop special treatment for @ente.io as internal users 2025-03-03 14:05:36 +05:30
laurenspriem
025fc46022 [mob][photos] constant for day itself duration 2025-03-03 13:40:47 +05:30
Neeraj Gupta
bcf49763e6 [mob] Avoid multiple calls to fetch flags 2025-03-03 13:32:59 +05:30
Manav Rathi
99b84fe4e7 [infra] Import Grafana conf (#5215) 2025-03-03 12:44:36 +05:30
Manav Rathi
2d1e6312af [infra] Import Grafana conf 2025-03-03 12:05:47 +05:30
mangesh
0b110ecead [docs] details about replication for self hosters (#5206) 2025-03-03 11:03:52 +05:30
Neeraj
dad6da26fb [auth] New translations (#5214)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-03-03 10:52:19 +05:30
Crowdin Bot
1d01b913e1 New Crowdin translations by GitHub Action 2025-03-03 01:17:41 +00:00
Crowdin Bot
f37f1c3703 New Crowdin translations by GitHub Action 2025-03-03 01:05:17 +00:00
Aman Raj Singh Mourya
d49a90c616 [mob][photos] Show video memory option on file selection action 2025-03-02 23:55:23 +05:30
Aman Raj Singh Mourya
0bfb48bde4 [mob][photos] Implemented ffmpeg to create video memory 2025-03-02 23:54:41 +05:30
laurenspriem
751e19abae [mob][photos] Adjust trip time show 2025-03-01 19:02:11 +05:30
laurenspriem
36f90014a2 [mob][photos] People surface logic 2025-03-01 18:50:06 +05:30
mngshm
74051ad6bb Some more details about Replication 2025-03-01 18:40:03 +05:30
Vishnu Mohandas
c66adcb677 [mob] Fix grammar (#5202) 2025-03-01 12:30:49 +05:30
vishnukvmd
c7bc560d53 [mob] Fix grammar 2025-03-01 12:30:27 +05:30
Neeraj
c6ea0f1fd7 [mob] Move model & remove unused file (#5201)
## Description

## Tests
2025-03-01 10:55:51 +05:30
Neeraj Gupta
8516d8364c [mob] Remove unused file 2025-03-01 10:48:03 +05:30
Neeraj Gupta
5b88b2b563 [mob] Move model 2025-03-01 10:43:37 +05:30
Prateek Sunal
2a5ba8480c chore: bump build number 2025-02-28 21:44:14 +05:30
Prateek Sunal
19607d488f Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-28 21:43:57 +05:30
Prateek Sunal
fcbba19129 fix: remove rotate property, add scroll widget in failure or any dialog, seekbar smooth, player ux buttons same position, failure title for preview 2025-02-28 21:43:35 +05:30
Manav Rathi
f402fb3887 [web] PhotoSwipe update - WIP (#5200) 2025-02-28 19:57:51 +05:30
Manav Rathi
7355d99299 Simplify 2025-02-28 19:54:38 +05:30
Manav Rathi
b20de9ed83 Convert deprecated prop 2025-02-28 19:46:18 +05:30
Manav Rathi
2859e02dac Revert "Temporary workbench"
This reverts commit 8e08a0d71d.
2025-02-28 19:40:39 +05:30
Manav Rathi
80859d91b0 schedule update 2025-02-28 19:40:15 +05:30
Manav Rathi
acaf1939e7 edit 2025-02-28 19:23:36 +05:30
Manav Rathi
d7587d12ed vis 2025-02-28 19:04:30 +05:30
Manav Rathi
61779a6ca7 More aria
taken from the basic example in https://mui.com/material-ui/react-menu/
2025-02-28 18:53:34 +05:30
Manav Rathi
02a7024cdc id 2025-02-28 16:57:24 +05:30
Manav Rathi
9d61eaa04d :\ 2025-02-28 16:50:07 +05:30
Manav Rathi
a73e7af704 Don't initialize face DB in non-desktop builds 2025-02-28 16:44:32 +05:30
Manav Rathi
14bfaf97f3 Update deprecated 2025-02-28 16:35:06 +05:30
Manav Rathi
cae5b2ad4d Update deps to pick up new MUI
MenuListProps are (will eventually be) deprecated, but the alternative is only
in the latest release.
2025-02-28 16:32:48 +05:30
Manav Rathi
8050422313 Fix 2025-02-28 16:32:48 +05:30
Neeraj Gupta
4323ae9422 [mob] Move 2025-02-28 16:10:53 +05:30
Manav Rathi
d3cec93c03 type 2025-02-28 16:02:55 +05:30
Manav Rathi
5adac095a6 Anchor 2025-02-28 15:59:35 +05:30
Manav Rathi
dce95ad4f1 more 2025-02-28 15:49:00 +05:30
Manav Rathi
67dc1b77d4 Fix 2025-02-28 15:32:33 +05:30
Manav Rathi
de9cad09c4 sigh 2025-02-28 15:28:43 +05:30
Manav Rathi
df21d20dd0 Workable 2025-02-28 15:23:31 +05:30
laurenspriem
374979894a [mob][photos] Cache path 2025-02-28 15:08:49 +05:30
laurenspriem
49c0e32fff [mob][photos] Fix null issue 2025-02-28 14:46:12 +05:30
Manav Rathi
0f732c0b61 Impl 2025-02-28 14:37:30 +05:30
Prateek Sunal
11a42e7ee3 fix: remove ticks from seekbar & change video source correctly 2025-02-28 14:26:42 +05:30
Neeraj
398f39e2b0 [mob] Clean up deprecated invalidFileIDs (#5199)
## Description

## Tests
2025-02-28 14:25:58 +05:30
laurenspriem
09e65e8d00 [mob][photos] Remove singleton pattern 2025-02-28 14:24:04 +05:30
laurenspriem
103901bbd3 [mob][photos] Fix ordering 2025-02-28 14:15:40 +05:30
Neeraj Gupta
2cdd919c37 [mob] Clean up deprecated invalidFileIDs 2025-02-28 14:14:32 +05:30
Manav Rathi
c1a2f226ef Move 2025-02-28 14:13:34 +05:30
laurenspriem
8e8610beda [mob][photos] More robust caching and models 2025-02-28 14:11:33 +05:30
Manav Rathi
1605f71a54 Fill in 2025-02-28 14:11:32 +05:30
Neeraj
a11ba4d14f [mob] Clean up migration for livePhoto (#5198)
## Description

## Tests
2025-02-28 13:51:23 +05:30
Manav Rathi
eb7f0c0bed Fix extra invalidations 2025-02-28 13:48:53 +05:30
Manav Rathi
ffc1db7369 err 1 2025-02-28 13:35:45 +05:30
Manav Rathi
cea88b91d2 dis 2 2025-02-28 13:24:21 +05:30
Neeraj Gupta
d98fbd6dc5 [mob] Clean up 2025-02-28 13:13:16 +05:30
Manav Rathi
28d412a12b disabled 2025-02-28 13:09:21 +05:30
Neeraj Gupta
9d601a6b4e [mob] Clean up migration for livePhoto 2025-02-28 13:06:38 +05:30
Manav Rathi
b851a30c18 Change both in sync 2025-02-28 12:42:05 +05:30
Manav Rathi
ec11bc7092 Complete 2025-02-28 12:25:35 +05:30
Manav Rathi
093ba4895d d4 2025-02-28 12:22:22 +05:30
Manav Rathi
502507abf5 d3 2025-02-28 11:00:54 +05:30
Manav Rathi
15b49816cc d2 2025-02-28 09:58:46 +05:30
Manav Rathi
15a4e3cd98 wip delegate 2025-02-28 09:20:19 +05:30
Manav Rathi
067e44e10a st 2 2025-02-28 08:48:16 +05:30
Manav Rathi
67206b013b stable ident 2025-02-28 08:31:31 +05:30
Manav Rathi
df86904e6a fav 1 2025-02-28 08:26:10 +05:30
Manav Rathi
66f43a9c9a more 2 2025-02-28 08:08:56 +05:30
Manav Rathi
561b0ea71e more 2025-02-28 06:32:46 +05:30
Manav Rathi
2fbc26c9eb scale 2025-02-28 06:25:32 +05:30
Manav Rathi
b11636bfdf zoom left 2025-02-28 05:59:01 +05:30
Manav Rathi
8e08a0d71d Temporary workbench
Revert "Prep for merge"

This reverts commit e75165d01e.
2025-02-28 05:46:02 +05:30
Manav Rathi
f49fcd7984 [web] PhotoSwipe update - WIP (#5195) 2025-02-27 18:35:57 +05:30
Manav Rathi
e75165d01e Prep for merge
Revert "Temporary workbench"

This reverts commit 06b84e8067.
2025-02-27 18:28:56 +05:30
Manav Rathi
70abbeebc2 Fix hiding 2025-02-27 18:28:36 +05:30
Manav Rathi
215ed6d6c8 Fix toggle 2025-02-27 17:50:01 +05:30
Manav Rathi
e453f5bf36 icons 2025-02-27 17:34:11 +05:30
Manav Rathi
e87d596b4c fav 1 2025-02-27 17:12:07 +05:30
Prateek Sunal
e9633e48ab fix: separation is the key 2025-02-27 16:57:35 +05:30
Manav Rathi
0bfd355233 Save 2025-02-27 16:51:19 +05:30
Prateek Sunal
cf96c4dc44 chore: bump version 2025-02-27 16:30:24 +05:30
Manav Rathi
0803ef4da6 Btn 2025-02-27 16:07:23 +05:30
Prateek Sunal
daada5e1c8 fix: disable full r8 mode 2025-02-27 15:59:14 +05:30
Vishnu Mohandas
a7ea2859fa [docs] faq (#5161)
## Description

## How to reset my password if I lost it?
2025-02-27 15:54:26 +05:30
Vishnu Mohandas
8336589a22 docs-edit hiding (#5194)
## Description

Removed Hiding is currently only supported in the Ente mobile app, and
items hidden from the mobile app will not be visible in the web and
desktop app.
2025-02-27 15:53:59 +05:30
Jay
074a4d96a6 docs-edit hiding 2025-02-27 15:39:48 +05:30
Manav Rathi
e1d08899a5 Scaffold 2025-02-27 15:39:31 +05:30
Manav Rathi
5576f8379c Fix close animation 2025-02-27 15:31:03 +05:30
Prateek Sunal
42cb7902c6 chore: bump things 2025-02-27 14:51:21 +05:30
Prateek Sunal
11c7d5f0de fix: keep things light 2025-02-27 14:51:12 +05:30
Prateek Sunal
c36cee2ed1 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-27 14:17:42 +05:30
Prateek Sunal
65614adc1a fix: build it finally 2025-02-27 14:15:42 +05:30
Manav Rathi
b06b8a5794 Manage fi open/close 2025-02-27 13:12:57 +05:30
Manav Rathi
25935f6219 Remaining fi props 2025-02-27 13:07:47 +05:30
Manav Rathi
51effed5a3 Other props 2025-02-27 12:51:21 +05:30
laurenspriem
7cecf84841 [mob][photos] Time as parameter 2025-02-27 12:39:40 +05:30
Manav Rathi
d50391ea13 not async 2025-02-27 12:19:58 +05:30
Manav Rathi
9c6bfaa460 Undo the effects of contentDestroy 2025-02-27 12:15:37 +05:30
Manav Rathi
ee201ff24b use orig 2025-02-27 12:04:37 +05:30
laurenspriem
7e10c077d3 [mob][photos] Logging 2025-02-27 11:51:39 +05:30
laurenspriem
75800f41e4 [mob][photos] Try catch 2025-02-27 11:45:44 +05:30
laurenspriem
7d84ed3e8b [mob][photos] Rename 2025-02-27 11:40:44 +05:30
laurenspriem
d3acd79de6 [mob][photos] Simplify 2025-02-27 11:39:25 +05:30
laurenspriem
89afa9fbc7 [mob][photos] Separate cache model 2025-02-27 11:15:06 +05:30
Manav Rathi
7fc03a71e7 Fix npe 2025-02-27 11:12:04 +05:30
Manav Rathi
06b84e8067 Temporary workbench 2025-02-27 11:01:20 +05:30
Manav Rathi
2919590b05 [desktop] Improve export_status.json writes (#5193) 2025-02-27 09:28:23 +05:30
Manav Rathi
4e6e3e7abf [desktop] Improve export_status.json writes 2025-02-27 09:20:15 +05:30
ashilkn
9b2af45f16 [mob][photos] Bump up build number 2025-02-26 19:56:43 +05:30
Manav Rathi
8fb463028d [web] Del screen refactoring (#5189) 2025-02-26 19:49:30 +05:30
ashilkn
5307c1fda6 [mob][photos] Bump up build number 2025-02-26 19:48:49 +05:30
ashilkn
f96db9cfd3 Merge branch 'main' into fix_free_up_space_bug 2025-02-26 19:44:31 +05:30
ashilkn
afc8fbf7b2 [mob][photos] If free up space fails the first time, retry after removing non-existing assets (only for android) 2025-02-26 19:41:57 +05:30
Manav Rathi
833b564acc Promise 2025-02-26 18:53:10 +05:30
Manav Rathi
3013709540 Move 2025-02-26 18:49:20 +05:30
Manav Rathi
cba85799f0 del api 2025-02-26 18:48:02 +05:30
Manav Rathi
818fba9435 Prune 2025-02-26 18:40:47 +05:30
Manav Rathi
8ec75834e8 [web] Minor code improvements (towards removing yup) (#5187) 2025-02-26 17:17:00 +05:30
laurenspriem
e32b23409c [mob][photos] fallback on old memories 2025-02-26 17:14:16 +05:30
Manav Rathi
9103d73874 touched 2025-02-26 17:06:01 +05:30
Manav Rathi
504a8bdab6 Use newer 2025-02-26 17:02:26 +05:30
Manav Rathi
1be2286279 Move 2025-02-26 16:52:10 +05:30
Manav Rathi
059275a486 fetch 2025-02-26 16:42:57 +05:30
laurenspriem
c32974cf95 [mob][photos] Log old memories properly 2025-02-26 16:37:27 +05:30
Manav Rathi
5e583da6f0 unyup 2025-02-26 16:29:30 +05:30
Manav Rathi
bb613cd384 validate 2025-02-26 16:23:16 +05:30
Manav Rathi
359bbd2628 Unindent 2025-02-26 16:18:56 +05:30
Manav Rathi
fb869b7f44 [web] New translations (#5185)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-26 15:54:59 +05:30
Crowdin Bot
4455a3c793 New Crowdin translations by GitHub Action 2025-02-26 10:23:03 +00:00
Manav Rathi
d781adeba5 [web] Consolidated duplicated translation key (#5184) 2025-02-26 15:52:12 +05:30
Manav Rathi
e7d0977346 [web] Consolidated duplicated translation key 2025-02-26 15:48:11 +05:30
Manav Rathi
488ca1f6d9 [web] New translations (#5183)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-26 15:41:40 +05:30
Crowdin Bot
00939ff2b8 New Crowdin translations by GitHub Action 2025-02-26 10:10:18 +00:00
Manav Rathi
69488c2db6 [web] File info code cleanup (#5182) 2025-02-26 15:38:11 +05:30
Manav Rathi
c70fa4391c cap fin 2025-02-26 15:31:48 +05:30
Manav Rathi
26c4481658 cap2 2025-02-26 15:07:02 +05:30
Neeraj
f487565398 [server] Retry for size fetch & parallelize check (#5155)
## Description

## Tests
2025-02-26 15:06:45 +05:30
Manav Rathi
96b9743270 cap1 2025-02-26 14:59:31 +05:30
Neeraj Gupta
42d2136d32 Merge branch 'main' into sizeRetry 2025-02-26 14:54:56 +05:30
Neeraj
21247a892f [server] Read embeddings from different bucket & logging improvements (#5180)
## Description

## Tests
2025-02-26 14:50:28 +05:30
Manav Rathi
33e7ccb9ae Extract 2025-02-26 14:50:16 +05:30
Manav Rathi
a157273b42 Remove spurious error on saving edited file in desktop 2025-02-26 14:50:16 +05:30
Manav Rathi
d0f30a1198 Wider 2025-02-26 14:50:16 +05:30
Manav Rathi
d5987dd882 rework rename dialog 2025-02-26 14:50:16 +05:30
Manav Rathi
1bd44351d9 Unnest 2025-02-26 14:50:16 +05:30
Manav Rathi
930bd4ce2e Unwrap 2025-02-26 14:50:16 +05:30
Manav Rathi
3e527e3c41 Rearrange 2025-02-26 14:50:16 +05:30
Manav Rathi
847e647437 Inline 2025-02-26 14:50:16 +05:30
Manav Rathi
cd3bd1cdbb Move 2025-02-26 14:50:16 +05:30
Manav Rathi
82082e2cbf Move 2025-02-26 14:50:16 +05:30
Manav Rathi
7545047647 abstract 2025-02-26 14:50:16 +05:30
Manav Rathi
1c1fe7f1df Scope 2025-02-26 14:50:16 +05:30
Manav Rathi
cc2be30f53 Scope 2025-02-26 14:50:16 +05:30
Manav Rathi
9fc5483eb8 Shorten 2025-02-26 14:50:16 +05:30
Manav Rathi
3468bdea7b Fix 2025-02-26 14:50:16 +05:30
Manav Rathi
bc23f1dec9 R 2025-02-26 14:50:16 +05:30
Manav Rathi
9327cb114c rejig 2025-02-26 14:50:16 +05:30
Manav Rathi
2fee6e87f9 Use 2025-02-26 14:50:16 +05:30
Manav Rathi
052367cccb Move to base context 2025-02-26 14:50:16 +05:30
Manav Rathi
4afa486c19 R 2025-02-26 14:50:16 +05:30
Manav Rathi
4b03d1bd0c Prune 2025-02-26 14:50:16 +05:30
Manav Rathi
93108c45d8 photosd-next (#5181) 2025-02-26 14:46:43 +05:30
Manav Rathi
3b1ec81db8 photosd-next 2025-02-26 14:45:25 +05:30
Ashil
ebeeb189fd [mob][photos] Handle error + refactoring (#5172) 2025-02-26 14:33:25 +05:30
Neeraj Gupta
98ebf98d17 [server] Bump default worker for filedata replication 2025-02-26 14:32:17 +05:30
Neeraj Gupta
d494bb8d38 [server] doc 2025-02-26 14:25:45 +05:30
Neeraj Gupta
b688706935 [server] Enchance logging for metadata failure 2025-02-26 14:20:28 +05:30
Neeraj Gupta
d0ef4f234d [server] Prefer reading from b5 2025-02-26 14:04:28 +05:30
Manav Rathi
0fa664a4cb photosd-v1.7.10 (#5179) 2025-02-26 14:02:00 +05:30
Neeraj
c2833d11b0 [server] Panic instead of fatal err (#5178) 2025-02-26 14:00:17 +05:30
Manav Rathi
ec594acafc photosd-v1.7.10 2025-02-26 14:00:09 +05:30
Prateek Sunal
8ce9baf920 fix: stop then dispose for now 2025-02-26 13:59:03 +05:30
laurenspriem
1b1c5c0e7b [mob][photos] cleanup init 2025-02-26 13:20:07 +05:30
ashilkn
81124566f2 Merge branch 'main' into fix_free_up_space_bug 2025-02-26 00:36:42 +05:30
Vishnu Mohandas
0d42cc7b68 [server] Swallow file data fetch err (#5177)
## Description

## Tests
2025-02-25 22:46:00 +05:30
Neeraj Gupta
8fb5f44b62 [server] Swallow mldata fetch err 2025-02-25 22:44:05 +05:30
Vishnu Mohandas
908b0d9dc4 [server] Prefer b6 for read (#5176)
## Description

## Tests
2025-02-25 22:31:56 +05:30
Neeraj Gupta
c0086efdbc [server] Prefer b6 for read 2025-02-25 22:30:39 +05:30
Vishnu Mohandas
49101bfddb [server] Add missing bucketId (#5175)
## Description

## Tests
2025-02-25 22:12:00 +05:30
Neeraj Gupta
83b322770d [server] Add missing bucketId 2025-02-25 22:10:36 +05:30
Neeraj
72bcd8e450 [server] Wait for fileData put & fail fetch if more than 5 object fails (#5174)
## Description

## Tests
2025-02-25 21:41:45 +05:30
ashilkn
1e05c9d701 [mob][photos] Log stacktrace 2025-02-25 18:56:39 +05:30
laurenspriem
fdf4a3d336 [mob][photos] Unify all caching in cache service only 2025-02-25 17:15:45 +05:30
ashilkn
e61d212ad0 [mob][photos] Handle errors/exceptions in getThumbnailFileOfPerson 2025-02-25 17:13:09 +05:30
Prateek Sunal
837d2bbf77 fix: failure previewed case and fire bus event 2025-02-25 17:06:11 +05:30
Prateek Sunal
f7f5e924aa fix: add new table for stream upload errors 2025-02-25 16:25:24 +05:30
Neeraj Gupta
1eed650812 [server] Return custom errors 2025-02-25 15:47:41 +05:30
Neeraj Gupta
b62f82c81e Minor fix 2025-02-25 15:42:00 +05:30
Andrés Ignacio Torres
7b6fe4a9d7 [auth] Add custom icons for No-IP, Prey Project, Workflowy + extra name for Nintendo Account (#5127)
## Description

Added three new custom icons:

- No-IP
- Prey Project
- Workflowy

Additionally add one more alternate name for the Nintendo custom icon:
Nintendo Account.

These are a few of the services I noticed had no icons after migrating
my 2FA codes to Ente.

## Tests

Icon change only, no code changes.
2025-02-25 15:41:10 +05:30
Neeraj
38d207d28e [mob] Check lock before reporting file & limit retry for network errors (#5171)
## Description
This should significantly reduce the instances of
- Duplicate file uploads
- File replacement instances
## Tests
2025-02-25 15:37:44 +05:30
Prateek Sunal
05cec775aa chore: bump version 2025-02-25 15:29:25 +05:30
Prateek Sunal
19073951c8 fix: shuffle deck 2025-02-25 15:29:12 +05:30
Prateek Sunal
0b56575939 fix: add more proguard rules 2025-02-25 15:27:36 +05:30
Prateek Sunal
e9c6ad39f7 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-25 15:05:28 +05:30
Prateek Sunal
655bbd36da chore: bump version code 2025-02-25 15:04:38 +05:30
Prateek Sunal
d1a5e94886 fix: aspect ratio resolution 2025-02-25 15:04:26 +05:30
Neeraj Gupta
840fc3c061 [mob] Check lock again before reporting file 2025-02-25 15:02:44 +05:30
laurenspriem
a5cb78bf95 [mob][photos] memories cache first iteration 2025-02-25 14:48:25 +05:30
Prateek Sunal
5659b93555 fix: add code to append preview 2025-02-25 14:48:24 +05:30
ashilkn
f772a48bc0 Merge branch 'main' into person_linking_improvements 2025-02-25 14:43:31 +05:30
Prateek Sunal
fc429d88c5 chore: add proguard rules 2025-02-25 14:43:31 +05:30
ashilkn
55015f4a62 Merge branch 'main' into person_linking_improvements 2025-02-25 13:37:42 +05:30
Neeraj Gupta
2ff97c29ff [mob] Limit retry to noStatusCode 2025-02-25 13:36:25 +05:30
Neeraj Gupta
1c94807c36 [mob] generated strings 2025-02-25 13:27:59 +05:30
Manav Rathi
e009151667 [web] Fix rendering of files without extension (#5170)
Fixes: https://github.com/ente-io/ente/issues/5125
2025-02-25 13:23:16 +05:30
Manav Rathi
4a03e34a20 [web] Fix rendering of files without extension
Fixes: https://github.com/ente-io/ente/issues/5125
2025-02-25 13:18:53 +05:30
Manav Rathi
6aa6b667e3 [web] Minor code reorg (#5169) 2025-02-25 12:57:46 +05:30
Prateek Sunal
99a579f7f3 fix: revert to some original code 2025-02-25 12:03:19 +05:30
Prateek Sunal
5c64a1a5e5 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-25 11:53:48 +05:30
Neeraj
3c902bc1c1 [mobile] New translations (#5007)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-02-25 11:53:26 +05:30
Neeraj
0fb8ccc029 [mob] Clean up (#5165)
## Description

## Tests
2025-02-25 11:53:13 +05:30
Crowdin Bot
ba000c2304 New Crowdin translations by GitHub Action 2025-02-25 06:21:48 +00:00
Prateek Sunal
d9f15dad45 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-25 11:42:03 +05:30
mangesh
07fac1a354 [server] don't allow setting storageLimit for INVITED users (#5167) 2025-02-25 11:27:41 +05:30
mngshm
3ae65e1de9 [server] don't allow setting storageLimit for INVITED users 2025-02-25 11:16:22 +05:30
Manav Rathi
62471dad3e Move 2025-02-25 10:58:30 +05:30
Neeraj Gupta
19ea1ad1f4 [mob] Clean up 2025-02-25 10:56:42 +05:30
Manav Rathi
2ece083d4d Rename 2025-02-25 10:49:12 +05:30
laurenspriem
53d71de31f [mob][photos] More central flag 2025-02-25 10:38:41 +05:30
Neeraj
3cf627a290 [server] Add index on file_data(user_id,updated_at) (#5164)
## Description

## Tests
2025-02-25 09:47:12 +05:30
Neeraj Gupta
792353bb9e [server] Add index on file_data(user_id,updated_at) 2025-02-25 09:34:26 +05:30
Manav Rathi
b0c17fee6d [web] Prevent extra submission of 2fa when a request is in progress (#5162) 2025-02-24 21:21:36 +05:30
Manav Rathi
4db25b1b8f Fix error handling 2025-02-24 20:58:37 +05:30
Manav Rathi
d0c93338fa await route changes 2025-02-24 20:48:02 +05:30
Manav Rathi
af89a2202c Cleanup 2025-02-24 20:47:22 +05:30
Manav Rathi
6208531902 Fix the double submit bug 2025-02-24 20:34:16 +05:30
Manav Rathi
47539e93f9 Simplify 2025-02-24 20:32:23 +05:30
Manav Rathi
15d77b7551 Use correct error 2025-02-24 20:25:22 +05:30
Manav Rathi
841de87a33 Combine 2025-02-24 20:23:04 +05:30
Manav Rathi
25ba019a57 Vis 2025-02-24 20:07:55 +05:30
Manav Rathi
1c8a796bec Reduce indent 2025-02-24 20:01:28 +05:30
Manav Rathi
277c7e452a Cleanup 2025-02-24 19:49:37 +05:30
Manav Rathi
9ab110c4c3 Vis 2025-02-24 19:39:29 +05:30
Manav Rathi
7420eb5a66 Vis 2025-02-24 19:35:36 +05:30
Manav Rathi
37775b9ee5 Conv 2025-02-24 19:29:14 +05:30
Manav Rathi
7d5205d57d Conv 2025-02-24 19:27:21 +05:30
Manav Rathi
16246d8d58 Conv 2025-02-24 19:24:37 +05:30
Manav Rathi
4442b3af28 Inline 2025-02-24 19:12:04 +05:30
mangesh
b67a33fcaf Create Tailscale.md (#5140)
ente photos with tailscale
2025-02-24 19:06:41 +05:30
Manav Rathi
989708cf58 Use 2025-02-24 19:05:11 +05:30
mngshm
425954257b add missing sidebar link 2025-02-24 19:04:52 +05:30
Manav Rathi
7725b14935 Conv 2025-02-24 18:50:26 +05:30
mngshm
58fe69638e Community 2025-02-24 18:49:15 +05:30
Manav Rathi
290ae40296 Conv 2025-02-24 18:42:22 +05:30
Manav Rathi
ebc310d742 z 2025-02-24 18:38:55 +05:30
Manav Rathi
28d04f7725 Inline 2025-02-24 18:36:06 +05:30
Jay
3c90b0dfca docs-faq 2025-02-24 17:21:05 +05:30
Manav Rathi
8de3619cf1 [desktop] Reattempt indexing if needed (#5160) 2025-02-24 17:20:09 +05:30
Manav Rathi
8036aae292 [desktop] Reattempt indexing if needed 2025-02-24 17:13:22 +05:30
Prateek Sunal
87555194fe chore: bump lock files 2025-02-24 16:43:33 +05:30
ashilkn
6c67f11cc0 Merge branch 'main' into person_linking_improvements 2025-02-24 16:37:14 +05:30
Neeraj Gupta
b9573c057e [server] Use cached result for canUpload 2025-02-24 16:34:57 +05:30
Vishnu Mohandas
490a7221e7 [docs] Update (#5157) 2025-02-24 16:20:50 +05:30
vishnukvmd
1b98f782f1 Update 2025-02-24 16:19:54 +05:30
Vishnu Mohandas
a46a64e386 [docs] Update (#5156) 2025-02-24 16:03:54 +05:30
vishnukvmd
492ea61bb7 Update 2025-02-24 16:03:28 +05:30
Neeraj Gupta
54d2813329 [server] Parallize size fetch for file & thumb 2025-02-24 15:59:11 +05:30
Prateek Sunal
7175e1d43a fix: don't show media kit button for preview 2025-02-24 15:47:15 +05:30
Prateek Sunal
8237229823 fix: loop behavior media kit 2025-02-24 15:46:13 +05:30
Prateek Sunal
a36958503d fix: smooth native video player experience 2025-02-24 15:34:25 +05:30
Neeraj Gupta
19efbad336 [server] Add retry for sizeOf fetch 2025-02-24 15:21:34 +05:30
Neeraj
9447f1c767 [server] Remove embeddings handler (#5154)
## Description

## Tests
2025-02-24 15:11:47 +05:30
Neeraj Gupta
76b2a73f9a clean up 2025-02-24 15:00:33 +05:30
Neeraj Gupta
4bbe1ae0d2 [server] Remove embeddings handler 2025-02-24 14:49:21 +05:30
Manav Rathi
b15b707600 [server] Limit support while fetching collections (#5148)
## Description
This endpoint let's us add limit which fetching collections.

## Tests
2025-02-24 14:18:44 +05:30
Neeraj
454363d772 [server] Minor refactor (#5152)
## Description
Moving few methods related to collection_files in diff file.
## Tests
2025-02-24 14:08:28 +05:30
Vishnu Mohandas
196fa2c8a4 [docs] Update (#5153)
## Description

## Tests
2025-02-24 14:05:34 +05:30
vishnukvmd
4c3ca8a565 Update 2025-02-24 14:05:02 +05:30
Neeraj Gupta
15aea42b96 [server] Minor refactor 2025-02-24 14:04:39 +05:30
Vishnu Mohandas
29c7f587f6 [docs] Update (#5151) 2025-02-24 13:55:36 +05:30
vishnukvmd
5f0bb21491 Update 2025-02-24 13:54:59 +05:30
Vishnu Mohandas
c882ce0f98 [docs] Update (#5149) 2025-02-24 13:07:25 +05:30
vishnukvmd
02dde7f6a2 Update 2025-02-24 13:07:04 +05:30
Neeraj Gupta
d268e1f309 Fix 2025-02-24 12:39:55 +05:30
Neeraj Gupta
245e78ac42 [server] Limit support while fetching collections 2025-02-24 12:29:20 +05:30
Neeraj
fa55bd88a2 [auth] New translations (#5144)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-02-24 11:13:56 +05:30
Neeraj
11538236c0 [auth] Upgrade dio (#5137)
## Description
Upgrade dio 5.4.0 -> 5.8.0+1
2025-02-24 11:12:56 +05:30
Manav Rathi
09996f77ea [web] [desktop] Enable Japanese translations (#5146) 2025-02-24 10:26:38 +05:30
Manav Rathi
3f512bc959 lf 2025-02-24 10:08:16 +05:30
Manav Rathi
8b0990bd6c [web] [desktop] Enable Japanese translations 2025-02-24 09:58:52 +05:30
Manav Rathi
70ff886252 [web] New translations (#5143)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-24 09:46:57 +05:30
Crowdin Bot
4314d42ab4 New Crowdin translations by GitHub Action 2025-02-24 01:17:26 +00:00
Crowdin Bot
8abe6957d7 New Crowdin translations by GitHub Action 2025-02-24 00:35:43 +00:00
frost
e0dd39dd95 Update Tailscale.md 2025-02-23 13:11:58 +05:00
Prateek Sunal
386554ac70 fix: don't check for preview if video streaming is disabled 2025-02-23 05:33:02 +05:30
Prateek Sunal
e99bc335d9 chore: bump deps 2025-02-23 05:32:46 +05:30
frost
48f6071f5c Create Tailscale.md
This is ente photos setup running with tailscale
2025-02-22 20:50:49 +05:00
Aman Raj Singh Mourya
d6ec6809c2 [auth] Use native dio adapter 2025-02-22 00:53:16 +05:30
Aman Raj Singh Mourya
8fe9b9571a [auth] Upgrade dio 2025-02-22 00:49:22 +05:30
Aman Raj Singh Mourya
d667cc4f98 [auth] Set cronetHttpNoPlay=true while building apk for droid 2025-02-22 00:48:53 +05:30
Aman Raj Singh Mourya
34a672fb7c [mob][photos] Initial setup for Video-memory 2025-02-21 23:10:27 +05:30
Prateek Sunal
8a5cc0c221 feat: push all changes 2025-02-21 20:55:52 +05:30
ashilkn
5e6860f2cd [mob][photos] Avoid localIDs of non-existant assets from being passed to photo_manager's deleteWithIds() when using free up space feature to avoid complete failure of free up space operation 2025-02-21 20:04:12 +05:30
Prateek Sunal
10e675a81c chore: bump pod file 2025-02-21 17:53:04 +05:30
Prateek Sunal
98b890aa99 Merge remote-tracking branch 'origin/main' into stream-queue-fix 2025-02-21 17:52:21 +05:30
Prateek Sunal
0d7f87381a chore: down version 2025-02-21 17:51:11 +05:30
Prateek Sunal
d50171bf7f fix: android sdk 35 2025-02-21 17:50:44 +05:30
Manav Rathi
5806eb6e60 [web] Update storage card when family member's storage limit is configured (#5135)
Sibling of https://github.com/ente-io/ente/pull/5123
2025-02-21 17:42:21 +05:30
Prateek Sunal
64712e5600 chore: bump version again 2025-02-21 17:37:35 +05:30
Prateek Sunal
8a615c34ef fix: for media kit android 2025-02-21 17:37:22 +05:30
Prateek Sunal
8b94304754 feat: add stream switched event 2025-02-21 17:30:00 +05:30
Manav Rathi
8830deb619 [web] Update storage card when family member's storage limit is configured
Sibling of https://github.com/ente-io/ente/pull/5123
2025-02-21 17:22:54 +05:30
laurenspriem
9da79dc99a [mob][photos] Don't show others in spotlight 2025-02-21 16:59:43 +05:30
Manav Rathi
5e32e975df [web] New translations (#5134)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-21 16:54:41 +05:30
Crowdin Bot
8633dabd92 New Crowdin translations by GitHub Action 2025-02-21 11:22:42 +00:00
Manav Rathi
c256f0a8c4 [web] Misc cleanup (#5133) 2025-02-21 16:52:01 +05:30
Manav Rathi
b150bbe15e Rename 2025-02-21 16:40:51 +05:30
Manav Rathi
7f69fa5d65 Reorder 2025-02-21 16:36:50 +05:30
Manav Rathi
3968dd93e9 R 2025-02-21 16:34:09 +05:30
Manav Rathi
557bdd142b R 2025-02-21 16:32:29 +05:30
Manav Rathi
b89da99c96 Rename 2025-02-21 16:29:54 +05:30
Manav Rathi
e79050a3b6 ann2 2025-02-21 16:28:42 +05:30
Manav Rathi
5e4707b695 ann 2025-02-21 16:28:42 +05:30
Manav Rathi
fd0c2866a2 Doc 2025-02-21 16:28:42 +05:30
Manav Rathi
69eee661d1 Prop 2025-02-21 16:28:42 +05:30
Prateek Sunal
b09e911f18 fix: bump native video player 2025-02-21 16:25:52 +05:30
Manav Rathi
c78578fce5 [web] Speed up file selection for libraries with 100k+ files (#5132)
(Drastically!)
2025-02-21 16:15:51 +05:30
Manav Rathi
a0f103be9b Fix 2025-02-21 16:05:15 +05:30
Manav Rathi
04ede4326a Cleanup scaffolding 2025-02-21 15:59:57 +05:30
Manav Rathi
7cb9bc3eb7 Reduce some duplication 2025-02-21 15:53:29 +05:30
Manav Rathi
488402156f take 1 2025-02-21 15:45:46 +05:30
Manav Rathi
e80e602786 bespoke 1 2025-02-21 15:38:59 +05:30
laurenspriem
78a7ae7c5f [mob][photos] photo selection of people memories 2025-02-21 15:28:52 +05:30
Manav Rathi
5d553afea7 Rearrange 2025-02-21 15:28:29 +05:30
Neeraj
9a25356abf [mob] Update storage card when family member's storage limit is configured (#5123)
## Description

## Tests
2025-02-21 15:15:35 +05:30
Neeraj Gupta
5625733429 Merge remote-tracking branch 'origin/main' into family_limits 2025-02-21 14:59:18 +05:30
Prateek Sunal
61bb3ce16b fix: is preview player setting 2025-02-21 14:55:50 +05:30
Manav Rathi
d2dd08391a Investigate speeding up the checkbox action too 2025-02-21 14:47:37 +05:30
Neeraj Gupta
9d06db2b6b [mob] Fix free storage calculation for mob upload 2025-02-21 14:44:50 +05:30
Neeraj Gupta
80049b11ba [mob] Handle null result 2025-02-21 14:42:59 +05:30
Manav Rathi
28160b04b9 Clean 2025-02-21 14:22:47 +05:30
Manav Rathi
02441239d5 fast 4 2025-02-21 14:11:11 +05:30
Prateek Sunal
2688ca446e chore: bump version 2025-02-21 14:09:53 +05:30
Prateek Sunal
80e86f6f65 fix: update queuing logic 2025-02-21 14:08:48 +05:30
Manav Rathi
760b50b417 fast 3 2025-02-21 14:08:20 +05:30
Manav Rathi
d118e0e63e fast 1 2025-02-21 14:07:07 +05:30
Manav Rathi
49f9caac90 wip speed up 2025-02-21 14:05:38 +05:30
Prateek Sunal
ea875730dd [mob] streaming patches (#5122)
## Description

Quality of Life fixes:
- [x] Queue fixes
- [x] Android Impeller fix
- [x] No video_player_media_kit proxy, just using media_kit directory

Quality of Dev fixes:
- [x] Use master branch of media_kit
- [x] extract common functions from native player and media kit for
seconds to duration.
2025-02-21 13:34:01 +05:30
Neeraj
e3b03db06f [server] Clean up old logic for collection diff (#5130)
## Description
We still have some traffic from old mobile client v0.7.xx that is making
call to the v1 endpoint.
## Tests
2025-02-21 13:25:14 +05:30
Neeraj Gupta
b030c4e182 [server] Clean up old logic for collection diff 2025-02-21 13:22:45 +05:30
Manav Rathi
1a39846d25 Swap 2025-02-21 13:05:16 +05:30
Manav Rathi
e44020f93a Swap 2025-02-21 13:02:58 +05:30
Neeraj
435621496c [server] Move refactor (#5129)
## Description
Just grouping various actions inside different file to improve
readability
## Tests
2025-02-21 12:52:18 +05:30
Manav Rathi
8379162716 Fix 2025-02-21 12:51:21 +05:30
Manav Rathi
e8d9f4f6cf Conv 2025-02-21 12:45:12 +05:30
laurenspriem
bfe39be07e [mob][photos] Update clip query 2025-02-21 12:43:44 +05:30
Manav Rathi
6724527c27 Another 2025-02-21 12:35:11 +05:30
Neeraj Gupta
6b65a974b5 [server] Refactor 2025-02-21 12:28:11 +05:30
Manav Rathi
1b90fa93ee Use 2025-02-21 12:20:12 +05:30
Neeraj Gupta
f907303c8b [server] move files 2025-02-21 12:08:16 +05:30
Manav Rathi
4317f819d8 mod 2025-02-21 12:07:31 +05:30
Manav Rathi
587da41f53 Dup 2025-02-21 11:56:23 +05:30
Manav Rathi
3214031a0c Reuse 2025-02-21 11:56:23 +05:30
Manav Rathi
0b1eee6c8e select all by date is the culprit
for 100k
t0: 291.615234375 ms
t1: 4.695068359375 ms
t2: 5.75 ms
t3: 5.9921875 ms
t4: 0.014892578125 ms
t5: 0.794921875 ms
t6: 0.0029296875 ms
2025-02-21 10:54:25 +05:30
Neeraj
7c679cd38b [auth] Add Custom Icons (ButterflyMX / FreeTaxUSA) (#5116)
## Description
New Icons: ButterFlyMX / FreeTaxUSA
2025-02-21 09:13:03 +05:30
Francis Geronimo
3669b6be09 Rename Butterflymx.svg to butterflymx.svg 2025-02-20 09:45:01 -07:00
Manav Rathi
88b0ecf472 [web] Trim the gallery context (#5124)
Code restructuring, no functional changes
2025-02-20 19:04:46 +05:30
Manav Rathi
ee2f03adca Fix 2025-02-20 18:56:48 +05:30
Manav Rathi
3e6c253a24 Uncontext 2025-02-20 18:45:17 +05:30
ashilkn
708b17cef3 [mob][photos] Resolve merge conflicts and merge main 2025-02-20 18:35:40 +05:30
Manav Rathi
776b7488d3 Fin 2025-02-20 18:27:03 +05:30
Manav Rathi
371377d4d1 R 2025-02-20 18:16:26 +05:30
Manav Rathi
aad42b3c00 del 2 2025-02-20 18:10:00 +05:30
Manav Rathi
9ce0b43bfe del 1 2025-02-20 18:05:19 +05:30
Manav Rathi
f5ea565aa8 Combine visually single section 2025-02-20 17:57:25 +05:30
Manav Rathi
d41e177b3c ex 2025-02-20 17:53:00 +05:30
Manav Rathi
bc742f20e1 Use 3 2025-02-20 17:42:00 +05:30
Neeraj Gupta
898658f0ef [mob] Show memberLimit and usage when familyMember limit is set 2025-02-20 17:39:21 +05:30
ashilkn
1746db0d44 [mob][photos] Gracefully handle no avatar of recent file for face in UI where every getThumbnailFileOfPerson is used 2025-02-20 17:38:37 +05:30
Prateek Sunal
7743a4af98 chore: move date related utils to date_time_util.dart 2025-02-20 17:35:07 +05:30
Prateek Sunal
d2764fe7e1 chore: delete redundant files 2025-02-20 17:33:13 +05:30
Manav Rathi
35601956d2 Use 2025-02-20 17:30:28 +05:30
ashilkn
af676e6107 [mob][photos] Refactor 2025-02-20 17:20:41 +05:30
Manav Rathi
bc699b8f37 sys 2025-02-20 17:16:39 +05:30
ashilkn
11c75dc5c8 [mob][photos] Log info 2025-02-20 16:58:27 +05:30
Prateek Sunal
82df23a3b2 fix: bump build number 2025-02-20 15:24:09 +05:30
Prateek Sunal
00028e3a10 fix: queue addition logic 2025-02-20 15:23:53 +05:30
Prateek Sunal
c5dab37dfa feat: use media kit directly for preview, instead of video_player proxy 2025-02-20 15:23:31 +05:30
Neeraj
d20615002c [sever] Minor fixes in modify-storage endpoint (#5121)
## Description

## Tests
2025-02-20 14:39:05 +05:30
Neeraj Gupta
b44f844513 [server] Remove null resp 2025-02-20 14:27:18 +05:30
Neeraj Gupta
09d390bd38 [server] Return on err 2025-02-20 14:26:10 +05:30
Manav Rathi
e439e4a5f7 [web] Show an activity indicator when the user is selecting files/folders/drag-drop (#5119)
When selecting 100k+ files, the browser doesn't get back to us for
seconds, so let the user know something's happening.

> During this I found that the dd library is also doing some synchronous
processing of its own the further delays the callback, but there is
still a base delay anyways even when directly using the HTML inputs
elements.
2025-02-20 14:20:43 +05:30
Manav Rathi
3147800486 Fin 2025-02-20 14:11:40 +05:30
Natoshi
0a7984a0d2 [auth] Add Gate.io icon (#5107)
Add new icon to ente auth (gateio.svg)
and Add Gate.io icon to custom-icons.json
2025-02-20 14:01:21 +05:30
Manav Rathi
189a3ebc40 Take 1 2025-02-20 13:58:29 +05:30
Prateek Sunal
c37deecb96 chore: extract out some functions 2025-02-20 13:55:37 +05:30
Prateek Sunal
d2a4634f02 fix: callbacks 2025-02-20 13:55:22 +05:30
Manav Rathi
c0eeb7dd2f Maybe 2025-02-20 13:53:43 +05:30
Manav Rathi
4f271887fc dd 2025-02-20 13:50:42 +05:30
Manav Rathi
f46f063beb Disable backdrop clicks 2025-02-20 13:17:04 +05:30
Prateek Sunal
2275a47438 chore: bump deps changes 2025-02-20 13:14:47 +05:30
Prateek Sunal
80ab0a308f chore: bump locks 2025-02-20 13:14:32 +05:30
Prateek Sunal
ddb867d21f fix: correct sources 2025-02-20 13:14:21 +05:30
Prateek Sunal
c63cf362b6 Merge remote-tracking branch 'origin/main' into streaming-patched 2025-02-20 13:12:57 +05:30
Manav Rathi
270a628478 Use 2025-02-20 13:09:53 +05:30
Prateek Sunal
3f358b9511 fix: run preview creation after sync fd status 2025-02-20 13:08:56 +05:30
Manav Rathi
b5f850b3be Activity indicator 2025-02-20 13:06:37 +05:30
Manav Rathi
77d16e275d Also mark selection 2025-02-20 12:46:54 +05:30
Neeraj
098a4526ad [mob] Share only image for live photos (#5118)
## Description

## Tests
2025-02-20 12:08:49 +05:30
Manav Rathi
957c333cf3 Use the same enum throughout 2025-02-20 12:08:44 +05:30
Neeraj Gupta
c480dd71f1 [mob] Parse family member storage limit 2025-02-20 12:06:22 +05:30
Neeraj Gupta
101a9d4b5d [mob] Share only image for live photos 2025-02-20 12:00:27 +05:30
Manav Rathi
e3ef1e4628 Move 2025-02-20 11:51:53 +05:30
Manav Rathi
fd133d4023 Attach cancel callback 2025-02-20 11:42:30 +05:30
Neeraj
cdfdc83083 [mob] streaming feedbacks resolved (#5112)
## Description

This PR deals with following:

- [x] Android Artifacts fixes
- [x] Queuing Fixes
- [x] Document functions better
- [x] Make UX similar to native video player
- [x] Check for seekbar changes


## Tests
2025-02-20 11:36:39 +05:30
laurenspriem
512cf3b395 [mob][photos] More activities 2025-02-20 11:26:32 +05:30
Manav Rathi
8618babc11 Attempt to intercept cancellation 2025-02-20 11:20:54 +05:30
laurenspriem
87f2957e19 [mob][photos] Lower threshold 2025-02-20 11:20:12 +05:30
laurenspriem
f4d73e683c [mob][photos] Fix lastTimeWith 2025-02-20 11:14:43 +05:30
laurenspriem
cac846f0e2 [mob][photos] Change surfacing order 2025-02-20 11:12:56 +05:30
Manav Rathi
ca28a3c595 Also 2025-02-20 11:05:57 +05:30
Manav Rathi
5eba06a269 Sublimate 2025-02-20 11:02:12 +05:30
Manav Rathi
91017969b3 Transplant 2025-02-20 10:49:42 +05:30
laurenspriem
58c10ad204 [mob][photos] Increase activity threshold 2025-02-20 10:31:28 +05:30
laurenspriem
321d3d6031 [mob][photos] Small fix 2025-02-20 10:24:32 +05:30
laurenspriem
41e5cf03e4 [mob][photos] Increase activity threshold 2025-02-20 10:08:55 +05:30
laurenspriem
22b91a164b [mob][photos] Sign that smart memories are for internal users only 2025-02-20 10:08:33 +05:30
laurenspriem
4e6b86118f [mob][photos] Comment 2025-02-20 09:14:54 +05:30
laurenspriem
e222d091d8 [mob][photos] Extra check against me for lastTimeMemory 2025-02-20 09:14:16 +05:30
Francis Geronimo
d25e37e2ad New Icons
ButterFlyMX
FreeTaxUSA
2025-02-19 17:33:13 -07:00
Prateek Sunal
7b902a607a chore: bump version 2025-02-19 20:37:11 +05:30
Prateek Sunal
68bc6fac38 chore: bump locks 2025-02-19 20:36:38 +05:30
Prateek Sunal
82fdae9253 fix: seek bar & buffering 2025-02-19 20:36:30 +05:30
Manav Rathi
d78ffced78 [desktop] Improve error bifurcation during ML indexing (#5113) 2025-02-19 19:24:52 +05:30
laurenspriem
664c40064d [mob][photos] people memories MVP 2025-02-19 19:07:46 +05:30
Manav Rathi
7035d3ca90 Use 2025-02-19 19:02:42 +05:30
Manav Rathi
8920462b54 wrap 2025-02-19 18:59:59 +05:30
Manav Rathi
56f9f2a028 wrap 2025-02-19 18:58:00 +05:30
Prateek Sunal
94a77b7df1 chore: update lock files 2025-02-19 18:35:41 +05:30
Prateek Sunal
7fc42bed64 fix: add playbackCallback to hideStuff properly 2025-02-19 18:32:47 +05:30
Manav Rathi
8eb34503ac net 1 2025-02-19 18:32:25 +05:30
Prateek Sunal
2fe6df5d21 fix: sync previewIds after enabling streaming 2025-02-19 18:31:57 +05:30
Manav Rathi
d59d3c3b07 grandfather 2025-02-19 17:40:43 +05:30
Prateek Sunal
503c2506aa fix: put remote files at last, get file after updating status as compressing, 2025-02-19 15:21:38 +05:30
Prateek Sunal
e44405b46f feat: document more, better code 2025-02-19 14:54:18 +05:30
Prateek Sunal
cdaeec0e8e fix: skip errors in checking file for preview creation 2025-02-19 14:17:09 +05:30
Prateek Sunal
29671aa154 fix: use media kit in android too 2025-02-19 12:28:44 +05:30
Manav Rathi
370299d433 [desktop] Improve ML worker logging (#5111) 2025-02-19 12:14:33 +05:30
Manav Rathi
38d42c67fb Log in other workers too 2025-02-19 12:08:40 +05:30
Manav Rathi
802ad184d2 Log at top level to cover unknown scenarios too 2025-02-19 12:06:02 +05:30
Manav Rathi
55cff6f174 log ww unhandled 2025-02-19 11:41:31 +05:30
Manav Rathi
e5448685ca Tweak 2025-02-19 10:52:32 +05:30
Manav Rathi
bde8a17cb4 Tweak 2025-02-19 10:39:24 +05:30
Manav Rathi
fc3200af73 [desktop] Fix NaN% ML status for empty account (#5110) 2025-02-19 10:35:51 +05:30
Manav Rathi
d21ea0a5a6 Fix NaN% for empty account 2025-02-19 10:31:34 +05:30
Manav Rathi
a1fda786f5 Fix look (paper now has a default shadow) 2025-02-19 10:30:33 +05:30
Manav Rathi
bc0980eb8d [web] Code reorg (#5109)
Intermezzo between the photoswipe changes.
2025-02-19 10:08:46 +05:30
Manav Rathi
2cfc5d9c59 Unused 2025-02-19 09:58:25 +05:30
Manav Rathi
682710a8a8 Remove unneeded ignore
We no longer have any source in public
2025-02-19 09:56:42 +05:30
Manav Rathi
ed50e5a36c pkg json cleanup 2025-02-19 09:51:58 +05:30
Manav Rathi
f31a6f2401 Move 2025-02-19 09:51:58 +05:30
Manav Rathi
239f08b516 Fixes 2025-02-19 09:32:23 +05:30
Manav Rathi
8544f5e109 Fixes 2025-02-19 09:30:40 +05:30
Manav Rathi
1eaaafb8df Ditto 2025-02-19 08:58:25 +05:30
Manav Rathi
149196e7dd Rename 2025-02-19 08:45:38 +05:30
Manav Rathi
38a31b7492 5s 2025-02-19 08:41:56 +05:30
Manav Rathi
b14ad92b91 Improvements 2025-02-19 08:41:56 +05:30
Manav Rathi
872455cce2 [web] Use upstream PhotoSwipe - Part x/x (#5108)
- Error handling 
- Exif handling (partial)
2025-02-18 20:25:05 +05:30
Manav Rathi
65a5248338 Revert "Revert "Mainlineable""
This reverts commit d398838742.
2025-02-18 20:17:50 +05:30
Manav Rathi
fcf06cff57 Cleanup 2025-02-18 20:17:03 +05:30
Manav Rathi
13752654cd Retain original image URL 2025-02-18 19:59:56 +05:30
Manav Rathi
d5e8777e0d Take 1 2025-02-18 19:47:06 +05:30
Manav Rathi
7de2a47c51 Sketch 2025-02-18 19:23:13 +05:30
Manav Rathi
20bc84ca96 Doc 2025-02-18 18:24:47 +05:30
laurenspriem
844f969f1c [mob][photos] people memory model 2025-02-18 17:00:28 +05:30
Manav Rathi
fd7c25029e Restructure 2025-02-18 16:52:39 +05:30
Manav Rathi
764add95c8 EP 1 2025-02-18 16:30:15 +05:30
Prateek Sunal
8c3fc0a879 [mob] remove internal user flag for media kit (#5106)
## Description

Remove internal user flag for media kit

## Tests
2025-02-18 15:11:55 +05:30
Prateek Sunal
37c467eb86 fix: remove internal user flag 2025-02-18 15:09:52 +05:30
Manav Rathi
931d7c8513 Close 2025-02-18 15:03:58 +05:30
Manav Rathi
132962b92f Exclusive 2025-02-18 14:48:51 +05:30
Manav Rathi
a5c4d9cc18 ff 2025-02-18 14:40:25 +05:30
Neeraj
39c31779a4 [mob] Lint fixes (#5103)
## Description

* Modified the analysis file and disabled all rules except
use_super_key.

Ran automatic fix command
❯ dart fix --apply

This also removed redundant cast warning. As the changes seemed
harmless, decided to keep them.

## Tests
2025-02-18 14:19:35 +05:30
Neeraj
d09613a946 [mob] video editor fixes (#5091)
## Description

Previously video editor was giving subpar quality videos, this fixes it
and also re-encodes videos using libx264 mp4 format.

This will also increase the time to process the edited video.

## Tests
2025-02-18 14:17:15 +05:30
Prateek Sunal
88e50982b2 [mob] streaming queue fixes (#5105)
## Description

## Tests
2025-02-18 14:16:57 +05:30
Prateek Sunal
ce5a8f0457 fix: logic for queuing and item removal 2025-02-18 14:09:39 +05:30
Neeraj Gupta
8c81a377c0 Lint fixes 2025-02-18 14:08:10 +05:30
Neeraj Gupta
a0025ab09b [mob] Lint fixes 2025-02-18 13:48:28 +05:30
Manav Rathi
324c156ea1 Use last best instead of thumbnail 2025-02-18 13:43:23 +05:30
Manav Rathi
4b87c9f3ac Thumb errs 2025-02-18 13:36:19 +05:30
Neeraj
dfda0c2c32 [mob] Extract ente_crypto plugin (#5102)
## Description

## Tests
2025-02-18 13:27:29 +05:30
Neeraj Gupta
c1a53bdfce Fix lint issues 2025-02-18 13:24:15 +05:30
laurenspriem
8ff8a0f0d2 [mob][photos] Don't use computer anywhere (yet) 2025-02-18 13:21:34 +05:30
Neeraj Gupta
0c8dc3af95 [mob] Extract ente_crypto plugin 2025-02-18 13:19:09 +05:30
Manav Rathi
b3100f098b Reset failures 2025-02-18 12:50:09 +05:30
Prateek Sunal
0e157a4e33 fix: still check 10mb preview limit 2025-02-18 12:19:16 +05:30
laurenspriem
22e2d5edd9 [mob][photos] Init locale 2025-02-18 12:18:50 +05:30
Prateek Sunal
04a5372f6e Merge branch 'main' into bumpversion 2025-02-18 11:47:52 +05:30
Manav Rathi
f47837f550 fin visually 2025-02-18 11:21:34 +05:30
Manav Rathi
1af8d7481d err 4 2025-02-18 11:09:39 +05:30
Manav Rathi
af91adeb72 err 3 2025-02-18 10:53:16 +05:30
Neeraj
8fd90651b1 [auth] Delete unused code (#5094)
## Description

## Tests
2025-02-18 10:31:47 +05:30
Edoardo Mileto
c3da41eee2 Create a custom icon for Deloitte (#5096)
## Description
followed [this
guide](https://github.com/ente-io/ente/blob/main/auth/docs/adding-icons.md)
2025-02-18 10:31:04 +05:30
Neeraj Gupta
ac94dccb90 remove oversize icon 2025-02-18 10:26:17 +05:30
Manav Rathi
89881975f2 err 2 2025-02-18 10:22:48 +05:30
Manav Rathi
e715d582ac err 1 2025-02-18 09:54:07 +05:30
Manav Rathi
808c611a92 Docs 2025-02-18 09:25:53 +05:30
Manav Rathi
fe5146ead8 Singleton => module 2025-02-18 09:15:25 +05:30
Manav Rathi
d398838742 Revert "Mainlineable"
This reverts commit 6ccca2114e.
2025-02-18 09:02:11 +05:30
Manav Rathi
717dc0996f [web] Use upstream PhotoSwipe (WIP) (#5097)
Continue https://github.com/ente-io/ente/pull/5066
2025-02-17 19:47:00 +05:30
Manav Rathi
00db3c0335 sp 2025-02-17 19:42:40 +05:30
Manav Rathi
6ccca2114e Mainlineable 2025-02-17 19:38:03 +05:30
Manav Rathi
0e3708ffdc LP resume 2025-02-17 19:38:03 +05:30
Manav Rathi
36e7dae2ee Simplify 2025-02-17 19:30:48 +05:30
Manav Rathi
9d76d93254 Integrate 2025-02-17 19:16:03 +05:30
Prateek Sunal
aab4bff6ff bump version 2025-02-17 18:54:20 +05:30
Manav Rathi
12a96b68ba wip ds 2025-02-17 18:39:27 +05:30
Manav Rathi
a851caf78f Another ARIA workaround 2025-02-17 17:11:14 +05:30
Neeraj Gupta
4bbac0ca66 [auth] Delete unused code 2025-02-17 17:08:22 +05:30
laurenspriem
9298e22c5c [mob][photos] cache clip embedding 2025-02-17 17:02:38 +05:30
laurenspriem
8de380d4cf [mob][photos] Clear memories seenTime after a while 2025-02-17 16:51:48 +05:30
laurenspriem
d874882866 [mob][photos] Use seen times 2025-02-17 16:49:39 +05:30
Manav Rathi
bb2bbb5655 Workaround for an aria issue...
...somewhere (In something we're doing? In PS? In Chrome? In ARIA?)
2025-02-17 16:32:13 +05:30
Neeraj Gupta
d36934ec0d remove 2025-02-17 16:27:50 +05:30
Neeraj Gupta
f922df304e [mob] Refactor 2025-02-17 16:27:50 +05:30
Manav Rathi
f6d949db38 wrap 2025-02-17 16:09:18 +05:30
Manav Rathi
e937027667 Title gets used as ariaLabel 2025-02-17 16:04:51 +05:30
Manav Rathi
84aeb79412 Move out icons 2025-02-17 15:44:05 +05:30
Manav Rathi
6140f35e69 Move 2025-02-17 15:27:39 +05:30
Manav Rathi
0eba6b9c98 Move 2025-02-17 15:07:30 +05:30
Manav Rathi
fe86075868 Namespace 2025-02-17 14:54:11 +05:30
laurenspriem
78ca393760 [mob][photos] cache methods 2025-02-17 14:47:50 +05:30
Manav Rathi
e9d63dfea9 zi 2025-02-17 14:39:49 +05:30
Manav Rathi
1c322a9c62 Modal 2025-02-17 14:11:16 +05:30
Manav Rathi
dc0450b155 Modal 2025-02-17 14:05:55 +05:30
Manav Rathi
8e90541d87 Fix path for lps 2025-02-17 13:57:25 +05:30
Prateek Sunal
8df04b2363 fix: convert the edited video to mp4 with x264 2025-02-17 13:50:03 +05:30
Manav Rathi
43c0d8a6ad Revert "Revert "Workbench""
This reverts commit 20fea517ce.
2025-02-17 13:42:38 +05:30
laurenspriem
19976136ab [mob][photos] todo 2025-02-17 12:25:59 +05:30
laurenspriem
5fd18807cc [mob][photos] Clean up search service 2025-02-17 11:58:44 +05:30
laurenspriem
1fe6987acf [mob][photos] Move to home gallery 2025-02-17 11:39:13 +05:30
github-actions[bot]
dd52ee7763 [auth] New translations (#5085)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-02-17 11:02:52 +05:30
Manav Rathi
387e4ae826 [server] Fix publish workflow (#5089)
Fixes for https://github.com/ente-io/ente/pull/5088
2025-02-17 11:01:34 +05:30
Andrés Ignacio Torres
098ff4e664 [auth] Add custom icon for EVE Online (#5078)
## Description

Added an Ente Auth custom icon for the EVE Online game service. I
followed the guidance
[here](https://github.com/ente-io/ente/blob/main/auth/docs/adding-icons.md)
to add the entry for EVE Online.

The icon itself comes from [Wikimedia
Commons](https://commons.wikimedia.org/wiki/File:EVE_online_logo.svg)
and was adapted to a square. I also added a custom hex color code to
ensure the logo is visible when using dark mode.

Noting that this is my first contribution as I've recently started using
Ente Auth, any feedback or suggestions would be appreciated :-)

## Tests

Visual change, no code changes.
2025-02-17 11:01:21 +05:30
Manav Rathi
00a04f18e4 [server] Fix publish workflow
Fixes for https://github.com/ente-io/ente/pull/5088
2025-02-17 11:00:21 +05:30
Rflew33
b8304f0ec5 Additional Icons (#5072)
## Description
Added Aruba. OnShape, RealVNC icons
## Tests
2025-02-17 10:59:39 +05:30
Manav Rathi
979fa5e6da [server] Publish Docker image automatically on 15th of every month (#5088) 2025-02-17 10:58:54 +05:30
Manav Rathi
91f356ceda [server] Publish Docker image automatically on 15th of every month 2025-02-17 10:51:23 +05:30
Manav Rathi
a019aaf5fc [web] New translations (#5084)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-17 10:18:51 +05:30
Crowdin Bot
a9df48ea5d New Crowdin translations by GitHub Action 2025-02-17 00:36:04 +00:00
Vishnu Mohandas
be6ce6d639 feat: create video-streaming.md (#5080)
## Description

Add FAQs for streaming

## Tests
2025-02-16 21:31:36 +05:30
vishnukvmd
9d421e79a7 Cosmetic changes 2025-02-16 21:30:25 +05:30
Prateek Sunal
d1d8144fd1 Update sidebar.ts 2025-02-16 19:59:12 +05:30
Prateek Sunal
7302f1d4ab feat: create video-streaming.md 2025-02-16 19:54:53 +05:30
Ashil
39788341db [docs] Upgrade background sync doc: Mention how background sync won't work if app is in private space on android 15 and later (#5067) 2025-02-14 19:41:45 +05:30
Neeraj
6c86fe0d53 [mob] Remove internal flag (#5071)
## Description

## Tests
2025-02-14 19:34:09 +05:30
Neeraj Gupta
30ed06cfda [mob] Remove internal flag 2025-02-14 19:30:41 +05:30
Prateek Sunal
21788c28cf [mob] streaming fixes (#5055)
## Description

## Tests
2025-02-14 18:28:25 +05:30
Manav Rathi
2969b5c9a5 [web] Code restructuring - Part 2 (#5070)
Continuation of https://github.com/ente-io/ente/pull/5069
2025-02-14 18:22:56 +05:30
Manav Rathi
aa74948f4a Workaround bad types is file 2025-02-14 18:14:04 +05:30
Manav Rathi
1bdbfe0580 More 2025-02-14 18:06:13 +05:30
Manav Rathi
cacf4212c7 Silence some 2025-02-14 18:05:16 +05:30
Manav Rathi
8f540f23dc Types 2025-02-14 18:03:02 +05:30
Manav Rathi
17d76e50da Fix lints 2025-02-14 18:00:33 +05:30
Manav Rathi
db26923d68 Move 2025-02-14 17:56:38 +05:30
Manav Rathi
4670be9bba Move 2025-02-14 17:52:36 +05:30
Manav Rathi
f8c2f4b9dd Move 2025-02-14 17:38:28 +05:30
Manav Rathi
396065e80c Move 2025-02-14 17:30:03 +05:30
Manav Rathi
5a755d851a Move 2025-02-14 17:12:17 +05:30
Manav Rathi
286a968f65 Props 2025-02-14 17:03:39 +05:30
Manav Rathi
efff97bc71 [web] Code restructuring (#5069) 2025-02-14 16:35:31 +05:30
Manav Rathi
2a73de848c Lint 2025-02-14 16:25:41 +05:30
Neeraj
c7c8fd65b6 [mob] Fix collection attribute motification (#5068)
## Description

## Tests
2025-02-14 15:56:17 +05:30
Neeraj Gupta
8d7eef99ad [mob] Fix collection attribute motification 2025-02-14 15:54:14 +05:30
Manav Rathi
1605b44c6e Fin 2025-02-14 15:30:35 +05:30
ashilkn
578a92d4bc [docs] Upgrade background sync doc: Mention how background sync won't work if app is in private space on android 15 and later 2025-02-14 15:18:58 +05:30
Manav Rathi
bf3ed6f478 Namespace 2025-02-14 15:06:39 +05:30
Manav Rathi
92a9698df5 Prune 2025-02-14 14:59:03 +05:30
Manav Rathi
342ac3258a Direct 2025-02-14 14:56:54 +05:30
Manav Rathi
e4427d7605 Direct 2025-02-14 14:52:11 +05:30
Manav Rathi
6f729c01e1 Direct 2025-02-14 14:47:05 +05:30
Manav Rathi
0d7c319903 Swap 2025-02-14 14:41:10 +05:30
Manav Rathi
6d552f5190 Unnest 2025-02-14 14:29:43 +05:30
Manav Rathi
06450a0ce0 Tweak 2025-02-14 14:23:56 +05:30
Manav Rathi
72d6789739 In photos 2025-02-14 14:22:53 +05:30
Manav Rathi
3d2d0cc345 More 2025-02-14 14:20:08 +05:30
Manav Rathi
884246d2ab Provide 2025-02-14 14:17:29 +05:30
Manav Rathi
cf25cc40e4 Extra 2025-02-14 14:09:42 +05:30
Manav Rathi
7138510e48 Rename 2025-02-14 14:01:56 +05:30
Manav Rathi
15e7e0ae9d Move 2025-02-14 13:58:53 +05:30
Manav Rathi
9dcced260f Same nomenclature 2025-02-14 13:21:12 +05:30
Manav Rathi
2d5dc734aa Up 2025-02-14 13:17:44 +05:30
Manav Rathi
1d93d44180 ud 2025-02-14 13:10:43 +05:30
laurenspriem
e13b88881e [mob][photos] Separate memory types 2025-02-14 13:10:28 +05:30
Manav Rathi
0aeb9f0c82 Up 2025-02-14 12:59:43 +05:30
Manav Rathi
183bbdd145 Fix 2025-02-14 12:26:30 +05:30
Manav Rathi
8d701d4fd5 Match reality 2025-02-14 12:13:45 +05:30
Manav Rathi
c6f6041d24 Pass context method 2025-02-14 12:07:31 +05:30
Manav Rathi
f49ece10e6 Move 2025-02-14 11:57:45 +05:30
Manav Rathi
d0f206741f Undep 2025-02-14 11:51:25 +05:30
Manav Rathi
87ff5c5c0b Undep 2025-02-14 11:37:41 +05:30
Manav Rathi
b931dac18b Doc 2025-02-14 11:30:32 +05:30
Manav Rathi
2b52616ba5 Undep 2025-02-14 11:11:57 +05:30
Manav Rathi
e66ee5bcb1 to-base 2025-02-14 11:08:56 +05:30
Manav Rathi
f18bcc71d3 Move 2025-02-14 11:03:16 +05:30
Manav Rathi
43a7cb1223 Move 2025-02-14 10:48:38 +05:30
Manav Rathi
ceb25651f2 [web] Use upstream PhotoSwipe (Much WIP) (#5066) 2025-02-14 08:54:25 +05:30
Manav Rathi
8a8934eacd LF 2025-02-14 08:48:54 +05:30
Manav Rathi
20fea517ce Revert "Workbench"
This reverts commit 4736ec7e0a.
2025-02-14 08:46:13 +05:30
Manav Rathi
0d32bd55dd Plumb 2025-02-14 08:34:11 +05:30
Manav Rathi
20bbdb131d Get file 2025-02-14 08:28:11 +05:30
Manav Rathi
1980cb035e Add example 2025-02-14 08:28:11 +05:30
Manav Rathi
bd00c27dc6 Same name as docs 2025-02-14 08:28:11 +05:30
Manav Rathi
e8fa86e2ad Loader 2025-02-14 08:28:11 +05:30
Manav Rathi
baa72202b2 Icon 2 2025-02-14 08:28:11 +05:30
Manav Rathi
46658a26f3 Icon 1 2025-02-14 08:28:11 +05:30
Manav Rathi
6653b36764 Use order to position it 2025-02-14 08:28:11 +05:30
Manav Rathi
c17d0d0087 Handle keyboard focus when auto hiding 2025-02-14 08:28:11 +05:30
Manav Rathi
b823a8d6a1 Cleanup 2025-02-14 08:28:11 +05:30
Manav Rathi
e06b20a566 Fix 2025-02-14 08:28:11 +05:30
Manav Rathi
8218bfba04 Try and alternative event to resize 2025-02-14 08:28:11 +05:30
Manav Rathi
8df5831944 Some overlay 2025-02-14 08:28:11 +05:30
Manav Rathi
6e774d6758 Pause on changing video slide 2025-02-14 08:28:11 +05:30
Manav Rathi
981c74d3f1 Don't auto load vids
Ref: 5e32d6589d/dist/photoswipe-video-plugin.esm.js (L77)
2025-02-14 08:28:11 +05:30
Manav Rathi
18ee3b19f7 Set 2025-02-14 08:28:11 +05:30
Manav Rathi
aa27191ddc CSS for vids 2025-02-14 08:28:11 +05:30
Manav Rathi
0883fe1d05 Take 2 disable thumb zoom 2025-02-14 08:28:11 +05:30
Manav Rathi
17e59de59c Revert "Note diversion that didn't work"
This reverts commit 0791a8f659e7aad48ff69c53f07c7894db663345.
2025-02-14 08:28:11 +05:30
Manav Rathi
bdb30d64f0 Note diversion that didn't work 2025-02-14 08:28:11 +05:30
Manav Rathi
57881f34c3 Image dims 2025-02-14 08:28:11 +05:30
Manav Rathi
6ef3c01030 Fix 2025-02-14 08:28:11 +05:30
Manav Rathi
d4ddc0f919 The dimensions are necessary
the CSS was masking the issue
2025-02-14 08:28:11 +05:30
Manav Rathi
4736ec7e0a Workbench 2025-02-14 08:28:11 +05:30
Neeraj
0840c66a34 [mob] Mark collection owner, sharee and publicUrls as non-nullable field (#5063)
## Description

## Tests
2025-02-13 16:15:37 +05:30
Neeraj Gupta
eb2f6aec68 [mob] refactor 2025-02-13 16:12:56 +05:30
mangesh
45074f85d9 [server] API for modifying family member storage limit (#5028)
## Tests 

Tested in followin cases 
1. various statuses "REJECTED", "REVOKED" and "SELF" etc
2. user not part of any family & admin user
3. storage limit check on bulk upload
4. reduce storage check 
5. set storage bigger than anything available in the world
6. admin shouldn't be able to set his own storage.

- [x] check for potential refactoring
2025-02-13 16:07:16 +05:30
mngshm
c46c27d21d if storageLimit == null, set no limit for member 2025-02-13 16:03:20 +05:30
Neeraj Gupta
3ff8d04d7b [mob] Mark collection owner, sharee and publicUrls as non-nullable field 2025-02-13 15:36:20 +05:30
Prateek Sunal
437eb246b0 fix: reduce it to 10 minutes minimum 2025-02-13 15:35:32 +05:30
Laurens Priem
5e383f3844 [mob][photos] bump for internal release (#5061)
## Description

## Tests
2025-02-13 15:25:07 +05:30
Manav Rathi
9bce8dc878 [desktop] Dark WCO title bar overlay (#5062) 2025-02-13 15:24:13 +05:30
Manav Rathi
a447d615e0 [desktop] Dark WCO title bar overlay 2025-02-13 15:22:54 +05:30
laurenspriem
239e6a3158 [mob][photos] bump for internal release 2025-02-13 15:21:35 +05:30
laurenspriem
9f06de3889 [mob][photos] enum 2025-02-13 15:16:58 +05:30
mngshm
5a72d62555 chore: validate memberUsage check inside *storageLimit nil check 2025-02-13 15:08:18 +05:30
mngshm
7aa8f6f00f chore: wrap everything inside nil check for storageLimit 2025-02-13 14:59:52 +05:30
Manav Rathi
5b168021f4 [desktop] Add IndexedDB circuit breaker (#5058)
From one customer's logs (Windows):

[rndr] [error] Unhandled promise rejection: Error: The user's token was
present in local storage but not in IndexedDB

And thereafter the app started behaving erratically. Restarting fixed
it. This
sequence happened during an app update.

This sequence is not reproducible, but adding as a extra precaution
adding a
circuit breaker to prevent execution if IndexedDB is not readable.
2025-02-13 14:48:14 +05:30
mngshm
a407b1baad fix: allow modification for invited user
fix: adds bonus + storage to get total storage

fix: var name changes, use NewBadRequestWithmessage
2025-02-13 14:36:46 +05:30
Manav Rathi
3589cc5bbf Lint 2025-02-13 14:35:08 +05:30
Manav Rathi
0cef0656f3 [desktop] Add IndexedDB circuit breaker
From one customer's logs (Windows):

[rndr] [error] Unhandled promise rejection: Error: The user's token was present in local storage but not in IndexedDB

And thereafter the app started behaving erratically. Restarting fixed it. This
sequence happened during an app update.

This sequence is not reproducible, but adding as a extra precaution adding a
circuit breaker to prevent execution if IndexedDB is not readable.
2025-02-13 14:29:34 +05:30
mngshm
3b3ba721a2 revert errors.go 2025-02-13 14:17:19 +05:30
Manav Rathi
d899be6eac [web] Improve logging of new HTTP errors (#5057)
...to match how the old HTTPService ones would've behaved.
2025-02-13 13:16:13 +05:30
Manav Rathi
17c713d3de Ignore the temporary desktop build folder 2025-02-13 13:11:09 +05:30
Manav Rathi
0e9153f4ab [web] Improve logging of new HTTP errors
...to match how the old HTTPService ones would've behaved.
2025-02-13 13:06:26 +05:30
Laurens Priem
5484a95bf4 Ram logging (#5056)
## Description

Extra debug options related to ML
2025-02-13 12:55:34 +05:30
Laurens Priem
2a1c1a30e9 [mob][photos] Fix empty facethumbnail due to decoding issue (#5054)
## Description

Resolve face thumbnail issue.
2025-02-13 12:52:37 +05:30
laurenspriem
f902b7e75c [mob][photos] ML dev options 2025-02-13 12:51:38 +05:30
Prateek Sunal
ac9f4e3181 fix: behavior 2025-02-13 12:46:43 +05:30
Prateek Sunal
b68b1a97b5 Merge branch 'main' into streaming-release-ready 2025-02-13 12:45:08 +05:30
Prateek Sunal
b8de2bf736 chore: update locks 2025-02-13 12:41:06 +05:30
Prateek Sunal
d35975b26e fix(preview-queue): put higher duration videos at last 2025-02-13 12:13:52 +05:30
laurenspriem
c2ca87d3af [mob][photos] log device ram 2025-02-13 12:13:14 +05:30
mngshm
a41c359ae4 use FetchMembersForAdminID to get storage including bonuses
remove unneeded api calls

omit unnecessary checks
2025-02-13 11:57:36 +05:30
Neeraj
e00cdee92b [auth] Add icon for Ankama & Seafile (#5030)
## Description

SVG Icon added for [Ankama](https://www.ankama.com/) and
[Seafile](https://www.seafile.com/en/home/)

Source of the icon is their website then cropped
2025-02-13 11:18:51 +05:30
Neeraj
a4ade14794 [cli] Skip CLI init for docs,versions & help commad (#5053)
## Description

## Tests
2025-02-13 11:17:04 +05:30
laurenspriem
b1ce7b6edb [mob][photos] Fix empty facethumbnail due to decoding issue 2025-02-13 11:16:32 +05:30
Neeraj Gupta
a5efee1ae3 [cli] Update version v0.2.3 2025-02-13 11:16:15 +05:30
Neeraj Gupta
33b56a2257 [cli] Skip cli init for version,docs & help 2025-02-13 11:11:21 +05:30
Neeraj
9abdfd2555 [auth] Increase default window height (#5039)
## Description

## Tests
2025-02-13 10:49:50 +05:30
Vishnu Mohandas
81ead3e4ce [mob] Notify internal Discord when internal release is available on PlayStore (#5052) 2025-02-13 10:49:31 +05:30
Laurens Priem
95d218b3a1 [mob][photos] Trips memories (internal users only) (#5035)
## Description

Added trips memories for internal users in the moments section

## Tests

Tested in debug mode on my pixel phone.
2025-02-13 10:36:36 +05:30
laurenspriem
74db8767a2 [mob][photos] Fix base location regression 2025-02-13 10:35:54 +05:30
laurenspriem
1200dbb6a9 [mob][photos] base names 2025-02-13 10:05:40 +05:30
vishnukvmd
8a90eba39a Add webhook 2025-02-13 09:58:36 +05:30
vishnukvmd
562ead3202 [mob] Notify Discord when internal releases are ready 2025-02-13 09:56:25 +05:30
laurenspriem
2c92411596 [mob][photos] name 2025-02-13 09:38:41 +05:30
laurenspriem
2fd5c703c9 [mob][photos] Add trip location names 2025-02-13 09:33:15 +05:30
mngshm
15d58e3446 make linters happy 2025-02-12 22:23:04 +05:30
Prateek Sunal
677a473d7d fix: use crf 23 for all the compressions for better results 2025-02-12 20:39:54 +05:30
Ashil
fb0128369a [mob][photos] Join link confirmation dialog (#5046) 2025-02-12 20:23:16 +05:30
ashilkn
bc4aa85eb1 [mob][photos] Bump up to v0.9.96 2025-02-12 20:12:07 +05:30
ashilkn
b1d2de712b [mob][photos] Show confirmation dialog before joining public link 2025-02-12 20:08:12 +05:30
Ashil
526b5da40f [mobile][photos] Fix: show account owner's email in 'Link email' screen if it's not assigned to any person yet (#5045) 2025-02-12 19:46:57 +05:30
ashilkn
1c6efd4985 [mob][photos] Use better names 2025-02-12 19:42:21 +05:30
ashilkn
defd88050d [mobile][photos] Fix: show account owner's email in 'Link email' screen if it's not assigned to any person yet 2025-02-12 19:40:04 +05:30
Prateek Sunal
9e12f35650 fix: check before file size and chunk size 2025-02-12 14:49:23 +05:30
mngshm
a7f31119fe [server]fix: use proper Error causes 2025-02-12 14:47:09 +05:30
Neeraj Gupta
40959cae09 [auth] Increase default window height 2025-02-12 14:47:05 +05:30
Manav Rathi
f32874fb05 [docs] Mention desktop log paths (#5037) 2025-02-12 14:44:30 +05:30
Manav Rathi
69f9bf35ac Mention paths 2025-02-12 14:43:27 +05:30
Manav Rathi
8204ac3070 [web] Account for Exif orientation when extracting width and height (#5036)
- Prefer file tag over Exif/XMP
- Use both dim/orient from same source

Tested with a portrait (HEIC) photo taken on an iPhone. Such files have
an orientation with in the Exif section.
```
$ exiftool -u -G IMG_xxxx.HEIC | grep Orient            
[EXIF]          Orientation                     : Rotate 90 CW
```
2025-02-12 14:05:07 +05:30
Manav Rathi
115c2c7fb3 Prefer file tag over exif, and use both dim/orient from same source 2025-02-12 13:42:57 +05:30
Manav Rathi
60b7ed52b8 [web] Account for Exif orientation when extracting width and height 2025-02-12 13:24:42 +05:30
laurenspriem
e6f72ea1c3 [mob][photos] Simplify 2025-02-12 11:38:33 +05:30
laurenspriem
967d8c0f3b [mob][photos] Trip class 2025-02-12 11:15:56 +05:30
mngshm
b729b8f0ea [server]refactor: make code more readable with guard clause 2025-02-12 11:08:19 +05:30
Manav Rathi
e3323890df [web] Tweak large tile gradient to work better in light mode (#5034)
When no thumbnail is shown, e.g. for empty uncat
2025-02-12 11:04:22 +05:30
Manav Rathi
fe4b0ded71 [web] Tweak large tile gradient to work better in light mode
When no thumbnail is shown, e.g. for empty uncat
2025-02-12 10:54:56 +05:30
laurenspriem
566364191d [mob][photos] Simplify 2025-02-12 10:20:38 +05:30
laurenspriem
c1dccf438b [mob][photos] Simplify with BaseLocation 2025-02-12 10:16:46 +05:30
Manav Rathi
71e419ac20 [desktop] Fix drag and drop (#5033)
https://github.com/react-dropzone/react-dropzone/issues/1411
2025-02-12 10:11:58 +05:30
Manav Rathi
de8fb95477 [desktop] Fix drag and drop
https://github.com/react-dropzone/react-dropzone/issues/1411
2025-02-12 10:03:02 +05:30
laurenspriem
84c00d0d31 [mob][photos] todo 2025-02-12 09:03:15 +05:30
Manav Rathi
d9ed2b4c10 [web] Allow marking certain dialogs as critical / non-replacable (#5032) 2025-02-12 07:31:31 +05:30
Manav Rathi
db308fa199 Fix key 2025-02-12 07:26:10 +05:30
Manav Rathi
244599ba67 Use 2025-02-12 07:24:02 +05:30
Manav Rathi
ee8ce50649 Rename 2025-02-12 07:23:32 +05:30
Manav Rathi
5f5632aac5 [web] Allow marking certain dialogs as critical / non-replacable 2025-02-12 07:22:03 +05:30
Manav Rathi
5f736aaa10 [desktop] Update version and link (#5031) 2025-02-12 06:53:49 +05:30
Manav Rathi
f003b4f8ac [desktop] Update version and link 2025-02-12 06:52:12 +05:30
Yannick
b933a89336 [auth] Add icon for Seafile 2025-02-11 18:32:40 +01:00
Yannick
016a476895 [auth] Add icon for Ankama 2025-02-11 16:58:19 +01:00
Neeraj
94c4e1ff0d [mob] Fix exif time parsing (#5029)
## Description

## Tests
2025-02-11 20:09:12 +05:30
Neeraj Gupta
d7ee9615b7 [mob] Fix lint & missing exif for files shared to ente 2025-02-11 19:58:14 +05:30
Neeraj Gupta
bf89a0ca9e [mob] Fill dateTime and offsetTime during upload 2025-02-11 19:58:03 +05:30
Neeraj Gupta
9f1b4fc23c [mob] Refactor 2025-02-11 19:57:47 +05:30
Neeraj Gupta
f3feb4cdda [mob] Parse exif as part of MediaUploadData 2025-02-11 19:57:36 +05:30
Neeraj Gupta
0b7b4b72f3 [mob] Add support for parsing dateTime & offsetTime from pubMagicMetadata 2025-02-11 19:57:28 +05:30
Neeraj Gupta
0380a30705 [mob] Refactor 2025-02-11 19:57:19 +05:30
Neeraj Gupta
ff72dae408 [mob] Refactor 2025-02-11 19:57:11 +05:30
Neeraj Gupta
be7cbc2ba0 [mob] Fix handling of timezone 2025-02-11 19:57:03 +05:30
Neeraj Gupta
1b0d481b45 [mob] Fix creationTime parsing 2025-02-11 19:56:54 +05:30
mngshm
4ee6ef408e [server] error handling if memberUsage is more than potential modified storagelimit
some more additional checks for the adminUser
2025-02-11 19:07:19 +05:30
Manav Rathi
9eb887e511 [web] Post revert fix (#5027) 2025-02-11 18:48:38 +05:30
Manav Rathi
5dd5f7e9c5 [web] Post revert fix 2025-02-11 18:44:22 +05:30
Manav Rathi
cd7183a9ad [web] New translations (#5023)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-11 18:39:53 +05:30
Crowdin Bot
17b213e380 New Crowdin translations by GitHub Action 2025-02-11 13:09:21 +00:00
mngshm
79712182af [server] include usageRepo inside family controller 2025-02-11 18:34:41 +05:30
Neeraj
97362ddbf2 Revert "[mob] Fix exif time parsing (#4985)" (#5026)
This reverts commit 5b17711b55, reversing
changes made to 85bf3eebcb.

## Description

## Tests
2025-02-11 18:30:49 +05:30
Neeraj Gupta
7621041ce0 Revert "[mob] Fix exif time parsing (#4985)"
This reverts commit 5b17711b55, reversing
changes made to 85bf3eebcb.
2025-02-11 18:27:17 +05:30
Manav Rathi
d58c2a3d49 [web] Use upstream Photoswipe - Heavily WIP (#5025) 2025-02-11 18:10:29 +05:30
Manav Rathi
2d4e532186 LF 2025-02-11 18:06:06 +05:30
Manav Rathi
3484f81546 Prep for merge 2025-02-11 18:00:47 +05:30
Manav Rathi
54da181256 Handle both cases 2025-02-11 18:00:47 +05:30
Manav Rathi
021b6ec9b4 + bg click hide 2025-02-11 18:00:47 +05:30
Manav Rathi
b4e01d5ab5 Auto hide
Needs the new CSS, but it'll work when that is enabled
2025-02-11 18:00:47 +05:30
Manav Rathi
78334d2e22 Improve comments 2025-02-11 18:00:47 +05:30
Manav Rathi
9496baaffc zoom and click improvements 2025-02-11 18:00:47 +05:30
Manav Rathi
1feb43d3d4 pass through pointer events
+ don't close if too small
2025-02-11 18:00:47 +05:30
Manav Rathi
5d6cc892f3 Take 2 2025-02-11 18:00:47 +05:30
Manav Rathi
27070bbe4c Take 1 2025-02-11 18:00:47 +05:30
Manav Rathi
556a0d1814 lp 2025-02-11 18:00:47 +05:30
Manav Rathi
5c1d7a0315 Cleanup 2025-02-11 18:00:47 +05:30
Manav Rathi
5b1130ab24 dd 2025-02-11 18:00:47 +05:30
Manav Rathi
96937041f1 vid 1 2025-02-11 18:00:47 +05:30
Manav Rathi
6f0deba3ed full 2025-02-11 18:00:47 +05:30
Manav Rathi
ca31a422fa Multiple 2025-02-11 18:00:47 +05:30
Manav Rathi
8c68af7772 Empty seems to work 2025-02-11 18:00:47 +05:30
Manav Rathi
42ac508fe7 enqueue 1 2025-02-11 18:00:47 +05:30
Manav Rathi
2e52efb15f Class 2025-02-11 18:00:47 +05:30
Manav Rathi
825a9df9fa Cleanup up scaffold 2025-02-11 18:00:47 +05:30
Manav Rathi
f30e05389b Validate 2025-02-11 18:00:47 +05:30
Manav Rathi
e952aa80a5 Don't reuse
(see prev diversion)
2025-02-11 18:00:46 +05:30
Manav Rathi
f3d9595953 diversion: pswp doesn't reset isOpen 2025-02-11 18:00:46 +05:30
Manav Rathi
a57232c34b Link 2025-02-11 18:00:46 +05:30
Manav Rathi
5c16ce3459 Prop 2025-02-11 18:00:46 +05:30
Manav Rathi
44c64c06a7 idata 2025-02-11 18:00:46 +05:30
Manav Rathi
3bbfa71824 Doc 2025-02-11 18:00:46 +05:30
Manav Rathi
970da9f29c Direct 2025-02-11 18:00:46 +05:30
Manav Rathi
97bdc9362a Tinker 2025-02-11 18:00:46 +05:30
Manav Rathi
4881f08790 Try import 2025-02-11 18:00:46 +05:30
Manav Rathi
d322f5e1bc Take 2 2025-02-11 18:00:46 +05:30
Manav Rathi
b87b68e9d4 Scaffold differently 2025-02-11 18:00:46 +05:30
Manav Rathi
782688c1f7 Scaffold 2025-02-11 18:00:46 +05:30
mngshm
38a35696a3 fix column names in DB & include UsageCtrl in controllers 2025-02-11 17:28:30 +05:30
laurenspriem
cea9fa84a1 [mob][photos] Limit 2025-02-11 17:26:06 +05:30
mngshm
bf4807da5b [server] use custom request struct for modifying functionality 2025-02-11 17:20:04 +05:30
Prateek Sunal
dc3f074588 fix: don't index unowned files 2025-02-11 17:14:20 +05:30
Neeraj
282ecf763b [server] Make new links joinable by default (#5024)
## Description

## Tests
2025-02-11 17:00:22 +05:30
Neeraj Gupta
218c652ed1 [server] Make new links joinable by default 2025-02-11 16:57:54 +05:30
Neeraj
5b17711b55 [mob] Fix exif time parsing (#4985)
## Description

## Tests
2025-02-11 16:56:31 +05:30
Neeraj Gupta
b3d8e2e865 Merge remote-tracking branch 'origin/main' into fixTime 2025-02-11 16:14:32 +05:30
Ashil
85bf3eebcb [mob][photos] Fix: FileAppbar buttons not working on some screens (#5022)
## Description

The Appbar was getting cut off at the bottom, likely due to a larger top
inset on certain screens, which makes the AppBar buttons unclickable
(have received reports on the favourite button being unclickable).

This change ensures that the Appbar remains useable on all screens. 

#### Before  
<img
src="https://github.com/user-attachments/assets/9611aae5-0671-4767-b5b6-22bac1f9d8f3"
width="320">



#### After  
<img
src="https://github.com/user-attachments/assets/8a360440-1d92-4168-a0e6-b8151b2a2788"
width="320">
2025-02-11 16:14:00 +05:30
Neeraj
ceb3046a02 [mob] Avoid reloading all files from DB on Upload events (#4974)
## Description

## Tests
2025-02-11 16:09:04 +05:30
Neeraj
d3ebb3a50c [mob] Upgrade dio (#4944)
## Description
This should ideally improve the API req/response time (as seen by the
client) and also improve the overall support for VPN. See
https://pub.dev/packages/native_dio_adapter

There's only one open ticket for this plugin:

https://github.com/cfug/dio/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22p%3A%20native_dio_adapter%22


https://pub.dev/packages/cronet_http#use-embedded-cronet
To make sure app works without Google Play Services, we will need to
define this variable in our production + fdroid build process

> --dart-define=cronetHttpNoPlay=true
## Tests
2025-02-11 16:08:43 +05:30
laurenspriem
4a9bc84375 [mob][photos] Surface only relevant trips 2025-02-11 16:08:01 +05:30
Neeraj Gupta
2282db7800 [mob] Build changes 2025-02-11 16:06:00 +05:30
Neeraj Gupta
5abd8b8f04 Merge remote-tracking branch 'origin/main' into dio_upgrade 2025-02-11 15:56:24 +05:30
ashilkn
45f1549079 [mob][photos] Fix: FileAppbar buttons not working on some screens 2025-02-11 15:50:42 +05:30
laurenspriem
01aa679698 [mob][photos] Better merge 2025-02-11 14:17:48 +05:30
mngshm
8da160b834 minor fix for db column names in DB.Exec 2025-02-11 11:51:47 +05:30
mngshm
2947ca2e3c fix storagelimit column name in DB.Exec 2025-02-11 11:27:21 +05:30
Manav Rathi
54d63c9969 [docs] Update logs menu location (#5015) 2025-02-10 20:05:54 +05:30
Manav Rathi
77be0a18d4 [docs] Update logs menu location 2025-02-10 20:04:37 +05:30
Manav Rathi
627e170304 [desktop] next (#5014) 2025-02-10 19:55:15 +05:30
mngshm
59e26779b9 [server][WIP] functionality for modifying users storage limit 2025-02-10 19:36:40 +05:30
Manav Rathi
dda46c0639 [desktop] next 2025-02-10 19:29:49 +05:30
Manav Rathi
d0e9972547 photosd-v1.7.9 (#5013) 2025-02-10 19:26:19 +05:30
Manav Rathi
1358087ee7 photosd-v1.7.9 2025-02-10 19:22:04 +05:30
laurenspriem
5a0d2ba922 [mob][photos] Remove too small trips 2025-02-10 16:51:15 +05:30
laurenspriem
d607d8a851 [mob][photos] Merge locations better 2025-02-10 16:38:46 +05:30
laurenspriem
8d7950afea [mob][photos] Change logic for repeating trips 2025-02-10 15:49:02 +05:30
Neeraj
10ee5989f2 [server] Delete more items in single run (#5010)
## Description

## Tests
2025-02-10 15:25:36 +05:30
Neeraj Gupta
7509abd1a9 [server] Increase cron freq 2025-02-10 15:21:31 +05:30
Neeraj Gupta
b0966e0cca [server] Delete more items in single run 2025-02-10 15:19:51 +05:30
laurenspriem
d99d08e8ae [mob][photos] creationTime check 2025-02-10 14:09:56 +05:30
Neeraj
0a19b8259a [server] Speed up file deletion (#5009)
## Description

## Tests
2025-02-10 13:59:43 +05:30
laurenspriem
caf601b49b [mob][photos] Switch order 2025-02-10 13:55:59 +05:30
Neeraj Gupta
b453ffef85 [server] Speed up file deletion 2025-02-10 13:29:17 +05:30
Neeraj Gupta
12c472ef01 [mob] Fix lint & missing exif for files shared to ente 2025-02-10 11:34:45 +05:30
laurenspriem
726c6dc8e6 [mob][photos] Increase trip distance threshold 2025-02-10 11:33:11 +05:30
Neeraj Gupta
5d0a15e9e5 [mob] Fill dateTime and offsetTime during upload 2025-02-07 16:32:02 +05:30
Neeraj Gupta
8559dd8364 [mob] Refactor 2025-02-07 16:09:57 +05:30
Neeraj Gupta
b6b724f64f [mob] Parse exif as part of MediaUploadData 2025-02-07 15:38:49 +05:30
Neeraj Gupta
c20dcdae76 [mob] Add support for parsing dateTime & offsetTime from pubMagicMetadata 2025-02-07 14:59:52 +05:30
Neeraj Gupta
5522121cf6 [mob] iOS podlock changes 2025-02-07 14:40:16 +05:30
Neeraj Gupta
0a9e706b50 [mob] Refactor 2025-02-07 14:36:16 +05:30
Neeraj Gupta
602881ee26 [mob] Refactor 2025-02-07 13:54:44 +05:30
Neeraj Gupta
10079d4cb0 [mob] Fix handling of timezone 2025-02-07 12:35:15 +05:30
Neeraj Gupta
d363f37592 [mob] Fix creationTime parsing 2025-02-07 12:26:52 +05:30
laurenspriem
8922d7e663 [mob][photos] Merge trips 2025-02-06 14:38:05 +05:30
Neeraj Gupta
d6a626fe0d Merge remote-tracking branch 'origin/main' into dio_upgrade 2025-02-06 11:33:48 +05:30
Neeraj Gupta
f11803fd1f [mob] Lint fix 2025-02-05 16:58:09 +05:30
Neeraj Gupta
e3833044e9 [mob] Avoid reloading all files from DB on Upload events 2025-02-05 16:37:54 +05:30
laurenspriem
edfd86628a [mob][photos] Basic trips 2025-02-05 16:29:01 +05:30
laurenspriem
99e5bc5050 [mob][photos] Simplify 2025-02-05 16:00:43 +05:30
laurenspriem
252ae8169d [mob][photos] Improve base locations 2025-02-05 15:15:35 +05:30
laurenspriem
3478720cb3 [mob][photos] Test trips selection 2025-02-05 14:17:09 +05:30
laurenspriem
fea6d58bd4 Merge branch 'main' into memories_trip 2025-02-05 09:51:14 +05:30
laurenspriem
e54027c5dd [mob][photos] Basic structure 2025-02-04 11:30:47 +05:30
Neeraj Gupta
36c06d5501 [mob] keep keep class org.chromium.net in droid proguard 2025-02-04 11:24:02 +05:30
Neeraj Gupta
701b7b8f37 [mob] Set cronetHttpNoPlay=true while building apk for droid 2025-02-04 11:13:09 +05:30
Neeraj Gupta
1396ca57db [mob] Use native dio adapter 2025-02-03 15:21:46 +05:30
Neeraj Gupta
5a639a9c60 [mob] Upgrade dio 2025-02-03 15:09:52 +05:30
813 changed files with 24486 additions and 15984 deletions

View File

@@ -40,7 +40,7 @@ jobs:
- name: Build PlayStore AAB
run: |
flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
env:
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
@@ -54,3 +54,12 @@ jobs:
packageName: io.ente.auth
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
track: internal
- name: Notify Discord
uses: sarisia/actions-status-discord@v1
with:
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
nodetail: true
title: "🏆 Internal release available for Auth"
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.auth)"
color: 0x800080

View File

@@ -68,7 +68,7 @@ jobs:
- name: Build independent APK
run: |
flutter build apk --release --flavor independent --dart-define=app.flavor=independent
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
mv build/app/outputs/flutter-apk/app-independent-release.apk artifacts/ente-${{ github.ref_name }}.apk
env:
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"

View File

@@ -40,7 +40,7 @@ jobs:
- name: Build PlayStore AAB
run: |
flutter build appbundle --release --flavor playstore
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
env:
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS_PHOTOS }}
@@ -54,3 +54,12 @@ jobs:
packageName: io.ente.photos
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
track: internal
- name: Notify Discord
uses: sarisia/actions-status-discord@v1
with:
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
nodetail: true
title: "🏆 Internal release available for Photos"
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos)"
color: 0x00ff00

View File

@@ -45,7 +45,7 @@ jobs:
- name: Build independent APK
run: |
flutter build apk --release --flavor independent
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk
env:
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"

View File

@@ -1,27 +1,24 @@
name: "Publish ghcr (server)"
on:
# Run manually, providing it the commit.
#
# To obtain the commit from the currently deployed museum, do:
# curl -s https://api.ente.io/ping | jq -r '.id'
#
# See server/docs/publish.md for more details.
# Run automatically on 15th of every month, at 05:00 UTC.
schedule:
- cron: '0 5 15 * *'
# Run manually if needed to publish out of schedule.
workflow_dispatch:
inputs:
commit:
description: "Commit to publish the image from"
type: string
required: true
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Determine commit from prod museum
run: |
echo "museum_commit=$(curl -s https://api.ente.io/ping | jq -r .id)" >> $GITHUB_ENV
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.commit }}
ref: ${{ env.museum_commit }}
- name: Build and push
uses: mr-smithers-excellent/docker-build-push@v6
@@ -34,8 +31,8 @@ jobs:
enableBuildKit: true
multiPlatform: true
platform: linux/amd64,linux/arm64
buildArgs: GIT_COMMIT=${{ inputs.commit }}
tags: ${{ inputs.commit }}, latest
buildArgs: GIT_COMMIT=${{ env.museum_commit }}
tags: ${{ env.museum_commit }}, latest
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -35,9 +35,18 @@
{
"title": "Amazon"
},
{
"title": "Ankama",
"slug": "ankama"
},
{
"title": "Anycoin Direct",
"slug": "anycoindirect"
},
{
"title": "Aruba",
"slug": "aruba",
"hex": "ef8a33"
},
{
"title": "AscendEX"
@@ -199,6 +208,10 @@
{
"title": "Bugzilla"
},
{
"title": "ButterflyMX",
"slug": "butterflymx"
},
{
"title": "Bybit"
},
@@ -297,6 +310,9 @@
{
"title": "Discourse"
},
{
"title": "Deloitte"
},
{
"title": "DMarket"
},
@@ -352,6 +368,14 @@
{
"title": "Estateguru"
},
{
"title": "EVEOnline",
"slug": "eve_online",
"altNames": [
"EVE Online"
],
"hex": "858585"
},
{
"title": "Fastmail"
},
@@ -376,9 +400,17 @@
{
"title": "ForUsAll"
},
{
"title": "FreeTaxUSA",
"slug": "freetaxusa"
},
{
"title": "G2A"
},
{
"title": "Gate.io",
"slug": "gateio.svg"
},
{
"title": "GitHub"
},
@@ -717,7 +749,8 @@
{
"title": "nintendo",
"altNames": [
"任天堂"
"任天堂",
"Nintendo Account"
]
},
{
@@ -734,6 +767,15 @@
{
"title": "Notesnook"
},
{
"title": "NoIp",
"slug": "noip",
"altNames": [
"No IP",
"No-IP",
"noip.com"
]
},
{
"title": "Notion"
},
@@ -760,6 +802,11 @@
"altNames": [
"欧易"
]
},
{
"title": "OnShape",
"slug": "onshape",
"hex": "7abb5e"
},
{
"title": "Parqet",
@@ -814,6 +861,13 @@
"PostScanMail"
]
},
{
"title": "Prey Project",
"slug": "prey_project",
"altNames": [
"PreyProject"
]
},
{
"title": "Privacy Guides",
"slug": "privacyguides"
@@ -857,6 +911,11 @@
{
"title": "RealMe",
"slug": "realme"
},
{
"title": "RealVNC",
"slug": "realvnc",
"hex": "488aec"
},
{
"title": "Registro br",
@@ -901,6 +960,10 @@
{
"title": "Samsung"
},
{
"title": "Seafile",
"slug": "seafile"
},
{
"title": "Sendgrid"
},
@@ -1138,6 +1201,9 @@
{
"title": "Wolvesville"
},
{
"title": "Workflowy"
},
{
"title": "WorkOS",
"altNames": [
@@ -1179,6 +1245,12 @@
},
{
"title": "Zoom"
},
{
"title": "BingX"
},
{
"title": "CoinSpot"
}
]
}

View File

@@ -0,0 +1,5 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 720" width="720" height="720">
<title>ankama</title>
<path class="s0" d="m572.3 253.3c-0.3-1.4-0.5-3-1.1-4.4-15.1-46-59.7-76.2-107.9-71.5-31.2 3-55.6 18.9-73.4 44.7-3.8 5.7-7.1 12-10.1 18.4-9.4 19.5-19.5 38.7-24.7 59.7-0.5 1.6-1.1 3.5-1.9 4.9-2.5 4.6-5.5 6.3-10.1 4.1-11.7-5.7-23.8-5.2-36.1-4.4-20.3 1.1-37.9-5.7-52.9-19.5-36.1-33.1-35.3-91 1.9-123 26.8-23.3 43.3-52.1 49.3-86.8 3-16.5 3.3-33.4 0-49.9-0.5-2.7-0.8-5.5-1.4-8.7 7.4-1.4 14.3 0 20.8 2.2 42.8 12.4 69.3 40.6 81.6 82.7 0.5 2.2 1.1 4.4 1.6 6.8 0.8 3 2.7 4.9 5.7 5.5 3.3 0.5 6.3-0.5 7.9-3.5 3-6.3 5.7-12.7 8.2-19.2 3.3-9.7 3.8-10.5 14.3-10.6 58.3-0.8 111.7 15.4 159.4 49 60.5 42.9 98.4 101.4 115.7 173.4 0.8 3.5 0.8 7.6 0.5 11.6-4.6 68-26.8 129.6-68.8 183.5-49 63.1-112.4 104.4-190.7 121.4-72.6 15.8-141.7 4.9-207.1-30.1-1.4-0.8-2.7-1.6-3.8-2.5-0.3 0-0.5-0.8-1.6-2.2 8.7 3 17 5.5 24.7 8.6 13.9 5.7 28.5 8.7 43.6 8.6 14.3 0 28.2 0.8 42.5 0 63.9-3.8 119.5-27.4 166.2-70.7 23.6-21.9 32.8-50.7 30.7-82.4-1.9-32.3-16.5-58.6-42.2-78.3-18.9-14.6-32-33.1-38-56.4-4.1-15.8-4.6-32-0.8-48.2 5.7-24.7 27.7-41.7 52.3-40.6 17 0.8 29.6 9 39.5 22.5 1.4 1.9 2.7 4.1 4.1 6.3 0.5 0 0.8-0.5 1.4-0.8l0.8 0.3v-0.5zm-263.5-55.1c-14.7 0-26.3 12.4-26.3 27.7 0 15.3 11.6 27.4 26.6 27.4 15 0 26-12.4 26-27.1 0-14.7-12-27.9-26.3-27.9v-0.2z"/>
<path class="s0" d="m168.2 314.5c7.4 1.6 14.7 3.3 22.5 4.9 10.9 2.2 14.3 6.8 12 18.1-1.6 8.2-3 16.2-4.9 24.1-0.8 3.5 0 5.7 2.5 8.2 22.8 23.6 50.1 38.4 83.8 43.6-2.2-1.4-3-2.2-4.1-2.7-19.5-10.1-27.7-25.2-25.2-46.6 1.1-9.8 0-19.2-6-27.4-3.8-5.5-9-9.7-13.9-14.3-1.6-1.6-3.8-2.5-6-4.1 5.2-3.3 10.5-3.3 15.4-3 7.4 0.3 14.7 1.4 22.2 3 11.6 2.5 21.7 8.2 30.4 16.2 6.5 6 12.4 12.4 18.7 18.4 13.9 13.6 25.2 12.8 37.2-2.7 7.6-9.8 12.4-21.4 15.8-33.1 3.8-12.7 8.2-24.9 15.4-36.1 7.4-11.6 16.5-21.7 27.4-30.1 9.7-7.4 19.7-6.8 30.7-3.3v9.7c-1.1 27.1 5.2 52.6 19.5 75.9 1.1 1.9 2.2 4.1 3.5 6 4.1 6.3 3.3 12-0.5 18.1-5.5 8.7-13.5 13.2-23.8 13.5h-6.3c-12.7 0-23.3 8.2-26.8 20.6-3 10.9 1.9 23.3 11.7 29.6 10.9 6.8 24.1 5.7 33.4-3 10.1-9.8 16.5-21.7 18.9-35.7 0.3-1.9 0.8-4.1 1.1-6 17.3-0.3 39.8 16.6 48.2 37.2 10.1 24.1 6.3 46.6-10.1 68.8-0.8-5.2-1.4-9.4-2.2-12.8-2.2-9.7-8.6-15.7-18.1-17.7-6.8-1.6-9.8 0-13.6 5.7-1.9 3-3.5 6.3-5.2 9.7-2.5 4.9-4.6 9.8-7.1 14.6-13.6 27.1-34.9 45.8-63.2 55.6-27.1 9.7-55.2 13.2-83.5 10.1-16.5-1.6-29.3-10.5-39.8-23.6 1.9-1.4 3.3-2.7 4.9-3.8 7.4-5.5 12.8-12.7 16.6-20.8 1.1-2.2 1.6-4.9 1.9-7.4 0.5-5.2-2.7-9.4-7.6-9.8-4.6-0.5-8.7 2.5-10.1 7.6-0.8 3.3-1.1 6.5-2.5 9.7-3.8 7.1-9.7 12.8-16.5 17-7.4 4.4-14.6 3.8-20-1.4-5.5-5.5-6-11.7-1.9-19.7 0.3-0.5 0.5-1.4 1.4-3-2.5 1.1-4.1 1.4-5.5 2.2-17.7 10.6-25.8 31.5-19.2 51.5 18.7 56.7-6 119.5-54 151-3.3 2.2-7.1 4.1-11.6 6.8 0-3-0.5-5.2-0.5-7.4-2.5-57.8-30.1-98.9-82.4-122.8-32.8-14.7-53.7-39.5-62.1-74-12.4-50.1 13.9-102.2 61.2-122.8 1.9-0.8 4.1-1.4 7.6-2.7-15.1 28.8-18.7 57.2-9.4 86.8 5.5 17.3 14.7 32 29 45.5 0.3-12.4-0.8-23.6 7.6-33.4 2.7 6.3 5.5 12 8.2 17.7 4.9 10.9 12.7 19.5 23.3 24.9 12 6.3 24.1 6.8 36.5 1.1 8.6-3.8 15.8-9.4 22.2-16.2 8.6-9 8.6-24.9 0.3-35.7-5.5-7.1-8.6-14.7-7.4-23.6 1.9-15.4 15.1-26.8 32-28.2 4.6-0.3 9.4 0 13.6 0.5 4.1 0.8 8.2 2.5 12.7 3.3-3.5-3.8-7.9-6.5-12.7-8.2-8.2-2.7-16.6-3.3-25.2-1.6-14.7 3.3-24.9 16.2-26.3 33.4-0.5 6.3 0 12.8 1.1 19.2 3 16.5-0.8 30.4-13.2 42.8-1.9-1.6-3.8-2.7-5.7-4.4-43.9-37.6-69.6-84.6-75.6-142.2-10.1-95.9 42.5-184.9 130.9-223 28.5-12.4 46-33.8 53.4-63.9 0.3-1.4 0.8-2.7 1.9-3.8 1.9 10.1 1.4 20.3-1.1 30.1-6 24.1-19.5 42.8-41.4 55.3-21.4 12.4-38.4 29-51.5 50.1-2.5 4.1-2.7 7.1 0 10.9 2.7 3.5 5.2 7.6 7.6 11.6 4.4 7.4 3 13.9-4.1 18.9-6.3 4.4-13.2 8.2-19.5 12.7-1.6 1.1-3.5 3.3-3.8 5.2-1.6 18.7-0.5 36.9 5.5 55.3l1.4-0.3-0.2-0.2zm192.8 132c14.3 0 25.8-11.3 25.5-25.2 0-13.6-12-25.8-25.5-25.8-13.5 0-25.2 11.3-25.5 25.5 0 14.3 11.3 25.5 25.2 25.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path fill="#FF8300" fill-rule="evenodd" d="M12.1099561,17.3015551 C9.03598293,17.3015551 6.50849391,14.8423766 6.50849391,11.836714 C6.50849391,8.83105139 9.03598293,6.37187289 12.1099561,6.37187289 C15.1839292,6.37187289 17.7114182,8.83105139 17.7114182,11.836714 C17.7114182,14.8423766 15.1839292,17.3015551 12.1099561,17.3015551 L12.1099561,17.3015551 Z M12.1099561,2 C6.50849391,2 2,6.4401834 2,11.836714 C2,17.3015551 6.50849391,21.673428 12.1099561,21.673428 C14.4325135,21.673428 16.5501395,20.9220123 18.2579023,19.6241126 C19.28256,21.3318754 22.2199121,21.673428 22.2199121,21.673428 L22.2199121,11.836714 C22.2199121,6.4401834 17.7114182,2 12.1099561,2 L12.1099561,2 Z"/>
</svg>

After

Width:  |  Height:  |  Size: 901 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 150 150"><defs><style>.e{fill:#2a54ff;}.f{fill:url(#d);}.g{fill:none;}</style><linearGradient id="d" x1="17.68" y1="116.45" x2="132.14" y2="32.11" gradientTransform="matrix(1, 0, 0, 1, 0, 0)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2a54ff"/><stop offset=".52" stop-color="#2143cb"/><stop offset="1" stop-color="#2a54ff"/></linearGradient></defs><g id="b"><path id="c" class="g" d="M0,0H150V150H0V0Z"/></g><path class="f" d="M140.2,22.33c-25.18-.09-49.79,10.83-66.63,29.47-6.06,6.27-10.1,13.95-14.96,21.06-11.64,15.93-29.81,25.14-49.5,25.13h0v28.65h0c25.17,.1,49.78-10.86,66.63-29.5,6.03-6.27,10.13-13.94,14.96-21.06,11.64-15.91,29.81-25.12,49.5-25.11V22.33h0Z"/><path class="e" d="M140.2,97.99c-19.68,0-37.86-9.2-49.5-25.11-4.81-7.12-8.92-14.78-14.94-21.06C58.95,33.18,34.3,22.24,9.13,22.35h0v28.65h0c21.8-.11,42.05,11.62,53.01,30.46,3.22,5.62,7.06,10.9,11.45,15.74,16.83,18.63,41.46,29.59,66.63,29.5l-.02-28.7h0Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="462px" height="404px" viewBox="0 0 462 404" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="464.529999" y1="-2595.189941" x2="1224.150024" y2="-2986.919922" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
<stop offset="0" style="stop-color:rgb(100%,92.156863%,18.039216%);stop-opacity:1;"/>
<stop offset="0.92" style="stop-color:rgb(99.607843%,56.470591%,18.82353%);stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="-580.880005" y1="-2987.179932" x2="121.110001" y2="-2623.179932" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
<stop offset="0.06" style="stop-color:rgb(0%,40.784314%,89.803922%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(3.921569%,85.09804%,100%);stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="1063.689941" y1="-3644.949951" x2="436.269989" y2="-3207.530029" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
<stop offset="0" style="stop-color:rgb(93.725491%,3.921569%,21.176471%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(100%,59.215689%,54.11765%);stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="-389.76001" y1="-3622.02002" x2="266.369995" y2="-3164.639893" gradientTransform="matrix(0.249968,0,0,-0.249968,150.980393,-561.725816)">
<stop offset="0" style="stop-color:rgb(47.450981%,7.843138%,93.725491%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(85.882354%,41.176471%,100%);stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 437.566406 160.457031 C 437.566406 192.628906 411.488281 218.730469 379.324219 218.730469 L 239.71875 218.730469 C 239.71875 116.257812 317.625 31.976562 417.445312 21.886719 C 428.53125 20.769531 437.585938 29.886719 437.585938 41.027344 Z M 437.566406 160.457031 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 24.640625 160.457031 C 24.640625 192.628906 50.722656 218.730469 82.882812 218.730469 L 222.492188 218.730469 C 222.492188 116.257812 144.589844 31.976562 44.777344 21.886719 C 33.695312 20.769531 24.640625 29.886719 24.640625 41.027344 Z M 24.640625 160.457031 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 269.425781 338.792969 C 249.960938 308.039062 239.65625 272.375 239.71875 235.976562 L 381.667969 235.976562 C 412.507812 235.976562 437.574219 260.675781 437.574219 291.0625 C 437.566406 380.972656 317.730469 415.246094 269.425781 338.792969 Z M 269.425781 338.792969 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 192.78125 338.792969 C 212.25 308.039062 222.554688 272.375 222.492188 235.976562 L 80.546875 235.976562 C 49.707031 235.976562 24.640625 260.675781 24.640625 291.0625 C 24.640625 380.972656 144.480469 415.246094 192.78125 338.792969 Z M 192.78125 338.792969 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 27.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
<style type="text/css">
.st0{fill:#C5C8CA;}
.st1{fill:#9DA4A8;}
.st2{fill:#B7BBBD;}
.st3{fill:#CBCFD1;}
.st4{fill:#BBBFC2;}
.st5{fill:#CACDCE;}
.st6{fill:#BFC3C5;}
.st7{fill:#BCC0C2;}
.st8{fill:#BDC1C4;}
.st9{fill:#C7CACC;}
.st10{fill:url(#SVGID_1_);}
.st11{fill:#FFFFFF;}
.st12{fill:#B8BCBF;}
.st13{fill:#C4C7C9;}
.st14{fill:#C1C5C7;}
.st15{fill:url(#SVGID_00000003093454306001190100000011813141018663887528_);}
.st16{fill:url(#SVGID_00000017503418065689336600000007511615486600436881_);}
.st17{fill:url(#SVGID_00000057845154053127761930000017803385842445649033_);}
.st18{fill:url(#SVGID_00000156571711195124538550000006687723982713171592_);}
.st19{fill:#DF3030;}
.st20{fill:url(#SVGID_00000001636660173574603980000008731795684331757470_);}
.st21{fill:#17181C;}
.st22{fill:url(#SVGID_00000180343933242210086490000003762167186865041053_);}
.st23{fill:url(#SVGID_00000015338415700440354440000005681408021599925436_);}
</style>
<g>
<path class="st0" d="M14.4,29.5c0.1,0,0.1,0,0.2,0c0.1,0,0.2,0,0.2,0H14.4z"/>
<path class="st1" d="M15.3,29.5h0.1c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0L15.3,29.5
C15.2,29.5,15.3,29.5,15.3,29.5z"/>
<path class="st2" d="M15.3,29.5L15.3,29.5l-0.2,0C15.2,29.5,15.2,29.5,15.3,29.5z"/>
<path class="st3" d="M15.5,29.5L15.5,29.5L15.5,29.5L15.5,29.5L15.5,29.5z"/>
<path class="st0" d="M14.1,29.5c0.1,0,0.1,0,0.2,0H14.1z"/>
<path class="st4" d="M13.9,29.5C13.9,29.5,14,29.5,13.9,29.5c0.1,0,0.1,0,0.2,0H13.9z"/>
<path class="st5" d="M13.6,29.5C13.6,29.5,13.6,29.5,13.6,29.5c0.1,0,0.1,0,0.1,0H13.6z"/>
<path class="st6" d="M13.7,29.5C13.8,29.5,13.8,29.5,13.7,29.5c0.1,0,0.1,0,0.1,0H13.7z"/>
<path class="st7" d="M13.3,29.4C13.3,29.4,13.3,29.4,13.3,29.4C13.4,29.4,13.4,29.4,13.3,29.4L13.3,29.4z"/>
<path class="st8" d="M13.4,29.5C13.4,29.4,13.5,29.4,13.4,29.5C13.5,29.4,13.5,29.4,13.4,29.5L13.4,29.5z"/>
<path class="st8" d="M13.1,29.4C13.1,29.4,13.1,29.4,13.1,29.4C13.1,29.4,13.1,29.4,13.1,29.4L13.1,29.4z"/>
<path class="st9" d="M13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4C13.2,29.4,13.2,29.4,13.2,29.4
C13.3,29.4,13.3,29.4,13.2,29.4L13.2,29.4z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="21.8812" y1="-88.078" x2="8.2545" y2="-104.6955" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#020037"/>
<stop offset="1" style="stop-color:#050F62"/>
</linearGradient>
<path class="st10" d="M15,0.4C11.1,0.4,7.5,2,4.7,4.7C2,7.4,0.5,11.1,0.5,15c0,1.7,0.3,3.4,0.9,5.1c0.3,0,0.5,0,0.8,0
c2.9,0,5.8,0.9,8.2,2.6c2.4,1.7,4.2,4.1,5.1,6.9c3.8-0.1,7.4-1.7,10-4.4c2.6-2.7,4.1-6.4,4.1-10.1c0-3.9-1.5-7.6-4.3-10.3
C22.6,2,18.9,0.4,15,0.4"/>
<path class="st11" d="M20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5L20.7,22.5c0,0.4,0.1,0.8,0.3,1c0.2,0.2,0.6,0.3,1,0.3c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c-0.4,0-0.7,0.1-1,0.3c-0.2,0.2-0.3,0.6-0.3,1c0,0,0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0h0l0,0c0-0.4-0.1-0.7-0.3-1c-0.2-0.2-0.6-0.3-1-0.3c0,0,0,0,0,0l0,0c0,0,0,0,0,0s0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0.4,0,0.7-0.1,1-0.3S20.7,22.9,20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5C20.7,22.5,20.7,22.5,20.7,22.5z"/>
<path class="st11" d="M6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5L6.9,15.5c0,0.4,0.1,0.8,0.3,1c0.2,0.2,0.6,0.3,1,0.3c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0l0,0c-0.4,0-0.7,0.1-1,0.3c-0.2,0.2-0.3,0.6-0.3,1c0,0,0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0,0,0,0,0,0h0l0,0c0-0.4-0.1-0.7-0.3-1c-0.2-0.2-0.6-0.3-1-0.3c0,0,0,0,0,0l0,0c0,0,0,0,0,0c0,0,0,0,0,0c0,0,0,0,0,0
c0,0,0,0,0,0c0.4,0,0.7-0.1,1-0.3C6.8,16.2,6.9,15.9,6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5C6.9,15.5,6.9,15.5,6.9,15.5z"/>
<path class="st11" d="M10.6,4.1L10.6,4.1C10.7,4.1,10.7,4.1,10.6,4.1c0,0.3,0.1,0.5,0.3,0.7c0.2,0.2,0.4,0.3,0.7,0.2h0v0l0,0l0,0
l0,0l0,0c-0.3,0-0.5,0.1-0.7,0.2c-0.2,0.2-0.3,0.4-0.2,0.7l0,0l0,0l0,0l0,0h0v0c0-0.3-0.1-0.5-0.2-0.7C10.2,5.1,10,5,9.7,5.1h0v0v0
h0C10,5,10.2,5,10.4,4.8C10.6,4.6,10.7,4.3,10.6,4.1C10.6,4.1,10.6,4.1,10.6,4.1C10.6,4.1,10.6,4.1,10.6,4.1z"/>
<path class="st12" d="M12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4C12.8,29.4,12.8,29.4,12.8,29.4
C12.8,29.4,12.8,29.4,12.8,29.4L12.8,29.4z"/>
<path class="st13" d="M13,29.4C13,29.4,13,29.4,13,29.4C13,29.4,13,29.4,13,29.4L13,29.4z"/>
<path class="st14" d="M12.9,29.4C12.9,29.4,12.9,29.4,12.9,29.4C12.9,29.4,12.9,29.4,12.9,29.4L12.9,29.4z"/>
<linearGradient id="SVGID_00000173122186048074043340000017421439166240502921_" gradientUnits="userSpaceOnUse" x1="19.2457" y1="-89.3156" x2="22.9553" y2="-91.7188" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#E5E5E5"/>
<stop offset="1" style="stop-color:#B7B8C1"/>
</linearGradient>
<path style="fill:url(#SVGID_00000173122186048074043340000017421439166240502921_);" d="M21.8,1.2c-1.4,0.7-3,1.9-4.4,4.2
c-2.5,3.9-3.2,7.4-3.2,7.4L16,14l0.3,0.2l1.9,1.2c0,0,2.9-2,5.4-5.9c1.5-2.3,2-4.3,2-5.8c-0.8-0.1-1.5-0.4-2.2-0.8
C22.8,2.5,22.2,1.9,21.8,1.2z"/>
<linearGradient id="SVGID_00000127763695479642710240000017533313096818365313_" gradientUnits="userSpaceOnUse" x1="21.2378" y1="-99.9826" x2="19.0472" y2="-97.8815" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#EC4F4F"/>
<stop offset="1" style="stop-color:#A91919"/>
</linearGradient>
<path style="fill:url(#SVGID_00000127763695479642710240000017533313096818365313_);" d="M20.8,16.8c0.9-1.4,0.3-3.2,0-3.8
c-0.7,0.8-1.5,1.5-2.3,2.1c0.1,0.4,0.3,0.8,0.3,1.2c0,0.1,0,0.2-0.1,0.3c-0.4,0.6-0.8,1.3-1.1,2c-0.1,0.1-0.1,0.2-0.1,0.3
c-0.1,0.2-0.1,0.3,0,0.5c0,0.3,0.2,0.5,0.3,0.8c0,0,0.1,0.1,0.1,0.1c0.1,0,0.1,0.1,0.2,0.1s0.1,0,0.2-0.1c0.1-0.1,0.3-0.2,0.4-0.4
C19.5,19,19.8,18.5,20.8,16.8z"/>
<linearGradient id="SVGID_00000060717637781723915790000002744012061535479481_" gradientUnits="userSpaceOnUse" x1="11.3158" y1="-99.2586" x2="14.8122" y2="-101.5237" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#F2A518"/>
<stop offset="1" style="stop-color:#F4E23E"/>
</linearGradient>
<path style="fill:url(#SVGID_00000060717637781723915790000002744012061535479481_);" d="M15.1,15.7l-1.7-1.1c-2,3.1-3.3,7-2.4,7.5
c0.9,0.6,3.9-2.2,5.9-5.3L15.1,15.7z"/>
<linearGradient id="SVGID_00000070084874335106853820000008402293642909580433_" gradientUnits="userSpaceOnUse" x1="-4386.2534" y1="747.6443" x2="-4497.9517" y2="769.0099" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#EC4F4F"/>
<stop offset="1" style="stop-color:#A91919"/>
</linearGradient>
<path style="fill:url(#SVGID_00000070084874335106853820000008402293642909580433_);" d="M15.2,9.5c-0.7-0.1-2.5,0.1-3.4,1.5
c-1.1,1.6-1.5,2.1-2,3.2c-0.1,0.2-0.1,0.3-0.2,0.5c0,0.1,0,0.1,0,0.2C9.6,15,9.7,15,9.7,15c0,0,0.1,0,0.2,0.1c0.3,0.1,0.6,0,0.8,0
c0.2,0,0.3-0.1,0.4-0.2c0.1-0.1,0.2-0.2,0.3-0.3c0.5-0.6,0.9-1.2,1.3-1.8c0.1-0.1,0.2-0.2,0.3-0.2c0.4-0.1,0.8-0.1,1.2-0.2l0,0
C14.5,11.4,14.8,10.4,15.2,9.5z"/>
<path class="st19" d="M25,0.6c-0.2-0.1-1.5-0.2-3.2,0.7c0.4,0.7,1,1.2,1.6,1.7c0.7,0.4,1.4,0.7,2.2,0.8C25.7,1.9,25.1,0.7,25,0.6z"
/>
<path class="st19" d="M18.4,15.5L14,12.7c-0.1,0-0.1,0-0.2,0l-0.9,1.4c0,0.1,0,0.1,0,0.2l4.4,2.8c0.1,0,0.1,0,0.2,0l0.9-1.4
C18.4,15.6,18.4,15.6,18.4,15.5z"/>
<linearGradient id="SVGID_00000044894753735506851200000013592864944465274029_" gradientUnits="userSpaceOnUse" x1="14.9436" y1="-95.9217" x2="16.3716" y2="-96.8468" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#B71E1E"/>
<stop offset="0.44" style="stop-color:#DF3030"/>
<stop offset="1" style="stop-color:#C51D1D"/>
</linearGradient>
<path style="fill:url(#SVGID_00000044894753735506851200000013592864944465274029_);" d="M17.8,11.6c-0.4-0.2-2.1,1.6-3.2,3.3
c-0.8,1.2-1.4,3-1.1,3.2c0.4,0.2,1.7-1,2.5-2.3C17.1,14.2,18.1,11.9,17.8,11.6z"/>
<path class="st21" d="M21.2,8.6c1.3,0,2.3-1,2.3-2.3s-1-2.3-2.3-2.3c-1.3,0-2.3,1-2.3,2.3S20,8.6,21.2,8.6z"/>
<linearGradient id="SVGID_00000090987122570624474440000002432161440392897685_" gradientUnits="userSpaceOnUse" x1="20.068" y1="-87.0655" x2="22.3556" y2="-88.5473" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#CED1EC"/>
<stop offset="1" style="stop-color:#FFFFFF"/>
</linearGradient>
<path style="fill:url(#SVGID_00000090987122570624474440000002432161440392897685_);" d="M21.2,7.7c0.8,0,1.4-0.6,1.4-1.4
S22,5,21.2,5c-0.8,0-1.4,0.6-1.4,1.4S20.5,7.7,21.2,7.7z"/>
<linearGradient id="SVGID_00000044151119195171880090000016489263670362291109_" gradientUnits="userSpaceOnUse" x1="14.4192" y1="-110.4727" x2="2.0973" y2="-101.7197" gradientTransform="matrix(1 0 0 -1 0 -81.48)">
<stop offset="0" style="stop-color:#B7B7BD"/>
<stop offset="0.68" style="stop-color:#EFEFEF"/>
</linearGradient>
<path style="fill:url(#SVGID_00000044151119195171880090000016489263670362291109_);" d="M2.1,20c-0.3,0-0.5,0-0.8,0
c1,2.8,2.9,5.2,5.3,6.9s5.3,2.6,8.3,2.6c0.1,0,0.3,0,0.4,0c-0.9-2.8-2.7-5.2-5.1-6.9C7.9,20.9,5.1,20,2.1,20z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,15 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1545 1333" width="1545" height="1333">
<title>Deloitte-svg</title>
<style>
.s0 { fill: #86bc24 }
.s1 { fill: #0f0b0b }
</style>
<g id="layer1">
<g id="g3359">
<g id="g3371">
<path id="path3356" class="s0" d="m1354.4 1332.5c-105.1 0-190-84.8-190-189.6 0-104.9 84.9-189.6 190-189.6 105 0 189.9 84.7 189.9 189.6 0 104.8-84.9 189.6-189.9 189.6z"/>
<path id="path3360" fill-rule="evenodd" class="s1" d="m1089.4 628.2q0 328.2-176.7 505.8-176.8 177.6-497.1 177.6h-414.9v-1311.1h443.9q308.8 0 476.8 161.4c112 107.6 168 263 168 466.3zm-359.7 12.5q0-180.1-69.7-267.2c-46.6-58-117.1-87-211.9-87h-100.9v734.5h77.2c105.3 0 182.5-31.2 231.6-93.8 49.1-62.4 73.7-157.9 73.7-286.5z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 785 B

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="198.4" height="198.4" xml:space="preserve">
<path transform="translate(0, 60)" d="M 0,0 0,13.88 10.97,13.88 10.97,10.31 60.69,10.31 60.69,0 0,0 z M 65.84,0 99.22,58.09 132.6,0 120.7,0 C 120.7,0 100.5,34.91 99.22,37.16 97.92,34.91 77.75,0 77.75,0 L 65.84,0 z M 137.8,0 137.8,13.88 148.7,13.88 148.7,10.31 198.4,10.31 198.4,0 137.8,0 z M 0,19.12 0,29.47 60.69,29.47 60.69,19.12 0,19.12 z M 137.8,19.12 137.8,29.47 198.4,29.47 198.4,19.12 137.8,19.12 z M 0,34.66 0,48.59 60.69,48.59 60.69,38.25 10.97,38.25 10.97,34.66 0,34.66 z M 137.8,34.66 137.8,48.59 198.4,48.59 198.4,38.25 148.7,38.25 148.7,34.66 137.8,34.66 z M 42.19,69.72 C 41.32,69.72 40.71,69.89 40.41,70.19 40.1,70.49 39.97,71.03 39.97,71.84 L 39.97,76.56 C 39.97,77.38 40.1,77.93 40.41,78.22 40.71,78.52 41.32,78.66 42.19,78.66 L 48.72,78.66 C 49.59,78.66 50.19,78.52 50.5,78.22 50.8,77.93 50.97,77.38 50.97,76.56 L 50.97,71.84 C 50.97,71.03 50.8,70.49 50.5,70.19 50.19,69.89 49.59,69.72 48.72,69.72 L 42.19,69.72 z M 64.37,69.72 64.37,78.66 66.25,78.66 66.25,73.84 C 66.25,73.66 66.23,73.43 66.22,73.19 66.2,72.94 66.18,72.69 66.16,72.41 66.26,72.53 66.38,72.67 66.5,72.78 66.62,72.89 66.75,73.01 66.91,73.16 L 73.47,78.66 74.88,78.66 74.88,69.72 73.03,69.72 73.03,74.41 C 73.03,74.52 73.05,74.7 73.06,74.91 73.07,75.11 73.09,75.47 73.12,75.97 72.99,75.81 72.82,75.66 72.66,75.5 72.49,75.35 72.31,75.18 72.09,75 L 65.81,69.72 64.37,69.72 z M 88.53,69.72 88.53,78.66 97.31,78.66 97.31,77 90.59,77 90.59,69.72 88.53,69.72 z M 109.4,69.72 109.4,78.66 111.5,78.66 111.5,69.72 109.4,69.72 z M 125.1,69.72 125.1,78.66 127,78.66 127,73.84 C 127,73.66 127,73.43 126.9,73.19 126.9,72.94 126.9,72.69 126.9,72.41 127,72.53 127.1,72.67 127.2,72.78 127.3,72.89 127.5,73.01 127.6,73.16 L 134.2,78.66 135.6,78.66 135.6,69.72 133.8,69.72 133.8,74.41 C 133.8,74.52 133.8,74.7 133.8,74.91 133.8,75.11 133.8,75.47 133.8,75.97 133.7,75.81 133.6,75.66 133.4,75.5 133.2,75.35 133,75.18 132.8,75 L 126.5,69.72 125.1,69.72 z M 149.3,69.72 149.3,78.66 158.5,78.66 158.5,77 151.3,77 151.3,74.78 155.4,74.78 155.4,73.25 151.3,73.25 151.3,71.25 158.4,71.25 158.4,69.72 149.3,69.72 z M 42.03,71.31 48.87,71.31 48.87,77 42.03,77 42.03,71.31 z" /></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1 @@
<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 560 400" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(2.51518 0 0 2.51518 30 162.272)"><path d="m136.108 5.893 6.356 23.513h-4.7l-1.218-5.334h-6.587l-1.284 5.334h-4.545l6.52-23.513h5.468zm-2.833 4.107-2.436 10.242h4.806zm-65.8 1.7c2.02 0 3.508.522 4.463 1.563s1.432 2.674 1.432 4.9v11.263h-3.95v-1.9c-.505.746-1.114 1.323-1.828 1.73-.706.405-1.508.615-2.322.61-1.405 0-2.502-.45-3.294-1.35s-1.176-2.182-1.176-3.786c0-1.734.577-3.1 1.73-4.1s2.804-1.586 4.956-1.762l1.78-.132v-1.02c0-1.03-.153-1.788-.462-2.27s-.8-.725-1.482-.725c-.615 0-1.086.187-1.415.56s-.56.966-.7 1.78l-3.887-.33c.264-1.713.9-2.98 1.9-3.804s2.427-1.235 4.25-1.235zm1.78 9.78-1.317.132c-.988.088-1.752.373-2.3.856s-.808 1.13-.808 1.943c0 .724.153 1.28.463 1.662s.756.577 1.35.577c.748.022 1.459-.331 1.894-.939.472-.626.708-1.476.708-2.553v-1.68zm-25.26-9.78c2.064 0 3.617.714 4.66 2.14s1.563 3.535 1.563 6.323v1.68h-8.825c.044 3.338.9 5.005 2.536 5.005.66 0 1.152-.202 1.482-.608s.548-1.092.66-2.06h4.084c-.177 1.888-.797 3.322-1.86 4.298s-2.542 1.465-4.43 1.465c-2.282 0-3.972-.73-5.07-2.2s-1.647-3.716-1.647-6.768c0-3.03.58-5.334 1.745-6.915s2.869-2.36 5.107-2.36zm-.133 3.03c-.8 0-1.372.346-1.744 1.038s-.604 1.84-.7 3.442h4.676c0-1.56-.18-2.695-.544-3.4s-.927-1.07-1.696-1.07zm-14.29-3.03c2.064 0 3.617.714 4.66 2.14s1.563 3.535 1.563 6.323v1.68h-8.825c.044 3.338.9 5.005 2.536 5.005.66 0 1.152-.202 1.482-.608s.55-1.092.66-2.06h4.084c-.177 1.888-.797 3.322-1.86 4.298s-2.542 1.465-4.43 1.465c-2.282 0-3.972-.73-5.07-2.2s-1.647-3.716-1.647-6.768c0-3.03.58-5.334 1.745-6.915s2.867-2.37 5.105-2.37zm-.133 3.03c-.8 0-1.372.346-1.744 1.038s-.604 1.84-.7 3.442h4.676c0-1.56-.18-2.695-.544-3.4s-.927-1.07-1.696-1.07zm-29.439-8.8v23.513h4.645v-9.55h7.3v-4.15h-7.3v-5.665h7.837v-4.148zm13.7 23.477v-17.2h4.215v2.306c.46-.834 1-1.477 1.647-1.927s1.305-.675 2-.675c.352 0 .747.054 1.185.165l-.493 3.952c-.33-.087-.757-.132-1.285-.132-.792-.018-1.554.306-2.09.89-.56.594-.84 1.33-.84 2.206v10.406h-4.339zm39.813 0v-19.364h-5.335v-4.15h15.315v4.15h-5.336v19.365zm30.792 0-2.832-5.665-2.7 5.665h-4.28l4.84-8.727-4.545-8.464h4.6l2.47 5.204 2.536-5.204h4.282l-4.676 8.234 4.908 8.957zm17.652-23.514h4.644v15.083c0 2.92-.68 5.155-2.04 6.702s-3.328 2.322-5.897 2.322-4.533-.773-5.896-2.322-2.04-3.78-2.04-6.702v-15.083h4.644v15.413c0 1.537.27 2.68.807 3.424s1.366 1.12 2.486 1.12 1.948-.373 2.487-1.12.807-1.887.807-3.424v-15.413zm12.118 13.14c-1.865-.548-3.237-1.377-4.116-2.486s-1.318-2.564-1.318-4.364c0-2.085.682-3.754 2.042-5.005s3.163-1.878 5.4-1.878c2.13 0 3.788.538 4.973 1.614s1.93 2.733 2.24 4.972l-4.414.594c-.22-1.23-.548-2.103-.987-2.62s-1.087-.774-1.943-.774-1.515.247-1.977.74-.7 1.224-.7 2.2c0 .813.175 1.444.527 1.894s.955.806 1.812 1.07l2.503.8c1.338.418 2.415.94 3.227 1.564.783.594 1.397 1.384 1.78 2.29.376.9.56 1.977.56 3.228 0 2.196-.675 3.936-2.025 5.22s-3.179 1.908-5.507 1.908c-4.897 0-7.5-2.547-7.84-7.64h4.612c.1 1.34.422 2.316.938 2.93s1.3.922 2.355.922c.9 0 1.597-.27 2.1-.807s.74-1.312.74-2.322c0-.9-.203-1.614-.6-2.14s-1.048-.92-1.926-1.185l-2.438-.724z" fill="#212f63"/><path d="m140.638 5.893 1.207 4.25h49.07v-4.25zm2.7 9.463 1.213 4.25 46.373-.007v-4.25zm2.79 9.802 1.208 4.25h43.6v-4.25z" fill="#bf2032"/><path d="m195.992 2.462h.33c.364 0 .546-.143.546-.432.005-.113-.036-.223-.115-.304-.076-.076-.212-.115-.406-.115h-.354v.85zm-.52 1.295v-2.577h.964c.27 0 .502.06.698.183s.29.336.29.64c0 .153-.042.294-.126.425s-.2.223-.343.273l.584 1.053h-.584l-.444-.89h-.52v.89h-.52zm.913.774c.255.001.508-.049.743-.147.232-.097.433-.234.6-.412.174-.185.31-.402.4-.64.1-.265.15-.547.147-.831.002-.28-.048-.558-.147-.819-.098-.25-.23-.465-.4-.648-.169-.181-.374-.326-.601-.425-.234-.1-.48-.153-.743-.153-.257-.002-.512.05-.748.153-.224.099-.426.244-.591.425-.169.191-.302.41-.394.648-.097.25-.145.522-.145.82-.004.284.046.565.145.831.098.25.23.462.394.64s.363.316.59.412c.237.1.491.15.748.147zm0 .47c-.318.003-.634-.06-.927-.184-.288-.122-.538-.293-.754-.514-.221-.227-.396-.494-.515-.787-.127-.304-.19-.643-.19-1.015s.062-.71.19-1.016c.12-.293.295-.56.515-.787.215-.22.471-.394.754-.514.288-.123.596-.184.927-.184.32-.002.637.061.933.184.293.123.545.293.76.514s.388.483.515.787.2.643.2 1.016-.063.71-.2 1.015-.298.568-.515.787-.468.392-.76.514c-.295.124-.613.186-.933.184z" fill="#212f63"/></g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns:xodm="http://www.corel.com/coreldraw/odm/2003" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 2500 2500" style="enable-background:new 0 0 2500 2500;" xml:space="preserve">
<style type="text/css">
.st0{fill:none;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#2354E6;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#17E6A1;}
</style>
<g id="Layer_x0020_1">
<rect y="0" class="st0" width="2500" height="2500"></rect>
<g id="_2500576017504">
<path id="Fill-3" class="st1" d="M1250,1937.5c-379.7,0-687.5-307.8-687.5-687.5c0-379.7,307.8-687.5,687.5-687.5V0 C559.6,0,0,559.6,0,1250c0,690.3,559.6,1250,1250,1250c690.3,0,1250-559.6,1250-1250h-562.5 C1937.5,1629.7,1629.7,1937.5,1250,1937.5z"></path>
<polygon id="Fill-4" class="st2" points="1250,1250 1937.5,1250 1937.5,562.5 1250,562.5 "></polygon>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 965 B

View File

@@ -0,0 +1,22 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="100%" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve">
<path fill="#E9EAE8" opacity="1.000000" stroke="none" d=" M1.000001,121.000000 C1.000000,107.979103 1.000000,94.958214 1.330396,81.781845 C2.105629,80.808945 2.781408,80.039177 2.961370,79.167091 C6.970184,59.740398 16.508305,43.142090 30.377947,29.382053 C43.761433,16.104332 59.986267,7.182058 78.573097,2.942371 C79.482437,2.734949 80.195526,1.667158 81.000000,1.000001 C94.020897,1.000000 107.041786,1.000000 120.216652,1.335631 C126.713715,3.778750 133.179947,5.577904 139.376389,8.052591 C156.703827,14.972685 171.012131,25.956200 181.986893,41.089684 C190.099167,52.275986 196.134094,64.470306 199.117294,78.069069 C199.211044,78.496483 200.348892,78.694855 201.000000,79.000000 C201.000000,93.354225 201.000000,107.708458 200.669632,122.218155 C199.894424,123.189087 199.220856,123.956680 199.038727,124.827095 C195.802597,140.292557 188.666824,153.987869 178.511795,165.781891 C164.123367,182.492554 146.476486,194.499832 124.422401,199.082748 C123.840591,199.203659 123.469414,200.338181 123.000000,201.000000 C108.645775,201.000000 94.291542,201.000000 79.781174,200.674042 C78.977226,199.905136 78.385597,199.219894 77.673386,199.054794 C61.298405,195.258774 46.725803,187.667160 34.294682,176.602264 C18.003170,162.101318 7.102591,144.135208 2.914476,122.432388 C2.802733,121.853340 1.661271,121.473000 1.000001,121.000000 M162.957382,65.141830 C157.650208,70.691360 152.343033,76.240898 146.301605,81.755386 C145.732269,82.047028 145.042847,82.218056 144.611099,82.647896 C132.762451,94.444138 120.925987,106.252800 109.147583,118.119026 C108.427895,118.844093 108.202583,120.059868 107.093681,121.126122 C94.730469,133.412537 82.367249,145.698959 69.317253,158.025375 C62.966175,164.528809 56.615101,171.032227 49.973309,177.833344 C51.968117,178.908905 53.966496,179.986389 56.373127,181.619629 C60.931099,183.466125 65.489067,185.312622 70.530418,187.664200 C78.728378,189.429962 86.926338,191.195740 96.041878,193.048172 C135.589554,194.037872 165.346161,177.209564 183.339188,142.206635 C198.044006,113.600494 197.050034,84.312935 180.956207,55.283768 C179.868546,53.520458 178.780869,51.757149 177.222046,49.229988 C172.345459,54.885849 167.967255,59.963684 162.957382,65.141830 M108.466240,57.866222 C108.959000,57.471405 109.451752,57.076591 110.380226,56.193321 C112.081604,54.903320 113.950760,53.783173 115.456879,52.295490 C124.572472,43.291451 133.611420,34.209698 142.658142,25.136135 C143.883804,23.906826 145.009445,22.577780 146.408920,21.045849 C134.481003,14.180294 122.154709,10.443705 109.110474,9.413567 C92.088882,8.069327 75.690033,10.494845 59.889217,19.071775 C52.575058,24.411427 45.260902,29.751078 37.284908,35.186230 C4.630878,65.629463 1.719374,115.370926 21.645718,146.481766 C27.512495,140.245255 33.273243,134.121445 39.623917,127.697594 C47.726917,119.475052 55.829922,111.252510 64.624794,103.006409 C66.467079,100.992920 68.309372,98.979439 70.717163,96.651299 C82.356544,85.062904 94.022423,73.500809 105.590721,61.841888 C106.646294,60.778049 107.076263,59.093464 107.883652,57.776287 C107.883652,57.776287 107.786400,57.842323 108.466240,57.866222 z"/>
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M80.531342,1.000001 C80.195526,1.667158 79.482437,2.734949 78.573097,2.942371 C59.986267,7.182058 43.761433,16.104332 30.377947,29.382053 C16.508305,43.142090 6.970184,59.740398 2.961370,79.167091 C2.781408,80.039177 2.105629,80.808945 1.330396,81.313187 C1.000000,54.406445 1.000000,27.812887 1.000000,1.000000 C27.353823,1.000000 53.708252,1.000000 80.531342,1.000001 z"/>
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M201.000000,78.531342 C200.348892,78.694855 199.211044,78.496483 199.117294,78.069069 C196.134094,64.470306 190.099167,52.275986 181.986893,41.089684 C171.012131,25.956200 156.703827,14.972685 139.376389,8.052591 C133.179947,5.577904 126.713715,3.778750 120.685310,1.335631 C147.592621,1.000000 174.185257,1.000000 201.000000,1.000000 C201.000000,26.687134 201.000000,52.374908 201.000000,78.531342 z"/>
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M1.000001,121.468658 C1.661271,121.473000 2.802733,121.853340 2.914476,122.432388 C7.102591,144.135208 18.003170,162.101318 34.294682,176.602264 C46.725803,187.667160 61.298405,195.258774 77.673386,199.054794 C78.385597,199.219894 78.977226,199.905136 79.312515,200.674042 C53.072189,201.000000 27.144375,201.000000 1.000000,201.000000 C1.000000,174.646164 1.000000,148.291748 1.000001,121.468658 z"/>
<path fill="#ffffff" opacity="1.000000" stroke="none" d=" M123.468658,201.000000 C123.469414,200.338181 123.840591,199.203659 124.422401,199.082748 C146.476486,194.499832 164.123367,182.492554 178.511795,165.781891 C188.666824,153.987869 195.802597,140.292557 199.038727,124.827095 C199.220856,123.956680 199.894424,123.189087 200.669632,122.686813 C201.000000,148.926880 201.000000,174.853760 201.000000,201.000000 C175.312851,201.000000 149.625092,201.000000 123.468658,201.000000 z"/>
<path fill="#90BF02" opacity="1.000000" stroke="none" d=" M70.151657,96.965950 C68.309372,98.979439 66.467079,100.992920 64.276588,102.547241 C63.928383,86.369431 63.928383,70.650787 63.928383,54.871948 C55.257160,54.871948 47.224957,54.871948 39.033997,54.871948 C39.033997,79.516510 39.033997,103.757080 39.033997,127.997643 C33.273243,134.121445 27.512495,140.245255 21.645718,146.481766 C1.719374,115.370926 4.630878,65.629463 37.719608,35.462364 C39.135883,36.852516 39.984581,38.130096 41.121098,39.053391 C47.414471,44.166069 58.368134,43.270470 63.330196,37.318970 C67.946770,31.781837 66.780022,24.056263 60.570244,19.044075 C75.690033,10.494845 92.088882,8.069327 109.110474,9.413567 C122.154709,10.443705 134.481003,14.180294 146.408920,21.045849 C145.009445,22.577780 143.883804,23.906826 142.658142,25.136135 C133.611420,34.209698 124.572472,43.291451 115.456879,52.295490 C113.950760,53.783173 112.081604,54.903320 109.848991,56.507885 C108.807304,57.162407 108.296852,57.502369 107.786400,57.842323 C107.786400,57.842323 107.883652,57.776287 107.499512,57.814442 C103.123413,60.609695 99.131447,63.366795 95.061790,66.177551 C94.532784,62.603703 94.002762,59.023003 93.451675,55.299969 C85.547775,55.299969 77.881607,55.299969 70.151657,55.299969 C70.151657,69.433502 70.151657,83.199722 70.151657,96.965950 z"/>
<path fill="#90BE02" opacity="1.000000" stroke="none" d=" M181.064896,55.965897 C197.050034,84.312935 198.044006,113.600494 183.339188,142.206635 C165.346161,177.209564 135.589554,194.037872 95.558487,192.539490 C95.011642,175.365601 94.948189,158.700363 94.957329,141.656860 C95.029930,139.761459 95.029930,138.244339 95.029930,136.217133 C96.400269,137.088867 97.162216,137.573578 98.053833,138.371689 C101.904762,140.815338 105.425377,143.476242 109.385910,144.973618 C120.098732,149.023911 131.263062,149.217529 142.344849,146.892456 C159.790939,143.232071 172.455902,133.383316 177.684326,116.021088 C182.850937,98.864090 180.467819,82.760155 167.840240,68.827202 C167.809296,68.599007 167.711411,68.148964 168.030243,67.993683 C172.587692,63.880894 176.826294,59.923397 181.064896,55.965897 z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none" d=" M39.328957,127.847618 C39.033997,103.757080 39.033997,79.516510 39.033997,54.871948 C47.224957,54.871948 55.257160,54.871948 63.928383,54.871948 C63.928383,70.650787 63.928383,86.369431 63.930653,102.559021 C55.829922,111.252510 47.726917,119.475052 39.328957,127.847618 z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none" d=" M94.884727,142.035141 C94.948189,158.700363 95.011642,175.365601 95.099701,192.496170 C86.926338,191.195740 78.728378,189.429962 70.271156,186.931229 C69.954536,179.802521 69.897171,173.406799 69.921326,166.764832 C70.056465,166.354218 70.110100,166.189819 70.436935,165.848373 C78.768333,157.792603 86.826530,149.913879 94.884727,142.035141 z"/>
<path fill="#FFFFFE" opacity="1.000000" stroke="none" d=" M70.434410,96.808624 C70.151657,83.199722 70.151657,69.433502 70.151657,55.299969 C77.881607,55.299969 85.547775,55.299969 93.451675,55.299969 C94.002762,59.023003 94.532784,62.603703 95.061790,66.177551 C99.131447,63.366795 103.123413,60.609695 107.456062,57.774864 C107.076263,59.093464 106.646294,60.778049 105.590721,61.841888 C94.022423,73.500809 82.356544,85.062904 70.434410,96.808624 z"/>
<path fill="#FEFEFD" opacity="1.000000" stroke="none" d=" M60.229729,19.057926 C66.780022,24.056263 67.946770,31.781837 63.330196,37.318970 C58.368134,43.270470 47.414471,44.166069 41.121098,39.053391 C39.984581,38.130096 39.135883,36.852516 38.050526,35.414612 C45.260902,29.751078 52.575058,24.411427 60.229729,19.057926 z"/>
<path fill="#E5E5E4" opacity="1.000000" stroke="none" d=" M94.957329,141.656860 C86.826530,149.913879 78.768333,157.792603 70.368210,165.406586 C70.018867,162.756363 70.011452,160.370865 70.004036,157.985382 C82.367249,145.698959 94.730469,133.412537 107.756348,121.164223 C109.639374,121.798706 110.859749,122.395088 112.115219,123.158279 C112.150314,123.325104 112.155739,123.666389 112.012955,123.992271 C107.221497,128.898193 102.572823,133.478241 97.924149,138.058289 C97.162216,137.573578 96.400269,137.088867 95.029930,136.217133 C95.029930,138.244339 95.029930,139.761459 94.957329,141.656860 z"/>
<path fill="#81AB00" opacity="1.000000" stroke="none" d=" M112.080116,122.991463 C110.859749,122.395088 109.639374,121.798706 108.083130,121.124825 C108.202583,120.059868 108.427895,118.844093 109.147583,118.119026 C120.925987,106.252800 132.762451,94.444138 144.611099,82.647896 C145.042847,82.218056 145.732269,82.047028 146.827606,82.054634 C148.247528,83.549278 149.141449,84.744675 149.880432,86.239487 C138.292679,98.049911 126.875618,109.576714 115.395844,121.040718 C114.517334,121.918007 113.195747,122.351624 112.080116,122.991463 z"/>
<path fill="#90BE03" opacity="1.000000" stroke="none" d=" M69.839813,167.011063 C69.897171,173.406799 69.954536,179.802521 70.029465,186.678680 C65.489067,185.312622 60.931099,183.466125 56.322063,181.041183 C60.793938,175.978851 65.316872,171.494949 69.839813,167.011063 z"/>
<path fill="#82AC01" opacity="1.000000" stroke="none" d=" M69.921326,166.764832 C65.316872,171.494949 60.793938,175.978851 56.117935,180.763306 C53.966496,179.986389 51.968117,178.908905 49.973309,177.833344 C56.615101,171.032227 62.966175,164.528809 69.660645,158.005371 C70.011452,160.370865 70.018867,162.756363 70.095001,165.583633 C70.110100,166.189819 70.056465,166.354218 69.921326,166.764832 z"/>
<path fill="#E3E4E0" opacity="1.000000" stroke="none" d=" M150.035370,85.940079 C149.141449,84.744675 148.247528,83.549278 147.194733,82.072159 C152.343033,76.240898 157.650208,70.691360 163.580933,65.209869 C165.373459,66.234924 166.542435,67.191940 167.711411,68.148964 C167.711411,68.148964 167.809296,68.599007 167.557053,68.983429 C161.830566,74.973953 156.356323,80.580055 150.670471,86.124481 C150.458832,86.062805 150.035370,85.940079 150.035370,85.940079 z"/>
<path fill="#82AC02" opacity="1.000000" stroke="none" d=" M168.030243,67.993683 C166.542435,67.191940 165.373459,66.234924 163.896759,65.159714 C167.967255,59.963684 172.345459,54.885849 177.222046,49.229988 C178.780869,51.757149 179.868546,53.520458 181.010559,55.624832 C176.826294,59.923397 172.587692,63.880894 168.030243,67.993683 z"/>
<path fill="#FFFFFE" opacity="1.000000" stroke="none" d=" M108.126320,57.854275 C108.296852,57.502369 108.807304,57.162407 109.631134,56.752113 C109.451752,57.076591 108.959000,57.471405 108.126320,57.854275 z"/>
<path fill="#FEFEFC" opacity="1.000000" stroke="none" d=" M150.882095,86.186157 C156.356323,80.580055 161.830566,74.973953 167.587982,69.211624 C180.467819,82.760155 182.850937,98.864090 177.684326,116.021088 C172.455902,133.383316 159.790939,143.232071 142.344849,146.892456 C131.263062,149.217529 120.098732,149.023911 109.385910,144.973618 C105.425377,143.476242 101.904762,140.815338 98.053833,138.371689 C102.572823,133.478241 107.221497,128.898193 112.397583,124.067833 C114.508804,124.310890 116.064545,124.938728 117.680908,125.276192 C129.675720,127.780441 140.746811,126.206741 149.044968,116.391853 C156.985992,106.999374 156.451813,96.634232 150.882095,86.186157 z"/>
<path fill="#90BF02" opacity="1.000000" stroke="none" d=" M150.670471,86.124481 C156.451813,96.634232 156.985992,106.999374 149.044968,116.391853 C140.746811,126.206741 129.675720,127.780441 117.680908,125.276192 C116.064545,124.938728 114.508804,124.310890 112.540359,123.741951 C112.155739,123.666389 112.150314,123.325104 112.115219,123.158279 C113.195747,122.351624 114.517334,121.918007 115.395844,121.040718 C126.875618,109.576714 138.292679,98.049911 149.880432,86.239487 C150.035370,85.940079 150.458832,86.062805 150.670471,86.124481 z"/>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 512 512" height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m256.024 29.736-80.851 46.679 53.892 31.112 26.887-15.556 27.017 15.548 53.881-31.119z" fill="#3c77b9"/><path d="m256.036 512 202.079-116.681-.006-124.454-53.912 31.115.019 62.224-148.204 85.569-148.221-85.586-.005-62.221-53.871-31.102v124.442z" fill="#3c77b9"/><path d="m215.607 301.986-53.91 31.117 94.318 54.433 94.288-54.443-53.879-31.118 188.657-108.927-.041-62.184 26.96-15.564-.021-77.759-229.045 132.233-26.929-15.554-26.949 15.554-229.056-132.222v77.789l26.98 15.574-.01 62.153z" fill="#1f2938"/></svg>

After

Width:  |  Height:  |  Size: 643 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,13 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 180 120" width="180" height="120">
<title>seafile</title>
<defs>
<linearGradient id="g1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,114.369,-177.525,0,89.989,2.834)">
<stop offset="0" stop-color="#fad956"/>
<stop offset="1" stop-color="#ffa10f"/>
</linearGradient>
</defs>
<style>
.s0 { fill: url(#g1) }
</style>
<path class="s0" d="m1.2 52.8c0-3 2.4-5.4 5.4-5.4 1.4 0 2.7 0.6 3.6 1.5q0-0.7 0-1.4c0-9.9 8-17.9 17.9-17.9 2.5 0 4.9 0.5 7.1 1.5q0-0.8 0-1.5c0-14.8 12-26.8 26.8-26.8 14.7 0 26.6 11.9 26.8 26.6-4.8 4.2-8.7 9.6-11.2 15.7-4.8-3-10.4-4.8-16.5-4.8-12.4 0-23.2 7.1-28.3 17.8h-19.1-7.1c-3 0-5.4-2.4-5.4-5.3zm141.2-16c-6.6-6.7-15.8-10.8-25.9-10.8-18.5 0-33.8 13.7-36.3 31.5-4.5-6.1-11.8-10-20-10-13.8 0-25 11.2-25 25 0 4 0.9 7.8 2.6 11.2-8.7 1.7-15.1 8.5-15.1 16.5 0 9.4 8.8 17 19.7 17 4.7 0 9.1-1.5 12.6-4l40.2-39.5c4.4-4.1 10.3-6.6 16.8-6.6 13.6 0 24.7 10.9 25.1 24.4q0 0-0.1-0.1c0.2 4-1.8 8.1-5.7 10.3-5.3 3.1-12 1.4-15-3.7-2.9-5.1-1-11.7 4.4-14.8q1.9-1.1 3.9-1.4-1.8-0.4-3.6-0.4c-9.9 0-17.9 8-17.9 17.9 0 9.9 8 17.9 17.9 17.9q0.6 0 1.3-0.1l0.5-0.1h35.1v0.2c10.7-0.5 20.9-10.4 20.9-22.5 0-12.3-10.6-22.4-22.9-22.4q-0.1 0-0.1 0c-2 3.6-4.4 5.7-7.1 7.9 2.8-5.2 4.5-11.2 4.5-17.6-0.1-10.1-4.2-19.2-10.8-25.8z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,8 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.625 2.77295H30.3256C31.8396 2.77295 33.0669 3.99814 33.0669 5.5095C33.0669 7.02087 31.8396 8.24604 30.3256 8.24604H6.625V2.77295Z" fill="#B2CADB"/>
<path d="M12.4502 14.5747H30.3256C31.8396 14.5747 33.0669 15.7999 33.0669 17.3113C33.0669 18.8226 31.8396 20.0478 30.3256 20.0478H12.4502V14.5747Z" fill="#B2CADB"/>
<path d="M6.625 26.376H30.3256C31.8396 26.376 33.0669 27.6012 33.0669 29.1125C33.0669 30.6239 31.8396 31.8491 30.3256 31.8491H6.625V26.376Z" fill="#B2CADB"/>
<path d="M4.74009 10.2417C7.35797 10.2417 9.48018 8.12317 9.48018 5.50979C9.48018 2.8964 7.35797 0.777832 4.74009 0.777832C2.12221 0.777832 0 2.8964 0 5.50979C0 8.12317 2.12221 10.2417 4.74009 10.2417Z" fill="#47525B"/>
<path d="M13.4208 22.043C16.0387 22.043 18.1609 19.9244 18.1609 17.3111C18.1609 14.6977 16.0387 12.5791 13.4208 12.5791C10.8029 12.5791 8.68066 14.6977 8.68066 17.3111C8.68066 19.9244 10.8029 22.043 13.4208 22.043Z" fill="#47525B"/>
<path d="M4.74009 33.8448C7.35797 33.8448 9.48018 31.7262 9.48018 29.1128C9.48018 26.4994 7.35797 24.3809 4.74009 24.3809C2.12221 24.3809 0 26.4994 0 29.1128C0 31.7262 2.12221 33.8448 4.74009 33.8448Z" fill="#47525B"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -8,6 +8,7 @@ import 'package:ente_auth/utils/package_info_util.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:fk_user_agent/fk_user_agent.dart';
import 'package:flutter/foundation.dart';
import 'package:native_dio_adapter/native_dio_adapter.dart';
import 'package:uuid/uuid.dart';
int kConnectTimeout = 15000;
@@ -50,6 +51,10 @@ class Network {
},
),
);
_dio.httpClientAdapter = NativeAdapter();
_enteDio.httpClientAdapter = NativeAdapter();
_setupInterceptors(endpoint);
Bus.instance.on<EndpointUpdatedEvent>().listen((event) {

View File

@@ -1,3 +0,0 @@
import 'package:ente_auth/events/event.dart';
class OpenedSettingsEvent extends Event {}

View File

@@ -1,17 +0,0 @@
import 'dart:typed_data';
import "package:json_annotation/json_annotation.dart";
class Uint8ListConverter implements JsonConverter<Uint8List, List<int>> {
const Uint8ListConverter();
@override
Uint8List fromJson(List<int>? json) {
return json == null ? Uint8List(0) : Uint8List.fromList(json);
}
@override
List<int> toJson(Uint8List object) {
return object.toList();
}
}

View File

@@ -482,7 +482,6 @@
"importFailureDescNew": "تعذر إعراب الملف المنتقى.",
"duplicateCodes": "رموز مكررة",
"noDuplicates": "✨ لا تكرارات",
"youveNoDuplicateCodesThatCanBeCleared": "ليس لديك رموز مكررة يمكن مسحها",
"deselectAll": "ألغِ تحديد الكل",
"selectAll": "حدد الكل",
"deleteDuplicates": "احذف التكرار"

View File

@@ -499,10 +499,11 @@
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни.",
"duplicateCodes": "Повтарящи се кодове",
"noDuplicates": "✨ Няма дубликати",
"youveNoDuplicateCodesThatCanBeCleared": "Нямате повтарящи се кодове, които могат да бъдат изчистени",
"deduplicateCodes": "Премахване на повтарящи се кодове",
"deselectAll": "Демаркиране на всички",
"selectAll": "Избиране на всички",
"deleteDuplicates": "Изтриване на дубликатите",
"plainHTML": "Обикновен HTML"
"plainHTML": "Обикновен HTML",
"tellUsWhatYouThink": "Кажете ни какво мислите",
"freeStorageOfferDescription": "Използвайте промокод „AUTH“, за да получите 10% отстъпка през първата година"
}

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Usa la clau de recuperació",
"incorrectPasswordTitle": "Contrasenya incorrecta",
"welcomeBack": "Benvingut de nou!",
"emailAlreadyRegistered": "El correu electrònic ja està registrat.",
"emailNotRegistered": "El correu electrònic no està registrat.",
"madeWithLoveAtPrefix": "fet amb ❤️ a ",
"supportDevs": "Subscriu-te a <bold-green>ente</bold-green> per donar-nos suport",
"supportDiscount": "Usa el codi de descompte \"AUTH\" per obtenir un 10% de descompte el primer any",
@@ -497,10 +499,17 @@
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades.",
"duplicateCodes": "Codis duplicats",
"noDuplicates": "✨ Sense duplicats",
"youveNoDuplicateCodesThatCanBeCleared": "No teniu codis duplicats que es puguin esborrar",
"deduplicateCodes": "Desduplica codis",
"deselectAll": "Desselecciona-ho tot",
"selectAll": "Seleccionar-ho tot",
"deleteDuplicates": "Elimina duplicats",
"plainHTML": "HTML pla"
"plainHTML": "HTML pla",
"tellUsWhatYouThink": "Digueu-nos què us sembla",
"dropReview": "Deixa una ressenya a l'App/Play Store",
"supportEnte": "Donar suport a <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Dona'ns una estrella a Github",
"free5GB": "5 GB gratuïts a <bold-green>ente</bold-green> Photos",
"loginWithAuthAccount": "Inicieu sessió amb el vostre compte Auth",
"freeStorageOffer": "10% de descompte a <bold-green>ente</bold-green> photos",
"freeStorageOfferDescription": "Utilitzeu el codi \"AUTH\" per obtenir un 10% de descompte el primer any"
}

View File

@@ -495,7 +495,6 @@
"appLockOfflineModeWarning": "Zvolili jste si pokračování bez zálohování. Pokud zapomenete heslo do aplikace, přístup k datům bude uzamčen.",
"duplicateCodes": "Duplikovat kódy",
"noDuplicates": "✨ Žádné duplikáty",
"youveNoDuplicateCodesThatCanBeCleared": "Nemáte žádné duplicitní kódy k odstranění",
"deduplicateCodes": "Deduplikovat kódy",
"deselectAll": "Zrušit výběr všech položek",
"selectAll": "Vybrat vše",

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Wiederherstellungsschlüssel verwenden",
"incorrectPasswordTitle": "Falsches Passwort",
"welcomeBack": "Willkommen zurück!",
"emailAlreadyRegistered": "E-Mail ist bereits registriert.",
"emailNotRegistered": "E-Mail-Adresse nicht registriert.",
"madeWithLoveAtPrefix": "gemacht mit ❤️ bei ",
"supportDevs": "Bei <bold-green>ente</bold-green> registrieren, um das Projekt zu unterstützen",
"supportDiscount": "Benutzen Sie den Rabattcode \"AUTH\" für 10 % Rabatt im ersten Jahr",
@@ -145,6 +147,7 @@
"leaveFamily": "Familie verlassen",
"leaveFamilyMessage": "Sind Sie sicher, dass Sie den Familien-Plan verlassen wollen?",
"inFamilyPlanMessage": "Sie haben einen Familien-Plan!",
"hintForDesktop": "Klicken Sie mit der rechten Maustaste auf einen Code zum Bearbeiten oder Entfernen.",
"scan": "Scannen",
"scanACode": "Scan einen Code",
"verify": "Überprüfen Sie",
@@ -154,6 +157,7 @@
"twoFactorAuthTitle": "Zwei-Faktor-Authentifizierung",
"passkeyAuthTitle": "Passkey Authentifizierung",
"verifyPasskey": "Passkey verifizieren",
"loginWithTOTP": "Mit TOTP anmelden",
"recoverAccount": "Konto wiederherstellen",
"enterRecoveryKeyHint": "Geben Sie Ihren Wiederherstellungsschlüssel ein",
"recover": "Wiederherstellen",
@@ -255,6 +259,10 @@
"areYouSureYouWantToLogout": "Sind sie sicher, dass sie sich ausloggen möchten?",
"yesLogout": "Ja ausloggen",
"exit": "Schließen",
"theme": "Theme",
"lightTheme": "Hell",
"darkTheme": "Dunkel",
"systemTheme": "System",
"verifyingRecoveryKey": "Verifiziere Wiederherstellungsschlüssel...",
"recoveryKeyVerified": "Wiederherstellungsschlüssel verifiziert",
"recoveryKeySuccessBody": "Großartig! Ihr Wiederherstellungsschlüssel ist gültig. Vielen Dank für die Verifizierung.\n\nBitte denken sie daran, dass sie ihren Wiederherstellungsschlüssel sicher aufbewahren.",
@@ -325,6 +333,10 @@
}
}
},
"manualSort": "Benutzerdefiniert",
"editOrder": "Reihenfolge bearbeiten",
"mostFrequentlyUsed": "Häufig verwendet",
"mostRecentlyUsed": "Zuletzt verwendet",
"activeSessions": "Aktive Sitzungen",
"somethingWentWrongPleaseTryAgain": "Ein Fehler ist aufgetreten, bitte versuche es erneut",
"thisWillLogYouOutOfThisDevice": "Dadurch wirst du von diesem Gerät abgemeldet!",
@@ -444,6 +456,7 @@
"customEndpoint": "Mit {endpoint} verbunden",
"pinText": "Anpinnen",
"unpinText": "Lösen",
"pinned": "Angeheftet",
"tags": "Tags",
"createNewTag": "Neuen Tag erstellen",
"tag": "Tag",
@@ -478,5 +491,16 @@
"setNewPin": "Neue PIN festlegen",
"importFailureDescNew": "Die ausgewählte Datei konnte nicht verarbeitet werden.",
"appLockNotEnabled": "App-Sperre nicht aktiviert",
"appLockNotEnabledDescription": "Bitte aktivieren Sie die App-Sperre über Security > App-Sperre"
"appLockNotEnabledDescription": "Bitte aktivieren Sie die App-Sperre über Security > App-Sperre",
"authToViewPasskey": "Bitte authentifizieren, um deinen Passkey zu sehen",
"duplicateCodes": "Doppelte Codes",
"noDuplicates": "✨ Keine Duplikate",
"deselectAll": "Alle abwählen",
"selectAll": "Alles auswählen",
"deleteDuplicates": "Duplikate löschen",
"plainHTML": "Reines HTML",
"tellUsWhatYouThink": "Sagen Sie uns, was Sie denken",
"dropReview": "Eine Bewertung im App/Play Store ablegen",
"giveUsAStarOnGithub": "Gib uns einen Stern auf Github",
"loginWithAuthAccount": "Mit Ihrem Auth Account anmelden"
}

View File

@@ -499,7 +499,7 @@
"appLockOfflineModeWarning": "You have chosen to proceed without backups. If you forget your applock, you will be locked out from accessing your data.",
"duplicateCodes": "Duplicate codes",
"noDuplicates": "✨ No duplicates",
"youveNoDuplicateCodesThatCanBeCleared": "You've no duplicate codes that can be cleared",
"youveNoDuplicateCodesThatCanBeCleared": "You don't have any duplicate codes that can be cleared",
"deduplicateCodes": "Deduplicate codes",
"deselectAll": "Deselect all",
"selectAll": "Select all",

View File

@@ -499,10 +499,16 @@
"appLockOfflineModeWarning": "Has elegido proceder sin copia de seguridad. Si olvidas el código de desbloqueo de la aplicación, se bloqueará el acceso a sus datos.",
"duplicateCodes": "Duplicar códigos",
"noDuplicates": "✨ No hay duplicados",
"youveNoDuplicateCodesThatCanBeCleared": "No tienes códigos duplicados que se puedan borrar",
"deduplicateCodes": "Desduplicar códigos",
"deselectAll": "Deseleccionar todo",
"selectAll": "Seleccionar todo",
"deleteDuplicates": "Eliminar duplicados",
"plainHTML": "HTML plano"
"plainHTML": "HTML plano",
"tellUsWhatYouThink": "Cuéntanos cuál es su opinión",
"dropReview": "Danos una reseña en la App/Play Store",
"supportEnte": "Apoya a <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Danos una estrella en GitHub",
"free5GB": "5 GB gratis en <bold-green>ente</bold-green> Fotos",
"freeStorageOffer": "10% de descuento en <bold-green>ente</bold-green> fotos",
"freeStorageOfferDescription": "Usa el cupón \"AUTH\" para obtener un 10% de descuento en el primer año"
}

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données.",
"duplicateCodes": "Codes dupliqués",
"noDuplicates": "✨ Pas de doublons",
"youveNoDuplicateCodesThatCanBeCleared": "Vous n'avez aucun code en doublon pouvant être supprimé",
"deduplicateCodes": "Codes dédupliqués",
"deselectAll": "Tout désélectionner",
"selectAll": "Tout sélectionner",

View File

@@ -6,12 +6,15 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "अपने 2FA कोड का सुरक्षित रूप से बैकअप लें",
"onBoardingGetStarted": "प्रारंभ करें",
"setupFirstAccount": "अपना पहला अकाउंट सेटअप करें",
"importScanQrCode": "एक QR कोड स्कैन करें",
"qrCode": "QR कोड",
"importEnterSetupKey": "",
"importAccountPageTitle": "अकाउंट विवरण डालें",
"secretCanNotBeEmpty": "सीक्रेट खाली नहीं हो सकता है",
"bothIssuerAndAccountCanNotBeEmpty": "दोनों इश्यूअर और अकाउंट ख़ाली नहीं हो सकते है",
"incorrectDetails": "ग़लत विवरण",
"pleaseVerifyDetails": "कृपया विवरण सत्यापित करें और पुनः प्रयास करें",
"codeIssuerHint": "ज़ारीकर्ता",
@@ -32,18 +35,24 @@
},
"codeAccountHint": "अकाउंट (you@domain.com)",
"codeTagHint": "टैग",
"accountKeyType": "की का प्रकार",
"sessionExpired": "सत्र की अवधि समाप्त",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "कृपया फिर से लॉगिन करें",
"loggingOut": "लॉग आउट हो रहा है...",
"timeBasedKeyType": "समय आधारित (TOTP)",
"counterBasedKeyType": "काउंटर आधारित (HOTP)",
"saveAction": "सेव करें",
"nextTotpTitle": "अगला",
"deleteCodeTitle": "कोड डिलीट करें?",
"deleteCodeMessage": "क्या आप वाकई इस कोड को हटाना चाहते हैं? इस क्रिया को वापस नहीं किया जा सकता",
"trashCode": "?",
"trashCodeMessage": "क्या आप वाकई {account} के लिए कोड नष्ट करना चाहते हैं?",
"trash": "नष्ट करें",
"viewLogsAction": "लॉग देखें",
"sendLogsDescription": "यह आपकी समस्या को सुलझाने में हमारी सहायता के लिए लॉग भेजेगा। हालाँकि हम यह सुनिश्चित करने के लिए सावधानी बरतते हैं कि संवेदनशील जानकारी लॉग न हो, हम आपको इन लॉग को साझा करने से पहले देखने के लिए प्रोत्साहित करते हैं।",
"preparingLogsTitle": "लॉग तैयार किये जा रहे हैं...",
"emailLogsTitle": "लॉग ईमेल करें",
"emailLogsMessage": "कृपया {email} पर लॉग ईमेल करें",
@@ -57,6 +66,7 @@
"copyEmailAction": "ईमेल कॉपी करें",
"exportLogsAction": "लॉग एक्सपोर्ट करें",
"reportABug": "बग रिपोर्ट करें",
"crashAndErrorReporting": "क्रैश एवं त्रुटि रिपोर्टिंग",
"reportBug": "बग रिपोर्ट करें",
"emailUsMessage": "कृपया हमें {email} पर ईमेल करें",
"@emailUsMessage": {
@@ -69,14 +79,37 @@
"contactSupport": "सपोर्ट टीम से संपर्क करें",
"rateUsOnStore": "हमें {storeName} पर रेट करें",
"blog": "ब्लॉग",
"merchandise": "मर्चेंडाइज़",
"verifyPassword": "पासवर्ड सत्यापित करें",
"pleaseWait": "कृपया प्रतीक्षा करें...",
"generatingEncryptionKeysTitle": "एन्क्रिप्शन कुंजियाँ उत्पन्न हो रही हैं...",
"recreatePassword": "पासवर्ड दोबारा बनाएं",
"recreatePasswordMessage": "वर्तमान डिवाइस आपके पासवर्ड को सत्यापित करने के लिए पर्याप्त शक्तिशाली नहीं है, इसलिए हमें इसे सभी डिवाइसों के साथ काम करने वाले तरीके से एक बार पुन: उत्पन्न करने की आवश्यकता है। \n\nकृपया अपनी पुनर्प्राप्ति कुंजी का उपयोग करके लॉगिन करें और अपना पासवर्ड पुनः बनाएं (यदि आप चाहें तो उसी का दोबारा उपयोग कर सकते हैं)।",
"useRecoveryKey": "रिकवरी कुंजी का उपयोग करें",
"incorrectPasswordTitle": "ग़लत पासवर्ड",
"welcomeBack": "आपका पुनः स्वागत है!",
"emailAlreadyRegistered": "ईमेल पहले से ही पंजीकृत है।",
"emailNotRegistered": "ईमेल पंजीकृत नहीं है।",
"madeWithLoveAtPrefix": " ❤️ से बनाया गया ",
"supportDevs": "हमें समर्थन देने के लिए <bold-green>ente</bold-green> की सदस्यता लें",
"supportDiscount": "पहले साल 10% छूट पाने के लिए कूपन कोड \"AUTH\" का उपयोग करें",
"changeEmail": "ईमेल बदलें",
"changePassword": "पासवर्ड बदलें",
"data": "डेटा",
"importCodes": "कोड आयात करें",
"importTypePlainText": "साधारण टेक्स्ट",
"importTypeEnteEncrypted": "Ente द्वारा एनक्रिप्टेड टेक्स्ट",
"passwordForDecryptingExport": "डीक्रिप्ट करने के लिए पासवर्ड",
"passwordEmptyError": "पासवर्ड रिक्त नहीं हो सकता है",
"importFromApp": "{appName} से कोड इंपोर्ट करें",
"importGoogleAuthGuide": "ट्रांसफर अकाउंट्स\" विकल्प का उपयोग करके अपने खातों को Google प्रमाणक से एक क्यूआर कोड में निर्यात करें। फिर किसी अन्य डिवाइस का उपयोग करके QR कोड को स्कैन करें।\n\nटिप: क्यूआर कोड की तस्वीर लेने के लिए आप अपने लैपटॉप के वेबकैम का उपयोग कर सकते हैं।",
"importSelectJsonFile": "JSON फाइल चुनें",
"importSelectAppExport": "{appName} की निर्यात फ़ाइल का चयन करें",
"importEnteEncGuide": "Ente से निर्यात की गई एन्क्रिप्टेड JSON फ़ाइल का चयन करें",
"importRaivoGuide": "Raivo की सेटिंग्स में \"एक्सपोर्ट ओटीपी टू जिप आर्काइव\" विकल्प का उपयोग करें।\n\nज़िप फ़ाइल निकालें और JSON फ़ाइल आयात करें।",
"importBitwardenGuide": "बिटवर्डन टूल्स के भीतर \"एक्सपोर्ट वॉल्ट\" विकल्प का उपयोग करें और अनएन्क्रिप्टेड JSON फ़ाइल आयात करें।",
"importAegisGuide": "Aegis की सेटिंग्स में \"एक्सपोर्ट द वॉल्ट\" विकल्प का उपयोग करें।\n\nयदि आपकी वॉल्ट एन्क्रिप्टेड है, तो आपको वॉल्ट को डिक्रिप्ट करने के लिए वॉल्ट पासवर्ड दर्ज करना होगा।",
"import2FasGuide": "2FAS में \"सेटिंग्स->बैकअप-एक्सपोर्ट\" विकल्प का उपयोग करें।\n\nयदि आपका बैकअप एन्क्रिप्टेड है, तो आपको बैकअप को डिक्रिप्ट करने के लिए पासवर्ड दर्ज करना होगा",
"importLabel": "इंपोर्ट",
"selectFile": "फ़ाइल का चयन करें",
"emailVerificationToggle": "ईमेल सत्यापन",

View File

@@ -499,10 +499,17 @@
"appLockOfflineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Ha elfelejti az alkalmazászárat, akkor nem férhet hozzá adataihoz.",
"duplicateCodes": "Ismétlődő kódok",
"noDuplicates": "✨Nincs ismétlődés",
"youveNoDuplicateCodesThatCanBeCleared": "Nincsenek ismétlődő kódjai, amelyeket törölni lehetne",
"deduplicateCodes": "Ismétlődő kódok",
"deselectAll": "Összes kijelölés megszüntetése",
"selectAll": "Összes kijelölése",
"deleteDuplicates": "Ismétlődések törlése",
"plainHTML": "Sima HTML kód"
"plainHTML": "Sima HTML kód",
"tellUsWhatYouThink": "Mondja el mit gondol",
"dropReview": "Írjon véleményt az App/Play Store-ban",
"supportEnte": "Támogassa <bold-green>ente <bold-green>",
"giveUsAStarOnGithub": "Adj nekünk egy csillagot a Githubon",
"free5GB": "5GB ingyen <bold-green>ente <bold-green> Photos",
"loginWithAuthAccount": "Jelentkezzen be Auth fiókjával",
"freeStorageOffer": "10% kedvezmény on <bold-green>ente<bold-green> photos",
"freeStorageOfferDescription": "Használja az \"AUTH\" kódot, hogy 10% kedvezményt kapjon az első évben"
}

View File

@@ -497,7 +497,6 @@
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda.",
"duplicateCodes": "Kode duplikat",
"noDuplicates": "✨ Tak ada duplikat",
"youveNoDuplicateCodesThatCanBeCleared": "Kamu tidak memiliki kode duplikat yang dapat dihapus",
"deduplicateCodes": "Hapus kode duplikat",
"deselectAll": "Batalkan semua pilihan",
"selectAll": "Pilih semua",

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "Hai scelto di procedere senza backup. Se dimentichi il tuo codice di blocco dell'app, non potrai più accedere ai tuoi dati.",
"duplicateCodes": "Codici duplicati",
"noDuplicates": "✨ Nessun doppione",
"youveNoDuplicateCodesThatCanBeCleared": "Non ci sono codici duplicati che possono essere cancellati",
"deduplicateCodes": "Codici deduplicati",
"deselectAll": "Deselezionare tutti",
"selectAll": "Seleziona tutti",

View File

@@ -499,7 +499,17 @@
"appLockOfflineModeWarning": "バックアップなしで進むことを選択しました。アプリロックを忘れると、データにアクセスできなくなります。",
"duplicateCodes": "重複コード",
"noDuplicates": "✨ 重複なし",
"deduplicateCodes": "重複コード",
"deselectAll": "すべての選択を解除",
"selectAll": "すべて選択",
"deleteDuplicates": "重複を削除",
"plainHTML": "Plain HTML",
"tellUsWhatYouThink": "ご意見をお聞かせください",
"loginWithAuthAccount": "認証アカウントでログイン"
"dropReview": "App/Playストアにレビューを投稿する",
"supportEnte": "<bold-green>ente</bold-green>をサポートする",
"giveUsAStarOnGithub": "Githubで星をつける",
"free5GB": "<bold-green>ente</bold-green>フォトで5GB無料",
"loginWithAuthAccount": "認証アカウントでログイン",
"freeStorageOffer": "<bold-green>ente</bold-green>の写真が10%オフ",
"freeStorageOfferDescription": "クーポンコード \"AUTH\" の使用で初年度が10%オフになります"
}

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. App 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
"duplicateCodes": "중복된 코드",
"noDuplicates": "✨ 중복 없음",
"youveNoDuplicateCodesThatCanBeCleared": "지울 수 있는 중복 코드가 없습니다",
"deduplicateCodes": "중복된 코드 제거",
"deselectAll": "모두 선택 해제",
"selectAll": "모두 선택",

View File

@@ -499,11 +499,15 @@
"appLockOfflineModeWarning": "Pasirinkote tęsti be atsarginių kopijų. Jei pamiršite programos užraktą, jums bus užrakinta prieiga prie duomenų.",
"duplicateCodes": "Dubliuoti kodus",
"noDuplicates": "✨ Dublikatų nėra",
"youveNoDuplicateCodesThatCanBeCleared": "Neturite dubliuotų kodų, kuriuos būtų galima išvalyti.",
"deduplicateCodes": "Atdubliuoti kodus",
"deselectAll": "Naikinti visų pasirinkimą",
"selectAll": "Pasirinkti viską",
"deleteDuplicates": "Ištrinti dublikatus",
"plainHTML": "Grynasis HTML",
"tellUsWhatYouThink": "Pasakykite mums, ką manote",
"giveUsAStarOnGithub": "Suteikite mums žvaigždutę platformoje „Github“",
"free5GB": "5 GB nemokami programai „<bold-green>ente</bold-green>“ nuotraukos",
"loginWithAuthAccount": "Prisijungti su jūsų „Auth“ paskyra",
"freeStorageOffer": "10 % nuolaida programai „<bold-green>ente</bold-green>“ nuotraukos",
"freeStorageOfferDescription": "Naudokite kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams. "
}

View File

@@ -1 +1,28 @@
{}
{
"blog": "ബ്ലോഗ്",
"verifyPassword": "പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക",
"recreatePassword": "പാസ്‌വേഡ് പുനഃസൃഷ്ടിക്കുക",
"incorrectPasswordTitle": "തെറ്റായ പാസ്‌വേഡ്",
"welcomeBack": "വീണ്ടും സ്വാഗതം!",
"emailAlreadyRegistered": "ഇമെയിൽ ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്.",
"emailNotRegistered": "ഇമെയിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ല.",
"changeEmail": "ഇമെയിൽ മാറ്റുക",
"changePassword": "പാസ്സ്‌വേർഡ് മാറ്റുക",
"ok": "ശരി",
"cancel": "റദ്ദാക്കുക",
"yes": "അതെ",
"no": "അല്ല",
"email": "ഇമെയിൽ",
"somethingWentWrongMessage": "എന്തോ കുഴപ്പമുണ്ടായി, ദയവായി വീണ്ടും ശ്രമിക്കുക",
"inFamilyPlanMessage": "നിങ്ങൾ ഒരു ഫാമിലി പ്ലാനിലാണ്!",
"scan": "സ്കാൻ ചെയ്യുക",
"scanACode": "കോഡ് സ്കാൻ ചെയ്യുക",
"verify": "പരിശോധിക്കുക",
"verifyEmail": "ഇമെയിൽ സ്ഥിരീകരിക്കുക",
"enterCodeHint": "നിങ്ങളുടെ ഓതന്റിക്കേറ്റർ ആപ്പിൽ നിന്നുള്ള 6 അക്ക കോഡ് നൽകുക",
"twoFactorAuthTitle": "ടു-ഫാക്ടർ ആധികാരികത",
"createNewAccount": "പുതിയ അക്കൗണ്ട് സൃഷ്ടിക്കുക",
"confirmPassword": "പാസ്വേഡ് സ്ഥിരീകരിക്കുക",
"language": "ഭാഷ",
"security": "സുരക്ഷ"
}

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "Je hebt ervoor gekozen om verder te gaan zonder backups. Als je jouw applock vergeet, wordt je uitgesloten van toegang tot je gegevens.",
"duplicateCodes": "Dubbele codes",
"noDuplicates": "✨ Geen dubbele",
"youveNoDuplicateCodesThatCanBeCleared": "Je hebt geen dubbele codes die kunnen worden gewist",
"deduplicateCodes": "Dubbele codes",
"deselectAll": "Alles deselecteren",
"selectAll": "Alles selecteren",

View File

@@ -499,7 +499,7 @@
"appLockOfflineModeWarning": "Wybrano kontynuowanie bez kopii zapasowych. Jeśli zapomnisz blokady aplikacji, utracisz dostęp do swoich danych.",
"duplicateCodes": "Zduplikowane kody",
"noDuplicates": "✨ Brak duplikatów",
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz duplikatów kodów, które mogą być wyczyszczone",
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz żadnych duplikatów kodów do usunięcia",
"deduplicateCodes": "Deduplikuj kody",
"deselectAll": "Odznacz wszystko",
"selectAll": "Zaznacz wszystko",

View File

@@ -499,7 +499,7 @@
"appLockOfflineModeWarning": "Você prosseguiu sem cópias de segurança. Caso, se esqueça de seu aplicativo de bloqueio, você não poderá mais acessar seus dados.",
"duplicateCodes": "Duplicar códigos",
"noDuplicates": "✨ Sem duplicados",
"youveNoDuplicateCodesThatCanBeCleared": "Você não possui códigos duplicados para limpar",
"youveNoDuplicateCodesThatCanBeCleared": "Você não possui códigos duplicados que possam ser excluídos",
"deduplicateCodes": "Desduplicar códigos",
"deselectAll": "Deselecionar tudo",
"selectAll": "Selecionar tudo",

View File

@@ -451,7 +451,6 @@
"appLockOfflineModeWarning": "Du har valt att fortsätta utan säkerhetskopior. Om du glömmer ditt applås, kommer du att bli utelåst från att komma åt dina data.",
"duplicateCodes": "Dubblettkoder",
"noDuplicates": "✨ Inga dubbletter",
"youveNoDuplicateCodesThatCanBeCleared": "Du har inga dubblettkoder som kan rensas bort",
"deduplicateCodes": "Deduplicera koder",
"deselectAll": "Avmarkera alla",
"selectAll": "Markera alla",

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir.",
"duplicateCodes": "Yinelenen kodlar",
"noDuplicates": "✨ Yinelenen yok",
"youveNoDuplicateCodesThatCanBeCleared": "Temizlenebilecek yinelenen kodunuz yok",
"deduplicateCodes": "Kodları tekilleştir",
"deselectAll": "Tümünün seçimini kaldır",
"selectAll": "Tümünü seç",

View File

@@ -497,7 +497,6 @@
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано.",
"duplicateCodes": "Дублікати кодів",
"noDuplicates": "✨ Немає дублікатів",
"youveNoDuplicateCodesThatCanBeCleared": "У вас немає дублікатів кодів, які можна очистити",
"deduplicateCodes": "Дедуплікувати коди",
"deselectAll": "Зняти виділення",
"selectAll": "Вибрати все",

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "Bạn đã chọn tiếp tục mà không có bản sao lưu. Nếu bạn quên khóa ứng dụng, bạn sẽ bị khóa khỏi việc truy cập dữ liệu của mình.",
"duplicateCodes": "Mã trùng lặp",
"noDuplicates": "✨ Không có trùng lặp",
"youveNoDuplicateCodesThatCanBeCleared": "Bạn không có mã trùng lặp nào có thể được xóa",
"deduplicateCodes": "Loại bỏ mã trùng lặp",
"deselectAll": "Bỏ chọn tất cả",
"selectAll": "Chọn tất cả",

View File

@@ -499,7 +499,6 @@
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。",
"duplicateCodes": "重复代码",
"noDuplicates": "✨ 没有重复",
"youveNoDuplicateCodesThatCanBeCleared": "您没有可清除的重复代码",
"deduplicateCodes": "删除重复代码",
"deselectAll": "取消全选",
"selectAll": "全选",

View File

@@ -1,73 +0,0 @@
import 'dart:convert';
const visibilityVisible = 0;
const visibilityArchive = 1;
const magicKeyVisibility = 'visibility';
const pubMagicKeyEditedTime = 'editedTime';
const pubMagicKeyEditedName = 'editedName';
class MagicMetadata {
// 0 -> visible
// 1 -> archived
// 2 -> hidden etc?
int visibility;
MagicMetadata({required this.visibility});
factory MagicMetadata.fromEncodedJson(String encodedJson) =>
MagicMetadata.fromJson(jsonDecode(encodedJson));
factory MagicMetadata.fromJson(dynamic json) => MagicMetadata.fromMap(json);
static fromMap(Map<String, dynamic>? map) {
if (map == null) return null;
return MagicMetadata(
visibility: map[magicKeyVisibility] ?? visibilityVisible,
);
}
}
class PubMagicMetadata {
int? editedTime;
String? editedName;
PubMagicMetadata({this.editedTime, this.editedName});
factory PubMagicMetadata.fromEncodedJson(String encodedJson) =>
PubMagicMetadata.fromJson(jsonDecode(encodedJson));
factory PubMagicMetadata.fromJson(dynamic json) =>
PubMagicMetadata.fromMap(json);
static fromMap(Map<String, dynamic>? map) {
if (map == null) return null;
return PubMagicMetadata(
editedTime: map[pubMagicKeyEditedTime],
editedName: map[pubMagicKeyEditedName],
);
}
}
class CollectionMagicMetadata {
// 0 -> visible
// 1 -> archived
// 2 -> hidden etc?
int visibility;
CollectionMagicMetadata({required this.visibility});
factory CollectionMagicMetadata.fromEncodedJson(String encodedJson) =>
CollectionMagicMetadata.fromJson(jsonDecode(encodedJson));
factory CollectionMagicMetadata.fromJson(dynamic json) =>
CollectionMagicMetadata.fromMap(json);
static fromMap(Map<String, dynamic>? map) {
if (map == null) return null;
return CollectionMagicMetadata(
visibility: map[magicKeyVisibility] ?? visibilityVisible,
);
}
}

View File

@@ -1,6 +0,0 @@
class PublicKey {
final String email;
final String publicKey;
PublicKey(this.email, this.publicKey);
}

View File

@@ -1,23 +0,0 @@
import 'package:ente_auth/core/configuration.dart';
import 'package:flutter/foundation.dart';
class FeatureFlagService {
FeatureFlagService._privateConstructor();
static final FeatureFlagService instance =
FeatureFlagService._privateConstructor();
static final _internalUserIDs = const String.fromEnvironment(
"internal_user_ids",
defaultValue: "1,2,3,4,191,125,1580559962388044,1580559962392434,10000025",
).split(",").map((element) {
return int.parse(element);
}).toSet();
bool isInternalUserOrDebugBuild() {
final String? email = Configuration.instance.getEmail();
final userID = Configuration.instance.getUserID();
return (email != null && email.endsWith("@ente.io")) ||
_internalUserIDs.contains(userID) ||
kDebugMode;
}
}

View File

@@ -6,7 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:window_manager/window_manager.dart';
class WindowListenerService {
static const double minWindowHeight = 320.0;
static const double minWindowHeight = 600.0;
static const double minWindowWidth = 800.0;
static const double maxWindowHeight = 8192.0;
static const double maxWindowWidth = 8192.0;

View File

@@ -1,14 +0,0 @@
import 'package:shared_preferences/shared_preferences.dart';
class UserStore {
UserStore._privateConstructor();
// ignore: unused_field
late SharedPreferences _preferences;
static final UserStore instance = UserStore._privateConstructor();
Future<void> init() async {
_preferences = await SharedPreferences.getInstance();
}
}

View File

@@ -113,7 +113,7 @@ class _LoginPasswordVerificationPageState
);
} else {
_logger.severe('API failure during SRP login', e, s);
if (e.type == DioExceptionType.unknown) {
if (e.type == DioExceptionType.connectionError) {
await _showContactSupportDialog(
context,
context.l10n.noInternetConnection,

View File

@@ -1,25 +0,0 @@
import 'package:flutter/material.dart';
class BottomShadowWidget extends StatelessWidget {
final double offsetDy;
final Color? shadowColor;
const BottomShadowWidget({this.offsetDy = 28, this.shadowColor, super.key});
@override
Widget build(BuildContext context) {
return Container(
height: 8,
decoration: BoxDecoration(
color: Colors.transparent,
boxShadow: [
BoxShadow(
color: shadowColor ?? Theme.of(context).colorScheme.surface,
spreadRadius: 42,
blurRadius: 42,
offset: Offset(0, offsetDy), // changes position of shadow
),
],
),
);
}
}

View File

@@ -1,49 +0,0 @@
import 'package:ente_auth/ente_theme_data.dart';
import 'package:flutter/material.dart';
class LinearProgressDialog extends StatefulWidget {
final String message;
const LinearProgressDialog(this.message, {super.key});
@override
LinearProgressDialogState createState() => LinearProgressDialogState();
}
class LinearProgressDialogState extends State<LinearProgressDialog> {
double? _progress;
@override
void initState() {
_progress = 0;
super.initState();
}
void setProgress(double progress) {
setState(() {
_progress = progress;
});
}
@override
Widget build(BuildContext context) {
return PopScope(
canPop: false,
child: AlertDialog(
title: Text(
widget.message,
style: const TextStyle(
fontSize: 16,
),
textAlign: TextAlign.center,
),
content: LinearProgressIndicator(
value: _progress,
valueColor: AlwaysStoppedAnimation<Color>(
Theme.of(context).colorScheme.alternativeColor,
),
),
),
);
}
}

View File

@@ -1,98 +0,0 @@
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:flutter/material.dart';
class RenameDialog extends StatefulWidget {
final String name;
final String type;
final int maxLength;
const RenameDialog(this.name, this.type, {super.key, this.maxLength = 100});
@override
State<RenameDialog> createState() => _RenameDialogState();
}
class _RenameDialogState extends State<RenameDialog> {
String? _newName;
@override
void initState() {
super.initState();
_newName = widget.name;
}
@override
Widget build(BuildContext context) {
return AlertDialog(
title: const Text("Enter a new name"),
content: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormField(
decoration: InputDecoration(
hintText: '${widget.type} name',
hintStyle: const TextStyle(
color: Colors.white30,
),
contentPadding: const EdgeInsets.all(12),
),
onChanged: (value) {
setState(() {
_newName = value;
});
},
autocorrect: false,
keyboardType: TextInputType.text,
initialValue: _newName,
autofocus: true,
),
],
),
),
actions: [
TextButton(
child: const Text(
"Cancel",
style: TextStyle(
color: Colors.redAccent,
),
),
onPressed: () {
Navigator.of(context).pop(null);
},
),
TextButton(
child: Text(
"Rename",
style: TextStyle(
color: Theme.of(context).colorScheme.onSurface,
),
),
onPressed: () {
if (_newName!.trim().isEmpty) {
showErrorDialog(
context,
"Empty name",
"${widget.type} name cannot be empty",
);
return;
}
if (_newName!.trim().length > widget.maxLength) {
showErrorDialog(
context,
"Name too large",
"${widget.type} name should be less than ${widget.maxLength} characters",
);
return;
}
Navigator.of(context).pop(_newName!.trim());
},
),
],
);
}
}

View File

@@ -1,41 +0,0 @@
import 'package:ente_auth/core/event_bus.dart';
import 'package:ente_auth/events/opened_settings_event.dart';
import 'package:flutter/material.dart';
class HomeHeaderWidget extends StatefulWidget {
final Widget centerWidget;
const HomeHeaderWidget({required this.centerWidget, super.key});
@override
State<HomeHeaderWidget> createState() => _HomeHeaderWidgetState();
}
class _HomeHeaderWidgetState extends State<HomeHeaderWidget> {
@override
Widget build(BuildContext context) {
final hasNotch = View.of(context).viewPadding.top > 65;
return Padding(
padding: EdgeInsets.fromLTRB(4, hasNotch ? 4 : 8, 4, 4),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
IconButton(
visualDensity: const VisualDensity(horizontal: -2, vertical: -2),
onPressed: () {
Scaffold.of(context).openDrawer();
Bus.instance.fire(OpenedSettingsEvent());
},
splashColor: Colors.transparent,
icon: const Icon(
Icons.menu_outlined,
),
),
AnimatedSwitcher(
duration: const Duration(milliseconds: 250),
child: widget.centerWidget,
),
],
),
);
}
}

View File

@@ -1,69 +0,0 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:ente_auth/ui/account/delete_account_page.dart';
import 'package:ente_auth/ui/components/captioned_text_widget.dart';
import 'package:ente_auth/ui/components/expandable_menu_item_widget.dart';
import 'package:ente_auth/ui/components/menu_item_widget.dart';
import 'package:ente_auth/ui/settings/common_settings.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/navigation_util.dart';
import 'package:flutter/material.dart';
class DangerSectionWidget extends StatelessWidget {
const DangerSectionWidget({super.key});
@override
Widget build(BuildContext context) {
return ExpandableMenuItemWidget(
title: context.l10n.exit,
selectionOptionsWidget: _getSectionOptions(context),
leadingIcon: Icons.logout_outlined,
);
}
Widget _getSectionOptions(BuildContext context) {
return Column(
children: [
sectionOptionSpacing,
MenuItemWidget(
captionedTextWidget: CaptionedTextWidget(
title: context.l10n.logout,
),
pressedColor: getEnteColorScheme(context).fillFaint,
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async {
_onLogoutTapped(context);
},
),
sectionOptionSpacing,
MenuItemWidget(
captionedTextWidget: CaptionedTextWidget(
title: context.l10n.deleteAccount,
),
pressedColor: getEnteColorScheme(context).fillFaint,
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async {
// ignore: unawaited_futures
routeToPage(context, const DeleteAccountPage());
},
),
sectionOptionSpacing,
],
);
}
void _onLogoutTapped(BuildContext context) {
showChoiceActionSheet(
context,
title: context.l10n.areYouSureYouWantToLogout,
firstButtonLabel: context.l10n.yesLogout,
isCritical: true,
firstButtonOnTap: () async {
await UserService.instance.logout(context);
},
);
}
}

View File

@@ -1,94 +0,0 @@
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/ui/settings/common_settings.dart';
import 'package:ente_auth/ui/settings/settings_section_title.dart';
import 'package:ente_auth/ui/settings/settings_text_item.dart';
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
import 'package:expandable/expandable.dart';
import 'package:flutter/material.dart';
class DebugSectionWidget extends StatelessWidget {
const DebugSectionWidget({super.key});
@override
Widget build(BuildContext context) {
// This is a debug only section not shown to end users, so these strings are
// not translated.
return ExpandablePanel(
header: const SettingsSectionTitle("Debug"),
collapsed: Container(),
expanded: _getSectionOptions(context),
theme: getExpandableTheme(),
);
}
Widget _getSectionOptions(BuildContext context) {
return Column(
children: [
GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () async {
_showKeyAttributesDialog(context);
},
child: const SettingsTextItem(
text: "Key attributes",
icon: Icons.navigate_next,
),
),
],
);
}
void _showKeyAttributesDialog(BuildContext context) {
final l10n = context.l10n;
final keyAttributes = Configuration.instance.getKeyAttributes()!;
final AlertDialog alert = AlertDialog(
title: const Text("key attributes"),
content: SingleChildScrollView(
child: Column(
children: [
const Text(
"Key",
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(CryptoUtil.bin2base64(Configuration.instance.getKey()!)),
const Padding(padding: EdgeInsets.all(12)),
const Text(
"Encrypted Key",
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(keyAttributes.encryptedKey),
const Padding(padding: EdgeInsets.all(12)),
const Text(
"Key Decryption Nonce",
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(keyAttributes.keyDecryptionNonce),
const Padding(padding: EdgeInsets.all(12)),
const Text(
"KEK Salt",
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(keyAttributes.kekSalt),
const Padding(padding: EdgeInsets.all(12)),
],
),
),
actions: [
TextButton(
child: Text(l10n.ok),
onPressed: () {
Navigator.of(context, rootNavigator: true).pop('dialog');
},
),
],
);
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
}

View File

@@ -1,34 +0,0 @@
import 'package:ente_auth/l10n/l10n.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
class MadeWithLoveWidget extends StatelessWidget {
const MadeWithLoveWidget({
super.key,
});
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
return GestureDetector(
onTap: () {
launchUrl(Uri.parse("https://ente.io"));
},
child: RichText(
text: TextSpan(
text: l10n.madeWithLoveAtPrefix,
style: DefaultTextStyle.of(context).style,
children: const <TextSpan>[
TextSpan(
text: 'ente.io',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.green,
),
),
],
),
),
);
}
}

View File

@@ -1,35 +0,0 @@
import 'dart:io';
import 'package:flutter/material.dart';
class SettingsTextItem extends StatelessWidget {
final String text;
final IconData icon;
const SettingsTextItem({
super.key,
required this.text,
required this.icon,
});
@override
Widget build(BuildContext context) {
return Column(
children: [
Padding(padding: EdgeInsets.all(Platform.isIOS ? 4 : 6)),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Align(
alignment: Alignment.centerLeft,
child: Text(text, style: Theme.of(context).textTheme.titleMedium),
),
Icon(icon),
],
),
Padding(padding: EdgeInsets.all(Platform.isIOS ? 4 : 6)),
],
);
}
}

View File

@@ -1,83 +0,0 @@
import 'package:dotted_border/dotted_border.dart';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/subscription.dart';
import 'package:ente_auth/services/billing_service.dart';
import 'package:ente_auth/theme/ente_theme.dart';
import 'package:flutter/material.dart';
import 'package:styled_text/styled_text.dart';
import 'package:url_launcher/url_launcher.dart';
class SupportDevWidget extends StatelessWidget {
const SupportDevWidget({
super.key,
});
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
// fetch
if (Configuration.instance.hasConfiguredAccount()) {
return FutureBuilder<Subscription>(
future: BillingService.instance.getSubscription(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final subscription = snapshot.data;
if (subscription != null && subscription.productID == "free") {
return buildWidget(l10n, context);
}
}
return const SizedBox.shrink();
},
);
} else {
return buildWidget(l10n, context);
}
}
Widget buildWidget(AppLocalizations l10n, BuildContext context) {
return GestureDetector(
onTap: () {
launchUrl(Uri.parse("https://ente.io"));
},
child: DottedBorder(
borderType: BorderType.RRect,
radius: const Radius.circular(12),
padding: const EdgeInsets.all(6),
dashPattern: const <double>[3, 3],
color: getEnteColorScheme(context).primaryGreen,
child: ClipRRect(
borderRadius: const BorderRadius.all(Radius.circular(12)),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 6),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
StyledText(
text: l10n.supportDevs,
style: getEnteTextTheme(context).large,
tags: {
'bold-green': StyledTextTag(
style: TextStyle(
fontWeight: FontWeight.bold,
color: getEnteColorScheme(context).primaryGreen,
),
),
},
),
const Padding(padding: EdgeInsets.all(6)),
Text(
l10n.supportDiscount,
style: const TextStyle(
color: Colors.grey,
),
),
],
),
),
),
),
);
}
}

View File

@@ -1 +0,0 @@
// TODO Implement this library.

View File

@@ -113,12 +113,12 @@ String parseErrorForUI(
if (dioError.response?.data["code"] != null) {
errorInfo = "Reason: ${dioError.response!.data["code"]}";
} else {
errorInfo = "Reason: ${dioError.response!.data}";
errorInfo = "Reason: ${dioError.response!.data.toString()}";
}
} else if (dioError.type == DioExceptionType.unknown) {
errorInfo = "Reason: $dioError.error";
} else if (dioError.type == DioExceptionType.badCertificate) {
errorInfo = "Reason: ${dioError.error.toString()}";
} else {
errorInfo = "Reason: $dioError.type";
errorInfo = "Reason: ${dioError.type.toString()}";
}
} else {
if (kDebugMode) {

View File

@@ -250,10 +250,10 @@ packages:
dependency: "direct main"
description:
name: collection
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.18.0"
version: "1.19.0"
confetti:
dependency: "direct main"
description:
@@ -286,6 +286,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.1"
cronet_http:
dependency: transitive
description:
name: cronet_http
sha256: "3af9c4d57bf07ef4b307e77b22be4ad61bea19ee6ff65e62184863f3a09f1415"
url: "https://pub.dev"
source: hosted
version: "1.3.2"
cross_file:
dependency: transitive
description:
@@ -310,6 +318,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
cupertino_http:
dependency: transitive
description:
name: cupertino_http
sha256: "6fcf79586ad872ddcd6004d55c8c2aab3cdf0337436e8f99837b1b6c30665d0c"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
dart_style:
dependency: transitive
description:
@@ -346,10 +362,10 @@ packages:
dependency: "direct main"
description:
name: dio
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9"
url: "https://pub.dev"
source: hosted
version: "5.7.0"
version: "5.8.0+1"
dio_web_adapter:
dependency: transitive
description:
@@ -861,6 +877,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.2"
http_profile:
dependency: transitive
description:
name: http_profile
sha256: "7e679e355b09aaee2ab5010915c932cce3f2d1c11c3b2dc177891687014ffa78"
url: "https://pub.dev"
source: hosted
version: "0.1.0"
image:
dependency: transitive
description:
@@ -885,6 +909,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.4"
jni:
dependency: transitive
description:
name: jni
sha256: f377c585ea9c08d48b427dc2e03780af2889d1bb094440da853c6883c1acba4b
url: "https://pub.dev"
source: hosted
version: "0.10.1"
js:
dependency: transitive
description:
@@ -1061,6 +1093,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.2"
native_dio_adapter:
dependency: "direct main"
description:
name: native_dio_adapter
sha256: "7420bc9517b2abe09810199a19924617b45690a44ecfb0616ac9babc11875c03"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
nested:
dependency: transitive
description:
@@ -1077,6 +1117,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.0"
objective_c:
dependency: transitive
description:
name: objective_c
sha256: "62e79ab8c3ed6f6a340ea50dd48d65898f5d70425d404f0d99411f6e56e04584"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
otp:
dependency: "direct main"
description:

View File

@@ -21,7 +21,7 @@ dependencies:
connectivity_plus: ^6.0.5
convert: ^3.1.1
device_info_plus: ^9.1.1
dio: ^5.4.0
dio: ^5.8.0+1
dotted_border: ^2.0.0+2
dropdown_button2: ^2.3.9
email_validator: ^3.0.0
@@ -72,6 +72,7 @@ dependencies:
logging: ^1.0.1
modal_bottom_sheet: ^3.0.0
move_to_background: ^1.0.2
native_dio_adapter: ^1.4.0
otp: ^3.1.1
package_info_plus: ^8.0.2
password_strength: ^0.2.0

View File

@@ -15,7 +15,7 @@ import (
"strings"
)
var AppVersion = "0.2.2"
var AppVersion = "0.2.3"
func main() {
cliConfigDir, err := GetCLIConfigDir()
@@ -50,18 +50,21 @@ func main() {
}
}
// Define a set of commands that do not require KeyHolder initialisation.
skipKeyHolderCommands := map[string]struct{}{"version": {}, "docs": {}, "help": {}}
// Define a set of commands that do not require KeyHolder or cli initialisation.
skipInitCommands := map[string]struct{}{"version": {}, "docs": {}, "help": {}}
var keyHolder *secrets.KeyHolder
// Only initialise KeyHolder if the command isn't in the skip list.
shouldInit := len(os.Args) > 1
if len(os.Args) > 1 {
if _, skip := skipKeyHolderCommands[os.Args[1]]; !skip {
keyHolder = secrets.NewKeyHolder(secrets.GetOrCreateClISecret())
if _, skip := skipInitCommands[os.Args[1]]; skip {
shouldInit = false
}
}
if shouldInit {
keyHolder = secrets.NewKeyHolder(secrets.GetOrCreateClISecret())
}
ctrl := pkg.ClICtrl{
Client: api.NewClient(api.Params{
Debug: viper.GetBool("log.http"),
@@ -71,16 +74,10 @@ func main() {
KeyHolder: keyHolder,
}
err = ctrl.Init()
if err != nil {
panic(err)
if len(os.Args) == 1 {
// If no arguments are passed, show help
os.Args = append(os.Args, "help")
}
defer func() {
if err := db.Close(); err != nil {
panic(err)
}
}()
if len(os.Args) == 2 && os.Args[1] == "docs" {
log.Println("Generating docs")
err = cmd.GenerateDocs()
@@ -89,9 +86,16 @@ func main() {
}
return
}
if len(os.Args) == 1 {
// If no arguments are passed, show help
os.Args = append(os.Args, "help")
if shouldInit {
err = ctrl.Init()
if err != nil {
panic(err)
}
defer func() {
if err := db.Close(); err != nil {
panic(err)
}
}()
}
if os.Args[1] == "version" && viper.GetString("endpoint.api") != constants.EnteApiUrl {
log.Printf("Custom endpoint: %s\n", viper.GetString("endpoint.api"))
@@ -120,10 +124,10 @@ func initConfig(cliConfigDir string) {
func GetCLIConfigDir() (string, error) {
var configDir = os.Getenv("ENTE_CLI_CONFIG_DIR")
if configDir == "" {
// for backward compatibility, check for ENTE_CLI_CONFIG_PATH
configDir = os.Getenv("ENTE_CLI_CONFIG_PATH")
}
if configDir == "" {
// for backward compatibility, check for ENTE_CLI_CONFIG_PATH
configDir = os.Getenv("ENTE_CLI_CONFIG_PATH")
}
if configDir != "" {
// remove trailing slash (for all OS)

View File

@@ -1,11 +1,20 @@
# CHANGELOG
## v1.7.9 (Unreleased)
## v1.7.11 (Unreleased)
- .
## v1.7.10
- Speed up selection for large libraries.
- Support Japanese translations.
- Fix video thumbnail generation on drag and drop.
## v1.7.9
- Light mode.
- Faster and more stable thumbnail generation.
- Support `.supplemental-metadata` JSON files in Google Takeout.
- .
## v1.7.8

View File

@@ -38,8 +38,8 @@
</branding>
<releases>
<release version="1.7.8" date="2025-01-13">
<url type="details">https://github.com/ente-io/photos-desktop/releases/tag/v1.7.8</url>
<release version="1.7" date="2025-01-13">
<url type="details">https://github.com/ente-io/photos-desktop/releases</url>
</release>
</releases>
</component>

View File

@@ -1,6 +1,6 @@
{
"name": "ente",
"version": "1.7.9-beta",
"version": "1.7.11-beta",
"private": true,
"description": "Desktop client for Ente Photos",
"repository": "github:ente-io/photos-desktop",

View File

@@ -362,8 +362,18 @@ const createMainWindow = () => {
// do it (Step 2) unconditionally (i.e., on macOS too).
//
// https://www.electronjs.org/docs/latest/tutorial/custom-title-bar#create-a-custom-title-bar
//
// Note that by default on Windows, the color of the WCO title bar
// overlay (three buttons - minimize, maximize, close - on the top
// right) is static, and unlike Linux, doesn't adapt to the theme /
// content. Explicitly choosing a dark background, while it won't work
// always (if the user's theme is light), is better than picking a light
// background since the main image viewer is always dark.
titleBarStyle: "hidden",
titleBarOverlay: true,
titleBarOverlay:
process.platform == "win32"
? { color: "black", symbolColor: "#cdcdcd" }
: true,
// The color to show in the window until the web content gets loaded.
// https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
//

View File

@@ -41,6 +41,7 @@ import {
fsRm,
fsRmdir,
fsWriteFile,
fsWriteFileViaBackup,
} from "./services/fs";
import { convertToJPEG, generateImageThumbnail } from "./services/image";
import { logout } from "./services/logout";
@@ -154,6 +155,12 @@ export const attachIPCHandlers = () => {
fsWriteFile(path, contents),
);
ipcMain.handle(
"fsWriteFileViaBackup",
(_, path: string, contents: string) =>
fsWriteFileViaBackup(path, contents),
);
ipcMain.handle("fsIsDir", (_, dirPath: string) => fsIsDir(dirPath));
ipcMain.handle("fsFindFiles", (_, folderPath: string) =>

View File

@@ -24,6 +24,12 @@ export const fsReadTextFile = async (filePath: string) =>
export const fsWriteFile = (path: string, contents: string) =>
fs.writeFile(path, contents, { flush: true });
export const fsWriteFileViaBackup = async (path: string, contents: string) => {
const backupPath = path + ".backup";
await fs.writeFile(backupPath, contents, { flush: true });
return fs.rename(backupPath, path);
};
export const fsIsDir = async (dirPath: string) => {
if (!existsSync(dirPath)) return false;
const stat = await fs.stat(dirPath);

View File

@@ -178,6 +178,9 @@ const fsReadTextFile = (path: string) =>
const fsWriteFile = (path: string, contents: string) =>
ipcRenderer.invoke("fsWriteFile", path, contents);
const fsWriteFileViaBackup = (path: string, contents: string) =>
ipcRenderer.invoke("fsWriteFileViaBackup", path, contents);
const fsIsDir = (dirPath: string) => ipcRenderer.invoke("fsIsDir", dirPath);
// - Conversion
@@ -373,6 +376,7 @@ contextBridge.exposeInMainWorld("electron", {
rm: fsRm,
readTextFile: fsReadTextFile,
writeFile: fsWriteFile,
writeFileViaBackup: fsWriteFileViaBackup,
isDir: fsIsDir,
findFiles: fsFindFiles,
},

View File

@@ -135,8 +135,12 @@ export const sidebar = [
link: "/photos/faq/hidden-and-archive",
},
{
text: "Machine Learning",
link: "/photos/faq/machine-learning",
text: "Face recognition",
link: "/photos/faq/face-recognition",
},
{
text: "Video streaming",
link: "/photos/faq/video-streaming",
},
],
},
@@ -263,6 +267,10 @@ export const sidebar = [
text: "Hosting Ente without Docker",
link: "/self-hosting/guides/standalone-ente",
},
{
text: "Ente via Tailscale (Community)",
link: "/self-hosting/guides/Tailscale.md",
},
{
text: "Configure CLI for Self Hosted Instance",
link: "/self-hosting/guides/selfhost-cli",

View File

@@ -1,10 +1,10 @@
---
title: Machine Learning FAQ
title: Face recognition
description:
Frequently asked questions about several features of Ente's ML suite
Frequently asked questions about Ente's face recognition
---
# Machine Learning
# Face recognition
## Can I merge or de-merge persons recognized by the app?
@@ -19,7 +19,7 @@ instead of typing the name again, tap on the already given name that should now
be listed.
De-merging a certain grouping can be done by going to the person, pressing
`review suggestions` and then the top right `history icon`. Now press on the
`Review suggestions` and then the top right `History icon`. Now press on the
`minus icon` beside the group you want to de-merge.
### Desktop
@@ -29,6 +29,16 @@ selecting an existing person, and use the "Review suggestions" sheet to de-merge
previously merged persons (click the top right history icon on the suggestion
sheet to see the previous merges, and if necessary, undo them).
## How can I remove an incorrectly grouped face from a person?
On our mobile app, open up the person from the People section, click on the
three dots to open up overflow menu, and click on Edit. Now you will be
presented with the list of all photos that were merged to create this person.
You can click on the merged photos and select the photos you think are
incorrectly grouped (by long-pressing on them) and select "Remove" from the
action bar that pops up to remove any incorrect faces.
## How do I change the cover for a recognized person?
### Mobile

View File

@@ -112,3 +112,7 @@ https://github.com/ente-io/ente/tree/main/cli#readme.
Currently, the Ente mobile app allows you to see a map view of all the albums by
clicking on "Your map" under "Locations" on the search screen.
## How to reset my password if I lost it?
On the login page, enter your email and click on Forgot Password. Then, enter your recovery key and create a new password.

View File

@@ -19,9 +19,6 @@ Keep in mind that hidden items will still show up in the "On device" albums
within Ente as long as they are present in your native gallery. But once you
remove them from your device, they'll stop showing up here.
Hiding is currently only supported in the Ente mobile app, and items hidden from
the mobile app will not be visible in the web and desktop app.
For more details, see [features/hide](/photos/features/hide).
### Archive

View File

@@ -1,12 +1,11 @@
---
title: Metadata
description: Handling of metadata, in particular creation dates, in Ente Photos
description: Handling of metadata in Ente Photos
---
# Metadata
This document describes Ente's handling of metadata, in particular photo
creation dates.
This document describes Ente's handling of metadata
## Import
@@ -46,7 +45,7 @@ importing that folder into Ente**. This way, we will be able to always correctly
map, for example, `flower.jpeg` and `flower.json` and show the same date for
`flower.jpeg` that you would've seen within Google Photos.
### Screenshots
### File name
In case the photo does not have a date in the Exif data (and it is not a Google
takeout), for example, for screenshots or Whatsapp forwards, Ente will still try
@@ -57,6 +56,28 @@ and deduce the correct date for the file from the name of the file.
> This process works great most of the time, but it is inherently based on
> heuristics and is not exact.
If we are unable to decipher the creation time from these 3 sources, we will set
the upload time as the photo's creation time.
## Modifications
Ente supports modifications to the following metadata:
- File name
- Date & time
- Location
The first two options are available on both mobile and desktop, while the
ability to update location is only available within our mobile apps.
### Bulk modifications
You can bulk-edit creation time of photos from our desktop app, by
multi-selecting items and selecting the "Fix time" option from the action bar.
You can bulk-edit location coordinates of photos from our mobile app, by
multi-selecting items and selecting the "Edit location" option from the action
bar.
## Export
Ente guarantees that you will get back the _exact_ same original photos and

View File

@@ -47,6 +47,9 @@ availability and durability. Our
[reliability document](https://ente.io/reliability) provides in-depth
information about our storage infrastructure and data replication strategies.
In short, we store 3 copies of your data, across 3 different providers, in 3
different countries. One of them is in an underground fall-out shelter in Paris.
### How does Ente's encryption compare to industry standards?
Our encryption model goes beyond industry standards. While many services use
@@ -55,14 +58,17 @@ in the unlikely event of a server breach, your data remains protected.
## Account Security
### What happens if I forget my password?
### What happens if I forget my password? {#account-recovery}
You can reset your password using your recovery key that was provided to you
during account creation. Please store this key securely, as it's your lifeline
if you forget your password.
If you are logged into Ente on any of your existing devices, you can use that
device to reset your password and use your new password to log in.
If you lose both your password and recovery key, we cannot recover your account
or data due to our end-to-end encrypted architecture.
If you are logged out of Ente on all your devices, you can reset your password
using your recovery key that was provided to you during account creation.
If you are logged out of Ente on all your devices and you have lost both your
password and recovery key, we cannot recover your account or data due to our
end-to-end encrypted architecture.
If you wish to delete your account in such scenarios, please reach out to
support@ente.io and we will help you out.

View File

@@ -157,6 +157,21 @@ The same applies to monthly plans.
If you prefer to have this credit refunded to your original payment method,
please contact support@ente.io, and we'll assist you.
## How can I update my payment method?
You can view and manage your payment method by clicking on the green
subscription card within the Ente app, and selecting the "Manage payment method"
button.
You will be able to see all of your previous invoices, with details regarding
their payment status. In case of failed payments, you will also have an option
to retry those charges.
## How can I cancel my subscription?
You can cancel your subscription by clicking on the green subscription card
within the Ente app, and selecting the "Cancel subscription" button.
## Is there an x GB plan?
We have experimented quite a bit and have found it hard to design a single

View File

@@ -0,0 +1,63 @@
---
title: Video streaming FAQ
description:
Frequently asked questions about Ente's video streaming feature
---
# Video streaming
> [!NOTE]
>
> Video streaming is available in beta on mobile apps starting v0.9.98.
### How to enable video streaming?
- Open Settings -> General -> Advanced
- Switch on the toggle for `Video streaming`
### What happens when I enable video streaming?
Enabling video streaming will start processing videos captured in the last 30
days, generating streams for each. Both local and remote videos will be
processed, so this may consume bandwidth for downloading of remote files and
uploading of the generated streams.
### How can I view video streams?
Settings -> Backup > Backup status will show details regarding the processing
status for videos. Processed videos will have a green play button next to them.
You can open these videos by tapping on them.
Processed videos will show a `Play stream` button, clicking which will load and
play the stream.
Clicking on the `Info` icon within the original video will show details about
the generated stream.
### What is a stream?
Stream is an encrypted HLS file with an `.m3u8` playlist that helps play a video
with support for seeking **without** downloading the full file.
Currently it converts videos into `720p` with `2mbps` bitrate in `H.264` format.
The generated stream is single blob (encrypted with AES) while the playlist file
(`.m3u8`) is another blob (encrypted using XChaCha20).
We cannot read the contents, duration or the number of chunks within the
generated stream.
### Will streams consume space in my storage?
While this feature is in beta, we will not count the storage consumed by your
streams against your storage quota. This may change in the future. If it does,
we will provide an option to opt-in to one of the following:
1. Original videos only
2. Compressed streams only
3. Both
### Something doesn't seem right, what to do?
As video streaming is still in beta, some things might not work correctly.
Please create a thread within the `#feedback` channel on
[Discord](https://discord.com/channels/948937918347608085/1121126215995113552)
or reach out to [support@ente.io](mailto:support@ente.io).

View File

@@ -43,6 +43,10 @@ need to disable this "Optimize battery usage" mode in the system settings for
Ente if you wish for Ente to automatically back up your photos in the
background.
On Android versions 15 and later, if an app is in private space and the private
space is locked, Android doesnt allow the app to run any background processes.
As a result, background sync will not work.
### Desktop
In addition to our mobile apps, the background sync also works on our desktop

View File

@@ -50,5 +50,5 @@ end-to-end encrypted security that we use for syncing your photos.
Note that the desktop app does not currently support modifying the face
groupings, that is only supported by the mobile app.
For more information on how to use Machine Learning please check out
[the FAQ](../faq/machine-learning).
For more information on how to use Machine Learning for face recognition please
check out [the FAQ](../faq/face-recognition).

View File

@@ -59,3 +59,6 @@ then select the "Recover two-factor" option in the error message that gets
shown. This will take you to a place where you can enter your Ente recovery key
and login into your account. Now you can go to the _Passkey_ page to delete the
lost passkey and/or add a new one.
If you have lost access to both your passkey and recovery key, please reach out
to [support@ente.io](mailto:support@ente.io) for help.

View File

@@ -10,3 +10,9 @@ automatically deleted from Trash after 30 days. You can manaully select photos
to permanently delete or completely empty the trash if you wish.
Items in trash are included in your used storage calculation.
## Recovery
If you have deleted items accidentally, you can recover them from Trash by
selecting these items, and clicking the "Restore" button on the action bar that
pops up.

View File

@@ -20,23 +20,25 @@ the logs just make the process a bit faster and easier.
- Select for the option to _Report a Bug_.
- Tap on _Report a bug_.
## Desktop and Web
- Open settings (click on the three horizontal lines button located at the top
left corner of the screen).
- Click on the _Help_ option towards the bottom of settings.
- Click on _View logs_. This will show you the location of the logs on your
system (desktop), or download them from the browser onto your computer (web).
- Go back to settings.
- Click on _Support_. This will open your email client where you can attach the
logs in the email and describe the issue.
## Desktop
- Click on _Help_ menu at the top of your screen, and select the _View logs_
option.
- Open settings (click on the three horizontal lines button located at the top
left corner of the screen).
- Click on _Support_. This will open your email client where you can attach the
logs in the email and describe the issue.
On the desktop app, you can also directly view the logs on your computer at the
following locations:
## Web
- Open settings (click on the three horizontal lines button located at the top
left corner of the screen).
- Click on _Debug Logs_ towards the bottom of settings.
- Click on _Download logs_
- Click on _Support_. This will open your email client where you can attach the
logs in the email and describe the issue.
- macOS: `~/Library/Logs/ente/ente.log`
- Linux: `~/.config/ente/logs/ente.log`
- Windows: `%USERPROFILE%\AppData\Roaming\ente\logs\ente.log`
## Send email manually

View File

@@ -0,0 +1,286 @@
---
title: Self Hosting with Tailscale (Community)
description: Guides for self-hosting Ente Photos and/or Ente Auth with Tailscale
---
# Guide
This guide aims to achieve self-hosting Ente photos or Ente-Auth with tailscale (TSDPROXY) without exposing any port OR if someone is behind CGNAT and cannot open any port on the internet but want to run their own selfhosted service for themselves, friends and family only.
Before getting start keep the following NOTE in mind.
> [!NOTE]
> If someone is behind double or triple CGNAT; must install tailscale system wide by running `curl -fsSL https://tailscale.com/install.sh | sh` in your linux terminal and `sudo tailscale up` otherwise dns resolver will fail and uploading will not work. This is not necessary for those who are not behing CGNAT.
> This guide also work on docker rootless and normal.
> [!CAUTION]
Remember that current docker update 28.0.0 has some bug and cannot connect to external network. Make sure to install docker-ce 27.5.0, docker-ce-rootless-extras 27.5.0 and docker-ce-cli 27.5.0. Hopefully docker 28.1.0 will resolve this issue in next week. Refrence links are [Moby Github Repo Issues 49511](https://github.com/moby/moby/issues/49511) and [Moby Github Repo Issues 49519](https://github.com/moby/moby/issues/49519)
> [!IMPORTANT]
> For Docker rootless, the user must have local permissions for all directories required by the Ente-photos self-hosted server. This can be achieved by running `sudo chown -R 1000:1000 /home/ubuntu/docker/ente`. In the Linux terminal, you can check the UID with `id -u` or simply `id`. The first user typically has UID 1000.
> To allow listening and pinging on any port without root privileges, create a file called `/etc/sysctl.d/99-rootless.conf` with the following content:
> ```
> net.ipv4.ip_unprivileged_port_start=0
> net.ipv4.ping_group_range = 0 2147483647
> ```
> than run `sudo sysctl --system`.
> Create `~/.config/systemd/user/docker.service.d/override.conf` with the following content:
> ```
> [Service]
> Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_NET=slirp4netns"
> Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns"
> ```
> and Restart the docker daemon
> `systemctl --user restart docker`
> Instead of `--volume /var/run/docker.sock:/var/run/docker.sock` in TSDPROXY compose.yaml, use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock`
## GETTING START WITH SETUP ##
First of all create a directory `sudo mkdir -p /home/ubuntu/docker/tsdproxy/config` than `cd docker/tsdproxy` and create compose.yaml file by running `sudo nano compose.yaml`. Populate it with the following:
```
services:
tsdproxy:
image: almeidapaulopt/tsdproxy
container_name: tsdproxy
restart: unless-stopped
environment:
TZ: Asia/Singapur # change me
volumes:
- $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock # for docker rootless otherwise /var/run/docker.sock:/var/run/docker.sock
- tsdproxy_data:/data
- /home/lee/docker/tsdproxy/config:/config
networks:
- proxy
labels: # giving the labels here will create tsdproxy instance in tailscale admin counsle and GUI can be accessable through tailscale if device is connected
- tsdproxy.enable=true
- tsdproxy.name=tsdproxy
- tsdproxy.ephemeral=false # this is optional but useful
volumes:
tsdproxy_data:
name: tsdproxy_data
networks:
proxy:
name: proxy
```
Now login into your tailscale account admin counsle > settings > keys > Generate authkey. Give any description and must select resuable, because the key get purged if not selected after rebooting machine. It is advisable to create **Tags** in **ACLs settings** `tag: tsdproxy` `tag: ente` `tag: minio` as well. This will create a tag nodes with no key expirory. One is safe to reboot restart docker or machine.
> Copy the generated authkey as it is shown only once.
Make tsdproxy.yaml file in `cd docker/tsdproxy/config` by running `sudo nano tsdproxy.yaml` and pupolate it with the following contant:
```
defaultproxyprovider: default
docker:
local:
host: unix:///var/run/docker.sock
defaultproxyprovider: default
files: {}
tailscale:
providers:
default:
authkey: ""
authkeyfile: "/config/authkey"
controlurl: https://controlplane.tailscale.com
datadir: /data/
http:
hostname: 0.0.0.0
port: 8080
log:
level: info
json: false
proxyaccesslog: true
```
In the same directory run `sudo nano authkey` and paste the authkey just copied earlier from tailscale admin counsel.
> Here Tailscale (TSDPROXY) setup is complet in all respect. Just run `docker compose up -d`. Check your tailscale amdin counsel and you will see tsdproxy node up and running. Make sure that **HTTPS** is enabled in tailscale DNS settings.
> You can visit the TSDPROXY web GUI by https://tsdproxy.xyz.ts.net. (xyz is change value for everyone)
## ente Part ##
First make the following necessary files/directories:
```
sudo mkdir -p /home/ubuntu/docker/ente/custom-logs
sudo mkdir -p /home/ubuntu/docker/ente/data
sudo mkdir -p /home/ubuntu/docker/ente/minio-data
sudo mkdir -p /home/ubuntu/docker/ente/postgres-data
sudo mkdir -p /home/ubuntu/docker/ente/scripts/compose
```
Than give user permission for each of the above directory. `sudo chown -R 1000:1000 /home/ubuntu/docker/ente/custom-logs` etc etc. Make sure not to skip `/home/ubuntu/docker/tsdproxy/config`
`cd docker/ente/script/compose` and run `sudo nano credentials.yaml` than populate it with the following:
```
db:
host: postgres
port: 5432
name: ente_db
user: pguser # change me
password: pgpass #change me
s3:
are_local_buckets: true
b2-eu-cen:
key: test # change me
secret: testtest # change me
endpoint: https://minio.xyz.ts.net
region: eu-central-2
bucket: b2-eu-cen
wasabi-eu-central-2-v3:
key: test # change me
secret: testtest # change me
endpoint: localhost:3200
region: eu-central-2
bucket: wasabi-eu-central-2-v3
compliance: false
scw-eu-fr-v3:
key: test # change me
secret: testtest # change me
endpoint: localhost:3200
region: eu-central-2
bucket: scw-eu-fr-v3
```
In the same directory run `sudo nano minio-provision.sh` and populate it with the following contant:
```
#!/bin/sh
# Script used to prepare the minio instance that runs as part of the development
# Docker compose cluster.
while ! mc config host add h0 http://minio:3200 test testtest #(change me)
do
echo "waiting for minio..."
sleep 0.5
done
cd /data
mc mb -p b2-eu-cen
mc mb -p wasabi-eu-central-2-v3
mc mb -p scw-eu-fr-v3
```
Now `cd docker/ente` and run `sudo nano docker-compose.yaml` and populate it with the following:
```
services:
museum:
image: ghcr.io/ente-io/server
ports:
- 9080:8080 # 9080 because tsdproxy is running on 8080:8080
# - 2112:2112 # Prometheus metrics
depends_on:
postgres:
condition: service_healthy
environment:
# Pass-in the config to connect to the DB and MinIO
ENTE_CREDENTIALS_FILE: /credentials.yaml
# ENTE_CLI_SECRETS_PATH: /cli-data/secret.txt
# ENTE_CLI_CONFIG_PATH: /cli-data/
volumes:
- /home/ubuntu/docker/ente/custom-logs:/var/logs
- /home/ubuntu/docker/ente/museum.yaml:/museum.yaml:ro
- /home/ubuntu/docker/ente/scripts/compose/credentials.yaml:/credentials.yaml:ro
#- /home/ubuntu/docker/ente/cli-data:/cli-data
#- /home/ubuntu/docker/ente/exports/ente-photos:/exports
- /home/ubuntu/docker/ente/data:/data:ro
networks:
- ente
- proxy
labels:
tsdproxy.enable: "true"
tsdproxy.name: "ente"
# # Resolve "localhost:3200" in the museum container to the minio container.
socat:
image: alpine/socat
network_mode: service:museum
depends_on:
- museum
command: "TCP-LISTEN:3200,fork,reuseaddr TCP:minio:3200"
postgres:
image: postgres:15
ports:
- 5432:5432
environment:
POSTGRES_USER: pguser # change me
POSTGRES_PASSWORD: pgpass # change me
POSTGRES_DB: ente_db
# Wait for postgres to be accept connections before starting museum.
healthcheck:
test:
[
"CMD",
"pg_isready",
"-q",
"-d",
"ente_db",
"-U",
"pguser" # change it accouding to the POSTGRES_USER: pguser
]
start_period: 40s
start_interval: 1s
volumes:
- /home/ubuntu/docker/ente/postgres-data:/var/lib/postgresql/data
networks:
- ente
minio:
image: minio/minio
# Use different ports than the minio defaults to avoid conflicting
# with the ports used by Prometheus.
ports:
- 3200:3200 # API
- 3201:3201 # Console
environment:
MINIO_ROOT_USER: test # change me
MINIO_ROOT_PASSWORD: testtest # change me
MINIO_SERVER_URL: https://minio.xyz.ts.net
command: server /data --address ":3200" --console-address ":3201"
volumes:
- /home/ubuntu/docker/ente/minio-data:/data
networks:
- ente
- proxy
labels:
tsdproxy.enable: "true"
tsdproxy.name: "minio"
minio-provision:
image: minio/mc
depends_on:
- minio
volumes:
- /home/ubuntu/docker/ente/scripts/compose/minio-provision.sh:/provision.sh:ro
- /home/ubuntu/docker/ente/minio-data:/data
networks:
- ente
entrypoint: sh /provision.sh
networks:
ente:
name: ente
proxy:
external: true
```
> Thats it. Run `docker compose up -d`. Wait till every container become healthy. Open web browser. Make sure tailscale is installed on the machine. Visit https://ente.xyz.ts.net/ping. It will pong. All good if you see it. First time it will take minute or two to get SSL cert. Downnload Desktop or mobile app. Tap 7 time on the screen, which will prompt developer mode. Add https://ente.xyz.ts.net. Add new user. When asked for OTP. Just go to linux terminal and run `docker logs ente-museum-1`. Search for userauth. Feed the six digit and Done.
> For getting 100TB (limitless) storage. Just Install ente-cli for windows. Extract it and add folder. Name it **export**. Add config.yaml file along and populate it with the following:
```
endpoint:
api: "https://ente.xyz.ts.net"
accounts: "http://localhost:3001"
log: false
```
Right-Click in the directory where you have extracted ente-cli. Select `open in terminal`. Run
```
.\ente.exe account bob # change bob to yours
```
Hit Enter twice.
For export directory, just write export. As already created **export** folder earlier.
**Write email. The one which is already used befor when creating ente account in ente desktop app.**
Type the same Password used before for the account.Run
```
.\ente.ext account list
```
This will list all account details. Copy Acount ID.
> Navigate to museum.yaml file. `cd docker/ente`. Run `sudo nano museum.yaml` and add the account ID under Admins. Delete any previous entries.
Restart ente-museum-1 container from linux terminal. Run `docker restart ente-museum-1`. All well, now you will have 100TB storage. Repeat if for any other accounts you want to give unlimited storage access.

View File

@@ -54,20 +54,30 @@ The same principle applies if you're deploying to your custom domain.
## Replication
If you're wondering why there are 3 buckets on MinIO UI - that's because our
production instance uses these to perform [replication](https://ente.io/reliability/).
In a self hosted Ente Instance replication is turned off by default.
When replication is turned off, only the first bucket (`b2-eu-cen`) is used,
and you can ignore the other two. Use the `s3.hot_storage.primary` option
if you'd like to set one of the other predefined buckets as the primary bucket.
> [!IMPORTANT]
> As of now, Replication works only if all the 3 storage type
> needs are fulfilled (1 Hot, 1 Cold and 1 Glacier Storage).
>
> [Reference](https://github.com/ente-io/ente/discussions/3167#discussioncomment-10585970)
If you're wondering why there are 3 buckets on MinIO UI - that's because our
production instance uses these to perform [replication](https://ente.io/reliability/).
If you're also wondering about why the bucket names are specifically what they are,
it's because that is exactly what we are using on our production instance.
We use `b2-eu-cen` as hot, `wasabi-eu-central-2-v3` as cold (also the secondary hot)
and `scw-eu-fr-v3` as glacier storage. As of now, all of this is hardcoded.
Hence, the same hardcoded configuration is applied when you self host Ente.
In a Self hosted Ente Instance replication is turned off by default.
When replication is turned off, only the first bucket (`b2-eu-cen`) is used,
and the other two are ignored. Only the names here are specifically fixed, but
in the configuration body you can put any other keys. It does not have any relation
with `b2`, `wasabi` or even `scaleway`.
Use the `s3.hot_storage.primary` option if you'd like to set one of the other
predefined buckets as the primary bucket.
## SSL Configuration
> [!NOTE]

View File

@@ -0,0 +1,37 @@
# Grafana
Grafana data is stored in a persistent Docker volume named `grafana-storage`. To
create a backup of this, use
```sh
docker run --rm \
--mount source=grafana-storage,target=/g \
-v $(pwd):/backup \
busybox \
tar -cvzf /backup/grafana-storage.backup.tar.gz /g
```
## Installation
Restore the volume:
```sh
docker run --rm \
--mount source=grafana-storage,target=/g \
-v $(pwd):/backup \
busybox \
tar -xvzf /backup/grafana-storage.backup.tar.gz -C /
```
Add the Grafana nginx config
```sh
sudo mv grafana.nginx.conf /root/nginx/conf.d
```
and reload the nginx service before starting Grafana for the first time.
```sh
sudo systemctl reload nginx
sudo systemctl start grafana
```

View File

@@ -0,0 +1,24 @@
# Needed for web sockets
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
server_name grafana.ente.io;
location / {
proxy_pass http://host.docker.internal:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}

View File

@@ -0,0 +1,14 @@
[Unit]
Documentation=https://grafana.com/docs/grafana/latest/setup-grafana/configure-docker/
Requires=docker.service
After=docker.service
[Service]
ExecStartPre=docker pull grafana/grafana-oss
ExecStartPre=-docker stop grafana
ExecStartPre=-docker rm grafana
ExecStart=docker run --name grafana \
-p 3001:3001 \
-v grafana-storage:/var/lib/grafana \
-e "GF_SERVER_HTTP_PORT=3001" \
grafana/grafana-oss

View File

@@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.
version:
revision: 0b8abb4724aa590dd0f429683339b1e045a1594d
channel: stable
revision: "2663184aa79047d0a33a14a3b607954f8fdd8730"
channel: "stable"
project_type: app

View File

@@ -5,3 +5,9 @@ gradle-wrapper.jar
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/to/reference-keystore
key.properties
**/*.keystore
**/*.jks

View File

@@ -28,13 +28,23 @@ if (keystorePropertiesFile.exists()) {
}
android {
compileSdkVersion 34
ndkVersion "26.0.10792818"
namespace = "io.ente.photos"
compileSdk = 35
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
warningsAsErrors false
@@ -42,11 +52,11 @@ android {
}
defaultConfig {
applicationId "io.ente.photos"
minSdkVersion 26
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
applicationId = "io.ente.photos"
minSdk = 26
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
consumerProguardFiles 'proguard-rules.pro'
@@ -115,14 +125,14 @@ rootProject.allprojects {
if (details.requested.group == 'com.github.bumptech.glide'
&& details.requested.name.contains('glide')) {
details.useVersion "4.15.1"
}
}
}
}
}
}
flutter {
source '../..'
source = "../.."
}
dependencies {

View File

@@ -2,3 +2,6 @@
# To ensure that stack traces is unambiguous
# https://developer.android.com/studio/build/shrink-code#decode-stack-trace
-keepattributes LineNumberTable,SourceFile
-keep class org.chromium.net.** { *; }
-keep class org.xmlpull.v1.** { *; }

View File

@@ -12,18 +12,15 @@ allprojects {
url "${project(':background_fetch').projectDir}/libs"
}
}
ext {
compileSdkVersion = 34
targetSdkVersion = 34
appCompatVersion = "1.7.0"
}
}
rootProject.buildDir = '../build'
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {

View File

@@ -1,3 +1,3 @@
org.gradle.jvmargs=-Xmx4608m
android.useAndroidX=true
android.enableJetifier=true
android.enableJetifier=true

View File

@@ -1,7 +1,5 @@
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
distributionSha256Sum=a8da5b02437a60819cad23e10fc7e9cf32bcb57029d9cb277e26eeff76ce014b
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip

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