Compare commits

..

1141 Commits

Author SHA1 Message Date
mngshm
daa09136ef [server] remove option to set storageLimit from Member Invite workflow 2025-02-24 17:14:56 +05:30
mngshm
82ebcf66a5 fix: allow null values in storage_limit column 2025-02-24 17:12:13 +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
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
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
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
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
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
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
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
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
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
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
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
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
Manav Rathi
bc699b8f37 sys 2025-02-20 17:16:39 +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
Manav Rathi
8618babc11 Attempt to intercept cancellation 2025-02-20 11:20:54 +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
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
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
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
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
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
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
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
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
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
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
1bb8facc56 fix(mob): streaming changes (#4992)
## Description

Many issues fixed that were hindering streaming experience.

## Tests
2025-02-10 13:08:57 +05:30
Neeraj Gupta
3fb4d3f7fb [mob] ios build changes 2025-02-10 13:06:48 +05:30
Neeraj
1ef396b34d [auth] Add icon for AJ Bell (#5004)
## Description

Add SVG icon for AJ Bell: https://www.ajbell.co.uk/.

See logo being used here: https://www.linkedin.com/company/ajbell/
2025-02-10 11:57:59 +05:30
Neeraj
85b9516fa7 [auth] New translations (#5008)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-02-10 11:46:26 +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
Manav Rathi
bebe0f6d53 [web] New translations (#5005)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-10 10:36:44 +05:30
Crowdin Bot
e5303e8f0a New Crowdin translations by GitHub Action 2025-02-10 01:17:17 +00:00
Crowdin Bot
b4c5a7c747 New Crowdin translations by GitHub Action 2025-02-10 00:35:18 +00:00
Daniel Tsiang
4cc7bbb84a [auth] Add icon for AJ Bell 2025-02-09 20:39:43 +00:00
Prateek Sunal
837f372d4e chore: bump version 2025-02-08 05:29:32 +05:30
Prateek Sunal
b9a5f42d95 fix: details page 2025-02-08 05:29:25 +05:30
Prateek Sunal
b2d02c6a26 fix: add l10n, routing changes 2025-02-08 05:12:58 +05:30
Prateek Sunal
e0cbe47052 fix: stream size issues 2025-02-08 04:59:57 +05:30
Prateek Sunal
d0a2502a39 fix: color space check code 2025-02-08 04:04:00 +05:30
Prateek Sunal
f4b7ef19ce fix: add backup status item tap action, sorting fix, color space fix 2025-02-08 03:51:04 +05:30
Ashil
4d70556986 [mob][photos] Use leading debouncer for better UX (#4988) 2025-02-07 20:34:45 +05:30
ashilkn
dae55c7684 [mob][photos] Make field private 2025-02-07 17:57:53 +05:30
ashilkn
2c0b6f6dbc [mob][photos] Make debouncer used in AllSectionsExampleProvider a leading debouncer + delay initial load on app start + avoid a case where initial loading would have happened twice 2025-02-07 17:56:30 +05:30
ashilkn
e07a24a192 [mob][photos] Use leading debouncer where ever necessary for better UX 2025-02-07 17:17:38 +05:30
ashilkn
be5a29b6de [mob][photos] Add option to make debouncer leading or trailing 2025-02-07 17:06:51 +05:30
Neeraj Gupta
5d0a15e9e5 [mob] Fill dateTime and offsetTime during upload 2025-02-07 16:32:02 +05:30
Manav Rathi
27f51a6da4 [web] New translations (#4987)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-07 16:14:36 +05:30
Prateek Sunal
38ae9e2b19 fix: buffering indicator 2025-02-07 16:11:08 +05:30
Neeraj Gupta
8559dd8364 [mob] Refactor 2025-02-07 16:09:57 +05:30
Crowdin Bot
2ee79af5b7 New Crowdin translations by GitHub Action 2025-02-07 10:27:06 +00:00
Manav Rathi
405e51f228 [desktop] Touchups for light mode + integrated title bar release (#4986)
- Accommodate file menu items in the sidebar where possible
- IA changes since the sidebar was growing too big
2025-02-07 15:56:22 +05:30
Manav Rathi
13ca35c0f5 Tweak 2025-02-07 15:43:51 +05:30
Neeraj Gupta
b6b724f64f [mob] Parse exif as part of MediaUploadData 2025-02-07 15:38:49 +05:30
Prateek Sunal
afb139a301 Merge commit 'f65ab4a5a0ef53470673ca2c038df181075702f7' into streaming-prtk 2025-02-07 15:30:50 +05:30
Prateek Sunal
f65ab4a5a0 fix: put files while ignore the result 2025-02-07 15:29:15 +05:30
Manav Rathi
9309a68010 separate 2025-02-07 15:27:31 +05:30
Manav Rathi
caf1f715e1 Dividers 2025-02-07 15:10:32 +05:30
Prateek Sunal
d193efbe14 fix: queuing order, locals, preview status tap, remove cache preview button, refresh indicator 2025-02-07 15:06:55 +05:30
Manav Rathi
2156c3a946 Move 2025-02-07 15:03:08 +05:30
Neeraj Gupta
c20dcdae76 [mob] Add support for parsing dateTime & offsetTime from pubMagicMetadata 2025-02-07 14:59:52 +05:30
Manav Rathi
698e96c6d6 Arrange 2025-02-07 14:50:32 +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
Manav Rathi
6c0622ab51 Account menu 2025-02-07 14:35:20 +05:30
Manav Rathi
2f205112d9 Move 2025-02-07 14:23:30 +05:30
Manav Rathi
edcd784852 Don't auto maximize 2025-02-07 14:16:26 +05:30
Manav Rathi
d13f6db1dc Use the web side 2025-02-07 14:15:16 +05:30
Manav Rathi
b9fb797a15 refresh 2025-02-07 14:06:03 +05:30
Manav Rathi
d595a2ec15 Handle 2025-02-07 13:59:45 +05:30
Manav Rathi
3936954ee2 Menu 2025-02-07 13:55:35 +05:30
Neeraj Gupta
602881ee26 [mob] Refactor 2025-02-07 13:54:44 +05:30
Manav Rathi
1b83acb262 hint improvements 2025-02-07 13:46:18 +05:30
Manav Rathi
3ec410f932 Make it work better with the hover state 2025-02-07 13:17:01 +05:30
Manav Rathi
8af2a75c84 tr 2025-02-07 13:07:31 +05:30
Manav Rathi
a041853657 Match 2025-02-07 12:58:46 +05:30
Manav Rathi
85f5939ce6 Help menu 2025-02-07 12:53:23 +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
Manav Rathi
5566d5881b Tweak 2025-02-07 12:25:21 +05:30
Manav Rathi
6623c4fa7f Accomodate menu items - prep 2025-02-07 12:19:15 +05:30
Manav Rathi
a1b63b8ea4 Inline 2025-02-07 12:08:38 +05:30
Manav Rathi
0ce2ac279c View logs 2025-02-07 12:03:21 +05:30
Manav Rathi
8fc5a8ad88 Update Electron 2025-02-07 11:55:31 +05:30
Vishnu Mohandas
d48e34cfba [staff] populate attributes from userDataResponse when UpdateStorage returns data (#4982)
/cc @vishnukvmd mentioned that the json Response does not include
attributes data (like customerID, StripeAccountCountry) and it is
skipped in the jsonResponse while updating the storage.
2025-02-06 23:26:07 +05:30
Manav Rathi
ebf5a63c04 [desktop] Use custom theme-aware titlebar for end-to-end display (#4981) 2025-02-06 17:02:24 +05:30
Manav Rathi
d707b76f91 LF 2025-02-06 16:57:26 +05:30
Manav Rathi
cc6b3897a7 Enable 2025-02-06 16:55:52 +05:30
Manav Rathi
56f58e4dbe Fix the backdrop 2025-02-06 16:52:53 +05:30
Manav Rathi
bcd1609fd1 Cleanup 2025-02-06 16:45:50 +05:30
Manav Rathi
35ce21e207 Selection marker 2025-02-06 16:42:29 +05:30
Manav Rathi
c7dc01326f Improve behaviour on small screens 2025-02-06 16:26:47 +05:30
Manav Rathi
4e22fba056 Extract 2025-02-06 16:18:27 +05:30
Manav Rathi
22f65ce656 Conv 2025-02-06 16:15:24 +05:30
Manav Rathi
c35825f54e Below bar 2025-02-06 16:12:42 +05:30
Manav Rathi
a3adec3fee [desktop] Derive both formatted and timestamp from same source (#4980)
/cc @ua741
2025-02-06 15:58:12 +05:30
Manav Rathi
7d892c5285 [desktop] Derive both formatted and timestamp from same source 2025-02-06 15:50:14 +05:30
Manav Rathi
18e6bde91f Top bar pseudo sel 2025-02-06 15:14:55 +05:30
laurenspriem
8922d7e663 [mob][photos] Merge trips 2025-02-06 14:38:05 +05:30
mngshm
3ef7dca18f clear log statements 2025-02-06 14:36:15 +05:30
Manav Rathi
768b2f8e66 viewer 1 2025-02-06 14:36:02 +05:30
mngshm
578547fc75 hotfix: changes to populate attributes after userDataResponse is received 2025-02-06 14:28:00 +05:30
Neeraj
91a9ff5dd5 [mob][photos] fix: Value out of range (#4979) 2025-02-06 14:09:46 +05:30
Manav Rathi
b47a5d6a97 Tweak sel bar for shared albums 2025-02-06 14:07:22 +05:30
Manav Rathi
6249008151 Update 2025-02-06 13:45:40 +05:30
Manav Rathi
d244ce21f0 Trim 2025-02-06 13:40:46 +05:30
Manav Rathi
85b545049e Contents 2025-02-06 13:29:57 +05:30
Aman Raj Singh Mourya
362ae7f2f3 [mob][photos] fix: files list generated by where method can still be empty 2025-02-06 13:29:32 +05:30
Manav Rathi
cdf9474788 Reorder 2025-02-06 13:20:12 +05:30
Aman Raj Singh Mourya
10e61ee7f7 [mob][photos] fix: Invalid value: Valid value range is empty 2025-02-06 13:13:22 +05:30
Manav Rathi
54611ff256 Fix 2025-02-06 12:48:51 +05:30
Manav Rathi
2908c27ab4 1 is enough 2025-02-06 12:45:31 +05:30
Manav Rathi
21acd608ff Same 2025-02-06 12:40:55 +05:30
Manav Rathi
6902e0a8f7 Tweak 2025-02-06 12:38:52 +05:30
Manav Rathi
7b8ca828c9 Nomen 2025-02-06 12:19:31 +05:30
Manav Rathi
426765a1e4 Fin 2025-02-06 12:11:30 +05:30
Manav Rathi
e7d36f98a7 wip 2025-02-06 12:08:12 +05:30
Neeraj
dd7f5cef92 [server] Allow setting storageLimit for family members (#4961) 2025-02-06 11:59:16 +05:30
Manav Rathi
61d0c090b7 Swap 2025-02-06 11:51:51 +05:30
Manav Rathi
40edd3ecfd source order 2025-02-06 11:38:16 +05:30
Neeraj Gupta
d6a626fe0d Merge remote-tracking branch 'origin/main' into dio_upgrade 2025-02-06 11:33:48 +05:30
Manav Rathi
d7af576b7d gallery is dark in lm, so ditto in light mode 2025-02-06 10:45:03 +05:30
Manav Rathi
09c7cde958 Stack 2025-02-06 10:34:45 +05:30
Neeraj
eb34372a21 [mob][photos] Extract strings (#4976) 2025-02-06 10:29:23 +05:30
Manav Rathi
6fc2dc96a5 1's enough 2025-02-06 10:27:57 +05:30
Manav Rathi
7a5a708714 Same constant 2025-02-06 10:26:24 +05:30
Manav Rathi
6d842fd1e2 const 2025-02-06 10:23:39 +05:30
Manav Rathi
8333367633 Reuse 2025-02-06 10:23:29 +05:30
Manav Rathi
4ef56c3dc9 Rename again 2025-02-06 10:23:29 +05:30
Manav Rathi
684c538fe8 bespoke 2025-02-06 10:23:29 +05:30
Manav Rathi
0f6016db00 Rename as per plan 2025-02-06 10:23:22 +05:30
Manav Rathi
c6a907e9f6 Move 2025-02-06 09:55:18 +05:30
Manav Rathi
5094006712 bespoke 2025-02-06 09:53:09 +05:30
Manav Rathi
63c3e48a00 1 is enough 2025-02-06 09:47:26 +05:30
Manav Rathi
5a1b88983f It already comes after in the source order 2025-02-06 09:44:25 +05:30
Manav Rathi
27beed354e [web] Use lighter scrim for overlays atop photo viewer (#4978)
\+ continue with the custom title bar prep
2025-02-06 09:23:12 +05:30
Manav Rathi
73bbf39256 tsc fix 2025-02-06 09:16:53 +05:30
Manav Rathi
1a3d665655 Inline 2025-02-06 09:15:27 +05:30
Manav Rathi
02f3afc4cc Use the dialog's loader and error indicator 2025-02-06 09:14:31 +05:30
Manav Rathi
d492a0e695 Fin 2025-02-06 09:09:12 +05:30
Manav Rathi
299363c8c4 Add the customization 2025-02-06 08:58:40 +05:30
Manav Rathi
37774c31d7 Alt path 2025-02-06 08:55:06 +05:30
Manav Rathi
9fe36985d6 Tweak 2025-02-06 08:04:46 +05:30
Manav Rathi
eee6705e11 Rename 2025-02-06 07:45:03 +05:30
Manav Rathi
719ac8539b Outline 2025-02-06 07:42:32 +05:30
Manav Rathi
7f1d8dba94 Move out 2025-02-06 06:54:49 +05:30
Manav Rathi
92fe34d43f Reintroduce backdrop filter 2025-02-06 06:43:33 +05:30
Manav Rathi
a6a77ffb9c Alternative approach 2025-02-06 06:43:32 +05:30
ashilkn
a638cb1ece [mob][photos] Fix dirty merge conflict resolution 2025-02-05 20:27:42 +05:30
ashilkn
cf3cfe7275 [mob][photos] Resolve conflicts and merge main 2025-02-05 20:23:44 +05:30
ashilkn
edc39f3fd8 [mob][photos] Extract strings 2025-02-05 20:17:54 +05:30
Ashil
85729c9426 [mob][photos] Use first letter person avatar if no person is linked to contact in contacts section, all contacts screen and contact search results (#4975) 2025-02-05 19:23:55 +05:30
ashilkn
1e50f52801 [mob][photos] Throw exception and instruction on what to do instead if GenericSearchResult.previewThumbnail() is used when ResultType is 'shared'(which is the case for contacts search) 2025-02-05 17:37:21 +05:30
ashilkn
46c941fb8c [mob][photos] Use first letter avatar for contact in contacts section and all contacts screen if no person is linked to contact 2025-02-05 17:28:13 +05:30
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
mngshm
6e0be18500 rename column name to storage_limit 2025-02-05 16:09:30 +05:30
laurenspriem
99e5bc5050 [mob][photos] Simplify 2025-02-05 16:00:43 +05:30
Neeraj Gupta
2b3177d51c [server] refactor 2025-02-05 15:44:17 +05:30
Manav Rathi
88abe4dac1 [desktop] Custom theme aware titlebar - Part 1 (#4973) 2025-02-05 15:42:43 +05:30
Manav Rathi
e1633eccb7 Ensure mergeability 2025-02-05 15:34:10 +05:30
Manav Rathi
12e441a27b Calc 2025-02-05 15:27:50 +05:30
Manav Rathi
c6497dcb5a Rename 2025-02-05 15:24:33 +05:30
laurenspriem
252ae8169d [mob][photos] Improve base locations 2025-02-05 15:15:35 +05:30
Manav Rathi
70be419562 backdrop-filter 2025-02-05 15:00:19 +05:30
mngshm
834fcf933b [server] fixed the lousy bug o.O 2025-02-05 14:34:35 +05:30
Manav Rathi
6f7e56e796 Sidebar 1 2025-02-05 14:24:04 +05:30
laurenspriem
3478720cb3 [mob][photos] Test trips selection 2025-02-05 14:17:09 +05:30
mngshm
667a544fc2 [server] refactor 2025-02-05 13:48:15 +05:30
Manav Rathi
051ea691af Use t 2025-02-05 13:21:19 +05:30
Manav Rathi
b7db8e9e77 Title 2025-02-05 13:20:13 +05:30
Manav Rathi
d2e5b87bf7 Comment 2025-02-05 13:10:10 +05:30
Manav Rathi
de5ece27f2 Make it work on macOS too 2025-02-05 13:05:48 +05:30
Manav Rathi
55871c1f2e Try env, though it doesn't seem to be working 2025-02-05 13:03:37 +05:30
Manav Rathi
71a195a4de Framework 2025-02-05 12:57:15 +05:30
Manav Rathi
320a397b1c Fix the original issue
https://www.electronjs.org/docs/latest/tutorial/dark-mode
2025-02-05 12:51:59 +05:30
Manav Rathi
a295eb39f7 drag 2025-02-05 12:29:01 +05:30
Manav Rathi
df7ffefdf8 30px is from the example gist
https://www.electronjs.org/docs/latest/tutorial/custom-title-bar#create-a-custom-title-bar
2025-02-05 12:27:26 +05:30
Manav Rathi
5e7ac4437f Custom titlebar - step 1
https://www.electronjs.org/docs/latest/tutorial/custom-title-bar
2025-02-05 12:25:10 +05:30
Manav Rathi
b855d38864 [web][desktop] Light mode (#4971) 2025-02-05 11:40:15 +05:30
Manav Rathi
23712e6bd3 Fix cast theme 2025-02-05 11:35:07 +05:30
Manav Rathi
dff5e9f4a6 dep bump 2025-02-05 11:26:11 +05:30
Manav Rathi
fe58758523 We don't seem to require this, the browser + MUI defaults are working in both modes
Tested Chrome, Safari
2025-02-05 11:15:55 +05:30
mngshm
26a407cc81 [server[ fix nil dereferencing errors when user is not a part of family 2025-02-05 11:05:12 +05:30
mngshm
7513a84ad2 [server] fix minor syntax in InviteMember parameters
Remove unused SetStorage method
2025-02-05 11:04:39 +05:30
Manav Rathi
bf70129fb6 Fix the actual issue 2025-02-05 11:01:38 +05:30
Manav Rathi
8083cdfaa6 Fainter 2025-02-05 10:29:21 +05:30
Manav Rathi
f14f1ab6bb User facing CL 2025-02-05 10:16:42 +05:30
Manav Rathi
914802f057 CL 2025-02-05 10:01:15 +05:30
Manav Rathi
80e41c9882 Special case cast 2025-02-05 09:55:10 +05:30
Manav Rathi
8d9ec328f4 unwip 2025-02-05 09:52:36 +05:30
laurenspriem
fea6d58bd4 Merge branch 'main' into memories_trip 2025-02-05 09:51:14 +05:30
Manav Rathi
963ac63898 Enable lm 2025-02-05 09:48:34 +05:30
Manav Rathi
7b704d9ea7 [web] New translations (#4967)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-02-04 19:02:10 +05:30
Ashil
46669c623b [mob][photos] Change log for release (#4965) 2025-02-04 18:57:13 +05:30
mngshm
2da115b6b7 [server[ logic for blocking upload 2025-02-04 18:53:58 +05:30
Crowdin Bot
e74c6fd582 New Crowdin translations by GitHub Action 2025-02-04 13:18:11 +00:00
Manav Rathi
4be86c4c00 [web] Light mode - Part n-1/n (#4966)
Almost ready, next PR should be the final one that enables this.
2025-02-04 18:47:23 +05:30
Manav Rathi
d21f7c1a93 lint 2025-02-04 18:43:08 +05:30
Manav Rathi
a60048a4d0 Update 2025-02-04 18:40:42 +05:30
Manav Rathi
737977358a tr 2025-02-04 18:35:48 +05:30
Manav Rathi
f03fa338b1 Fix the toggle 2025-02-04 18:31:34 +05:30
Manav Rathi
e3c09d7af0 ns 2025-02-04 18:28:07 +05:30
ashilkn
1fb6b3dc89 [mob][photos] Bump up to v0.9.94 2025-02-04 18:10:41 +05:30
ashilkn
e68fa04a14 Merge branch 'main' into change_log 2025-02-04 18:08:14 +05:30
ashilkn
daf33bcb3a [mob][photos] Update change log 2025-02-04 18:03:53 +05:30
Manav Rathi
154a46b2ef Tweak 2025-02-04 18:00:30 +05:30
Manav Rathi
584d993bc0 Fix secondary 2025-02-04 17:40:12 +05:30
Manav Rathi
ddc4c9d275 Prune 2025-02-04 17:32:01 +05:30
Manav Rathi
61b5e0ae60 Prep 2025-02-04 17:30:36 +05:30
Prateek Sunal
e0789b0d5a [mob][preview] add support for video streaming (#4253) 2025-02-04 17:25:08 +05:30
Manav Rathi
8e847f12f2 Finalize for now 2025-02-04 17:21:17 +05:30
Manav Rathi
52086eb697 Tranlucent snb 2025-02-04 17:13:51 +05:30
Manav Rathi
383b7542c8 Messes with the animation of the "Copied" snackbar in auth 2025-02-04 17:04:57 +05:30
Manav Rathi
7e50de6e61 Match colors to auth/share 2025-02-04 16:58:42 +05:30
Manav Rathi
82cb806fab ep 2025-02-04 16:50:41 +05:30
Manav Rathi
3e89692ebc Switch 2025-02-04 16:28:08 +05:30
Manav Rathi
847cba9a8b Cleanup 2025-02-04 16:12:38 +05:30
Manav Rathi
5ed9ac0578 cap 2025-02-04 16:07:52 +05:30
Manav Rathi
be790b5bc5 Gallery itself is always in dark mode 2025-02-04 15:58:40 +05:30
Manav Rathi
092640af7e Cleanup 2025-02-04 15:24:16 +05:30
Manav Rathi
f8b9bcf79f Use in people section too 2025-02-04 15:21:00 +05:30
Prateek Sunal
510768bbd6 fix: add logic for caching and loading deatils 2025-02-04 15:16:14 +05:30
Prateek Sunal
c59dd66c0d fix: logic of displayling size, height and width 2025-02-04 15:13:05 +05:30
Manav Rathi
be894d0aaa Create button 2025-02-04 15:03:19 +05:30
Prateek Sunal
aa07b53bbd fix: add delay from init 2025-02-04 14:36:24 +05:30
Laurens Priem
3caeaef2b7 [mob][photos] Memories fix (#4964)
## Description

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

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

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

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

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

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

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

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

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

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

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

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

"et" could mean "ente" (but shorter), or "ente temp", or whatever you wish for
it to mean really.
2025-02-03 17:10:17 +05:30
Manav Rathi
388add5984 Pixel 2025-02-03 17:05:57 +05:30
mngshm
10cba852d7 fix: set storage column type to BIGINT
set default storage limit if StorageLimit is empty/0
2025-02-03 17:04:59 +05:30
Neeraj
404d1feef6 [mob][photos] Contact person linking final fixes (#4951) 2025-02-03 17:03:17 +05:30
ashilkn
d6e0b85af9 [mob][photos] Bump up to v0.9.92 2025-02-03 17:01:17 +05:30
ashilkn
58c164d2c2 Merge branch 'main' into contact_person_linking_final_fixes 2025-02-03 17:00:02 +05:30
ashilkn
7830f9b1b1 [mob][photos] Chore 2025-02-03 16:59:31 +05:30
mngshm
23db087b6a same as previous commit but for methods and 2025-02-03 16:56:10 +05:30
mngshm
43b9ae6539 querying storage in families table as convertRowsToFamilyMember also expects storage 2025-02-03 16:51:57 +05:30
Neeraj
efe3240bf4 [mob] Fix personAvatar when low score face is manually assigned (#4950)
## Description

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

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

## Description

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

Complete first iteration of time based memories

## Tests

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Found via this comment:

> The build script at
> https://github.com/kleisauke/libvips-packaging/blob/main/build/lin.sh can be
> used as a reference to compile libvips and its dependencies as a single,
> statically-linked shared library.
>
> https://github.com/libvips/libvips/discussions/3426#discussioncomment-5507520
2025-01-28 16:51:51 +05:30
Manav Rathi
a6f2eae418 static more 2025-01-28 16:51:51 +05:30
Manav Rathi
84e16057b6 Trying with everything disabled 2025-01-28 16:51:51 +05:30
Manav Rathi
b91ee793bf static lib 2025-01-28 16:51:51 +05:30
laurenspriem
0059f1817b [mob][photos] Add todo 2025-01-28 16:47:50 +05:30
laurenspriem
dc401f6f72 [mob][photos] Sort 2025-01-28 16:36:16 +05:30
laurenspriem
69025f7ebf [mob][photos] Increase threshold 2025-01-28 16:27:31 +05:30
ashilkn
6176ec6cb9 [mob][photos] Revert back to using figma_squircle v0.5.3 from pub.dev since we've reverted to flutter v3.24.x 2025-01-28 13:36:36 +05:30
Neeraj Gupta
6bdc1f5d65 [mob] Add generic type for fileID 2025-01-28 13:30:24 +05:30
ashilkn
f5ee666a52 [mob][photos] Auto generated changes 2025-01-28 13:27:37 +05:30
ashilkn
fc89b9bfc1 [mob][photos] Bump up to v0.9.86 2025-01-28 13:25:41 +05:30
ashilkn
2071cbc61b Merge branch 'main' into mobile-preview-video 2025-01-28 13:24:09 +05:30
Prateek Sunal
e06bfd0724 Merge branch 'main' into mobile-preview-video 2025-01-28 12:58:54 +05:30
laurenspriem
e50ab7ca84 [mob][photos] First iteration of file selection 2025-01-28 10:43:58 +05:30
laurenspriem
a575e5f3c8 [mob][photos] Functions to get embeddings of specific files 2025-01-28 10:43:22 +05:30
Neeraj Gupta
69661b0d30 [mob] Put clip queries in same db class 2025-01-27 16:27:20 +05:30
Prateek Sunal
69ddb6fb2c Merge branch 'main' into mobile-preview-video 2025-01-27 13:52:46 +05:30
Prateek Sunal
6aa3733111 Update pubspec.yaml 2025-01-26 13:27:58 +05:30
Prateek Sunal
9e3d412e99 fix: use sdk 34 2025-01-26 03:03:41 +05:30
Prateek Sunal
858de20726 chore: bump version 2025-01-25 23:21:19 +05:30
Prateek Sunal
453f23ffba Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-25 23:20:42 +05:30
Prateek Sunal
17c2bd24e4 fix: HDR to SDR conversion 2025-01-25 23:19:19 +05:30
Neeraj Gupta
771d12bd9b [mob] Define interface for ML DB 2025-01-25 15:16:01 +05:30
Prateek Sunal
edb5e901e4 fix: use ffmpeg 2025-01-22 02:03:06 +05:30
Neeraj Gupta
3cf050c2e8 [mob] Bump version 2025-01-18 15:45:49 +05:30
Prateek Sunal
3d89d852a0 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-18 04:22:25 +05:30
Prateek Sunal
815848450c fix: turn rotate off and re-encode to fix iOS issue 2025-01-18 04:20:50 +05:30
Prateek Sunal
15446d3d98 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-17 01:03:24 +05:30
Neeraj Gupta
0de1b344ad Merge branch 'main' into mobile-preview-video 2025-01-15 11:55:36 +05:30
Prateek Sunal
882850e3d5 fix: null check issue 2025-01-14 17:59:19 +05:30
Prateek Sunal
cb9083677f Merge branch 'main' into mobile-preview-video 2025-01-14 17:42:26 +05:30
Prateek Sunal
c302f1ba2a fix: remove unwanted key 2025-01-14 17:26:53 +05:30
Prateek Sunal
167ed91a01 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-13 13:36:59 +05:30
Prateek Sunal
b595272713 fix: check isUploading & only upload for internal user 2025-01-13 13:36:43 +05:30
Prateek Sunal
6e258490fe fix: append to a set if already compressing 2025-01-13 05:49:48 +05:30
Prateek Sunal
ca118c397b fix: match collection id to "Camera" 2025-01-13 05:40:29 +05:30
Prateek Sunal
04f860c97a feat: upgrade package to support bitrate in video compress 2025-01-10 01:52:03 +05:30
Prateek Sunal
021cde5b7e Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-08 12:02:55 +05:30
Prateek Sunal
ca08f39a4e fix: add custom bitrate, framerate for preview compress 2025-01-08 02:25:47 +05:30
Prateek Sunal
05ee252be8 chore: bump versions 2025-01-08 02:25:33 +05:30
Prateek Sunal
6c7a409c35 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2025-01-08 01:40:29 +05:30
Neeraj Gupta
acc367d522 Lint fix 2024-12-20 16:24:32 +05:30
Neeraj Gupta
1de19e7a3e [mob] Bump version 2024-12-20 15:44:57 +05:30
Neeraj Gupta
1f122c79f7 [mob] Switch to medium quality 2024-12-20 15:44:16 +05:30
Neeraj Gupta
7a99377dc9 [mob] Fix null pointer in playlist cache 2024-12-20 11:35:51 +05:30
Neeraj Gupta
50f4cb8e13 Bump version 2024-12-19 12:24:12 +05:30
Neeraj Gupta
ff01477021 Show size in toast 2024-12-19 12:23:50 +05:30
Neeraj Gupta
6c4c0a4ed9 Merge branch 'main' into mobile-preview-video 2024-12-19 12:10:09 +05:30
Neeraj Gupta
eba6429e99 [mob] use unique prefix for each preview generation 2024-12-18 16:53:30 +05:30
Neeraj Gupta
a197851fe9 generated strings 2024-12-18 16:40:36 +05:30
Neeraj Gupta
d359d750c4 [mob] Show progress toast 2024-12-18 16:40:26 +05:30
Neeraj Gupta
1115bf7b56 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-12-18 15:42:07 +05:30
Prateek Sunal
5dba461481 fix: use object id for cache video and playlist keys 2024-12-15 00:36:34 +05:30
Prateek Sunal
f9df92212a feat: cache playlist and video 2024-12-12 03:00:57 +05:30
Prateek Sunal
da38726f40 fix: cache preview file 2024-12-10 01:43:05 +05:30
Neeraj Gupta
f7b89b7126 Use cached playlist in debugMode 2024-12-08 16:27:52 +05:30
Neeraj Gupta
f19f1b0c68 [mob] Log video compression progress 2024-12-05 15:40:20 +05:30
Neeraj Gupta
1a3716f649 Merge branch 'main' into mobile-preview-video 2024-12-05 10:47:01 +05:30
Prateek Sunal
ffeb9da0d6 fix(preview): cache previewed list, use native player by default 2024-12-03 00:11:18 +05:30
Prateek Sunal
3d96e4bd94 fix: revert source of chewie and video_player 2024-11-29 19:45:34 +05:30
Prateek Sunal
bf19aa61d7 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-29 16:08:44 +05:30
Prateek Sunal
9aa49a7067 fix: remove submodules 2024-11-29 16:08:19 +05:30
Prateek Sunal
a299dbcd6b chore: bump lock 2024-11-29 13:17:01 +05:30
Prateek Sunal
3a50c45dde fix: init media kit video_player only when fg 2024-11-29 13:16:49 +05:30
Prateek Sunal
d84edcf85c fix: only use media_kit for iOS 2024-11-28 22:27:23 +05:30
Prateek Sunal
7193a61a11 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-28 22:25:20 +05:30
Prateek Sunal
03bfd854df chore: bump packages 2024-11-28 22:22:59 +05:30
Prateek Sunal
d8490322d9 fix: update for iOS 2024-11-28 22:22:33 +05:30
Prateek Sunal
13da082cda fix: check files db if preview exist 2024-11-28 21:32:26 +05:30
Prateek Sunal
f7fc50f2e6 fix: don't show error 2024-11-28 15:09:37 +05:30
Neeraj Gupta
fe91f3ee9b Merge branch 'mobile-preview-video' of https://github.com/ente-io/auth into mobile-preview-video 2024-11-28 14:52:51 +05:30
Neeraj Gupta
7bc688d18b Merge branch 'main' into mobile-preview-video 2024-11-25 09:58:24 +05:30
Prateek Sunal
426cd70c31 refactor: simplify error handling and remove unused imports in preview video components 2024-11-25 02:24:40 +05:30
Prateek Sunal
1fa3d87369 fix: show toast about video is playing 2024-11-25 02:24:32 +05:30
Prateek Sunal
8152159583 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-25 00:05:51 +05:30
Prateek Sunal
68ac9cbe26 fix: remove unwanted code 2024-11-19 13:42:18 +05:30
Prateek Sunal
01b7a01dc5 Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-15 02:02:51 +05:30
Prateek Sunal
bbfa447e42 fix: source preview file as videoplayer's input 2024-11-11 23:55:33 +05:30
Prateek Sunal
c83bd41dae Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-11-11 22:01:30 +05:30
Neeraj Gupta
223b22ef46 [mob] Add method to get preview video url 2024-11-08 16:32:30 +05:30
Neeraj Gupta
982b4a4244 [mob] Sync fd early 2024-11-08 16:22:43 +05:30
Neeraj Gupta
3a09d50972 Merge branch 'main' into mobile-preview-video 2024-11-07 17:52:08 +05:30
Neeraj Gupta
9898baddbb [mob] Update preview code to use latest api 2024-10-01 22:33:31 +05:30
Neeraj Gupta
520d4e4f26 [mob] Fix file getter 2024-10-01 21:24:12 +05:30
Neeraj Gupta
ba04e20aeb erge branch 'main' into mobile-preview-video 2024-09-30 16:04:38 +05:30
Neeraj Gupta
672c209140 Merge branch 'main' into mobile-preview-video 2024-09-04 17:37:24 +05:30
Neeraj Gupta
f15c9ec4d2 Merge branch 'main' into mobile-preview-video 2024-08-28 14:45:34 +05:30
Prateek Sunal
5c760f8384 fix: chunk and upload video code 2024-08-15 00:36:29 +05:30
Prateek Sunal
f1b7deb706 Merge branch 'mobile-preview-video' of https://github.com/ente-io/ente into mobile-preview-video 2024-08-13 04:38:33 +05:30
Prateek Sunal
b7e60297a0 fix: support for 3.24 as well as add button to cache preview 2024-08-13 04:36:01 +05:30
Prateek Sunal
4456797e90 chore: update to full gpl ffmpeg kit 2024-08-13 02:59:45 +05:30
Prateek Sunal
0e5942446d Merge remote-tracking branch 'origin/clip_face_v2' into mobile-preview-video 2024-08-13 02:24:59 +05:30
Prateek Sunal
6918987ffe Merge remote-tracking branch 'origin/main' into mobile-preview-video 2024-08-05 21:27:46 +05:30
Prateek Sunal
9130e86460 feat(mobile): add preview video store 2024-08-05 03:57:16 +05:30
Prateek Sunal
b2d2f0d76d feat(mobile): init preview video branch 2024-07-26 19:52:12 +05:30
775 changed files with 25213 additions and 18329 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

@@ -21,6 +21,11 @@
"title": "airtm",
"hex": "000000"
},
{
"title": "AJ Bell",
"slug": "aj_bell",
"hex": "c41230"
},
{
"title": "aliyun",
"altNames": [
@@ -30,9 +35,18 @@
{
"title": "Amazon"
},
{
"title": "Ankama",
"slug": "ankama"
},
{
"title": "Anycoin Direct",
"slug": "anycoindirect"
},
{
"title": "Aruba",
"slug": "aruba",
"hex": "ef8a33"
},
{
"title": "AscendEX"
@@ -194,6 +208,10 @@
{
"title": "Bugzilla"
},
{
"title": "ButterflyMX",
"slug": "butterflymx"
},
{
"title": "Bybit"
},
@@ -292,6 +310,9 @@
{
"title": "Discourse"
},
{
"title": "Deloitte"
},
{
"title": "DMarket"
},
@@ -347,6 +368,14 @@
{
"title": "Estateguru"
},
{
"title": "EVEOnline",
"slug": "eve_online",
"altNames": [
"EVE Online"
],
"hex": "858585"
},
{
"title": "Fastmail"
},
@@ -371,9 +400,17 @@
{
"title": "ForUsAll"
},
{
"title": "FreeTaxUSA",
"slug": "freetaxusa"
},
{
"title": "G2A"
},
{
"title": "Gate.io",
"slug": "gateio.svg"
},
{
"title": "GitHub"
},
@@ -492,6 +529,12 @@
{
"title": "Kagi"
},
{
"title": "Keygen",
"altNames": [
"keygen.sh"
]
},
{
"title": "Kick"
},
@@ -749,6 +792,11 @@
"altNames": [
"欧易"
]
},
{
"title": "OnShape",
"slug": "onshape",
"hex": "7abb5e"
},
{
"title": "Parqet",
@@ -846,6 +894,11 @@
{
"title": "RealMe",
"slug": "realme"
},
{
"title": "RealVNC",
"slug": "realvnc",
"hex": "488aec"
},
{
"title": "Registro br",
@@ -890,6 +943,10 @@
{
"title": "Samsung"
},
{
"title": "Seafile",
"slug": "seafile"
},
{
"title": "Sendgrid"
},
@@ -1105,13 +1162,6 @@
"title": "WARGAMING.NET",
"slug": "wargamingnet"
},
{
"title": "World Cube Association",
"altNames": [
"WCA",
"worldcubeassociation"
]
},
{
"title": "Wealthfront"
},
@@ -1140,6 +1190,14 @@
"Work OS"
]
},
{
"title": "World Cube Association",
"slug": "wca",
"altNames": [
"WCA",
"worldcubeassociation"
]
},
{
"title": "WYZE"
},

View File

@@ -0,0 +1,7 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1507 1556" width="1507" height="1556">
<title>logo_grey-svg</title>
<style>
.s0 { fill: #c41230 }
</style>
<path id="Layer" class="s0" d="m759.6 651c10.6 63.6 7.5 126.3-6.8 185.3-0.6-3.5-0.8-7-1.5-10.6-51.7-311.8-346.3-522.7-657.7-470.8-32.4 5.3-63.6 13.5-93.6 23.9 62.4-54.7 140.3-93.4 228.3-108.1 251.6-41.9 489.5 128.4 531.3 380.3zm84.2 340c-48.7 59.8-107.3 106.4-171.5 140 2.8-3.3 5.7-6.4 8.4-9.7 238.7-292.4 195.6-723.2-96.4-962.3-30.4-24.8-62.2-46.4-95.3-65.2 98.4 12.9 194.5 52.4 276.9 119.9 236 193.2 270.9 541.2 77.9 777.3zm409.3-532.7c66.8 402.8-204.2 783.4-605.6 852.1 313.4-230.6 489-625.2 420.9-1035.7-16.2-97.3-45.1-189.3-84.7-274.7 138.4 110.2 238.1 269.9 269.4 458.3zm241.5 84.5c78.6 473.9-241.4 921.9-714.8 1000.6-195.5 32.6-386.6-3.2-549.2-89.5 98.5 11.2 200.2 9.2 302.8-7.9 537.8-89.4 917.1-559.8 908.4-1089.5 23.9 58.8 41.9 121 52.8 186.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 943 B

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

After

Width:  |  Height:  |  Size: 1.4 KiB

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

@@ -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

@@ -48,6 +48,7 @@
"nextTotpTitle": "التالي",
"deleteCodeTitle": "حذف الرمز؟",
"deleteCodeMessage": "هل أنت متأكد من أنك تريد حذف هذه الشيفرة؟ هذا الإجراء لا رجعة فيه.",
"trash": "سلة المهملات",
"viewLogsAction": "عرض السجلات",
"sendLogsDescription": "سوف يُرسل هذا السجلات لنا لمساعدتنا على تصحيح مشكلتك. بينما نتخذ الاحتياطات لضمان عدم تسجيل المعلومات الحساسة، نشجعك على رؤية هذه السجلات قبل مشاركتها.",
"preparingLogsTitle": "جارٍ إعداد السجلات...",
@@ -197,6 +198,8 @@
"enterDetailsManually": "أدخل التفاصيل يدوياً",
"edit": "تعديل",
"share": "مشاركة",
"shareCodes": "شارك الرموز",
"restore": "استعادة",
"copiedToClipboard": "تم النسخ إلى الحافظة",
"copiedNextToClipboard": "تم نسخ الرموز التالية إلى الحافظة",
"error": "خطأ",
@@ -248,6 +251,10 @@
"areYouSureYouWantToLogout": "هل أنت متأكد من أنك تريد تسجيل الخروج؟",
"yesLogout": "نعم، تسجيل الخروج",
"exit": "خروج",
"theme": "السمة",
"lightTheme": "فاتح",
"darkTheme": "داكن",
"systemTheme": "النظام",
"verifyingRecoveryKey": "التحقق من مفتاح الاسترداد...",
"recoveryKeyVerified": "تم التحقق من مفتاح الاسترداد",
"recoveryKeySuccessBody": "رائع! مفتاح الاسترداد الخاص بك صالح. شكرا لك على التحقق.\n\nيرجى تذكر الاحتفاظ بنسخة احتياطية من مفتاح الاسترداد بشكل آمن.",
@@ -318,6 +325,9 @@
}
}
},
"manualSort": "مخصّص",
"mostFrequentlyUsed": "مستخدم بكثرة",
"mostRecentlyUsed": "مستخدمة مؤخراً",
"activeSessions": "الجلسات النشطة",
"somethingWentWrongPleaseTryAgain": "حدث خطأ ما، يرجى المحاولة مرة أخرى",
"thisWillLogYouOutOfThisDevice": "سيؤدي هذا إلى تسجيل خروجك من هذا الجهاز!",
@@ -350,6 +360,7 @@
"sigInBackupReminder": "يرجى تصدير الرموز الخاصة بك للتأكد من أن لديك نسخة احتياطية يمكنك استعادتها منها.",
"offlineModeWarning": "لقد اخترت المضي قدما بدون نسخ احتياطية. يرجى أخذ نسخ احتياطية يدوية للتأكد من سلامة الرموز الخاصة بك.",
"showLargeIcons": "إظهار أيقونات كبيرة",
"compactMode": "الوضع المضغوط",
"shouldHideCode": "إخفاء الرموز",
"doubleTapToViewHiddenCode": "يمكنك النقر مرتين على أي عنصر لعرض الرمز",
"focusOnSearchBar": "التركيز على البحث عند بدء التطبيق",
@@ -468,5 +479,11 @@
"pinLock": "قفل رقم التعريف الشخصي",
"enterPin": "أدخل رقم التعريف الشخصي",
"setNewPin": "عين رقم تعريف شخصي جديد",
"importFailureDescNew": "تعذر إعراب الملف المنتقى."
"importFailureDescNew": "تعذر إعراب الملف المنتقى.",
"duplicateCodes": "رموز مكررة",
"noDuplicates": "✨ لا تكرارات",
"youveNoDuplicateCodesThatCanBeCleared": "ليس لديك رموز مكررة يمكن مسحها",
"deselectAll": "ألغِ تحديد الكل",
"selectAll": "حدد الكل",
"deleteDuplicates": "احذف التكرار"
}

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",
@@ -502,5 +504,13 @@
"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

@@ -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,17 @@
"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",
"youveNoDuplicateCodesThatCanBeCleared": "Sie haben keine doppelten Codes, die gelöscht werden können",
"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

@@ -504,5 +504,12 @@
"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

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

View File

@@ -8,13 +8,13 @@
},
"onBoardingGetStarted": "प्रारंभ करें",
"setupFirstAccount": "अपना पहला अकाउंट सेटअप करें",
"importScanQrCode": "QR कोड स्कैन करें",
"importScanQrCode": "एक QR कोड स्कैन करें",
"qrCode": "QR कोड",
"importEnterSetupKey": "",
"importAccountPageTitle": "अकाउंट विवरण डालें",
"incorrectDetails": "ग़लत विवरण",
"pleaseVerifyDetails": "कृपया विवरण सत्यापित करें और पुनः प्रयास करें",
"codeIssuerHint": "ारीकर्ता",
"codeIssuerHint": "ारीकर्ता",
"codeSecretKeyHint": "सीक्रेट कुंजी",
"secret": "सीक्रेट",
"all": "सभी",
@@ -39,6 +39,10 @@
"pleaseLoginAgain": "कृपया फिर से लॉगिन करें",
"loggingOut": "लॉग आउट हो रहा है...",
"saveAction": "सेव करें",
"deleteCodeMessage": "क्या आप वाकई इस कोड को हटाना चाहते हैं? इस क्रिया को वापस नहीं किया जा सकता",
"trashCode": "?",
"trashCodeMessage": "क्या आप वाकई {account} के लिए कोड नष्ट करना चाहते हैं?",
"trash": "नष्ट करें",
"viewLogsAction": "लॉग देखें",
"preparingLogsTitle": "लॉग तैयार किये जा रहे हैं...",
"emailLogsTitle": "लॉग ईमेल करें",
@@ -50,6 +54,7 @@
}
}
},
"copyEmailAction": "ईमेल कॉपी करें",
"exportLogsAction": "लॉग एक्सपोर्ट करें",
"reportABug": "बग रिपोर्ट करें",
"reportBug": "बग रिपोर्ट करें",
@@ -79,5 +84,24 @@
"cancel": "रद्द करें",
"yes": "हाँ",
"no": "नहीं",
"settings": "सेटिंग"
"settings": "सेटिंग",
"pleaseTryAgain": "कृपया पुन: प्रयास करें",
"newUser": "एंटे में नए उपयोगकर्ता",
"delete": "हटाएं",
"enterYourPasswordHint": "अपना पासवर्ड दर्ज करें",
"forgotPassword": "पासवर्ड भूल गए",
"oops": "ओह",
"suggestFeatures": "विशेषताएं सुझाएं",
"faq": "अक्सर किये गए सवाल",
"somethingWentWrongMessage": "कुछ गड़बड़ हुई है, कृपया दोबारा प्रयास करें",
"leaveFamily": "परिवार छोड़ें",
"leaveFamilyMessage": "क्या आप सच में परिवार प्लान छोड़ना चाहते हैं?",
"inFamilyPlanMessage": "आप परिवार प्लान पर हैं!",
"hintForMobile": "कोड को संपादित करने या हटाने के लिए उसे लंबी देर तक दबाए।",
"hintForDesktop": "कोड को संपादित करने या हटाने के लिए उस पर राइट क्लिक करें।",
"scan": "स्कैन करें",
"scanACode": "कोड स्कैन करें",
"verify": "सत्यापित करें",
"verifyEmail": "ईमेल सत्यापित करें",
"twoFactorAuthTitle": "दो-चरणीय प्रमाणीकरण |"
}

View File

@@ -504,5 +504,13 @@
"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

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

@@ -504,5 +504,11 @@
"deselectAll": "Naikinti visų pasirinkimą",
"selectAll": "Pasirinkti viską",
"deleteDuplicates": "Ištrinti dublikatus",
"plainHTML": "Grynasis HTML"
"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

@@ -504,5 +504,13 @@
"deselectAll": "Alles deselecteren",
"selectAll": "Alles selecteren",
"deleteDuplicates": "Dubbelen verwijderen",
"plainHTML": "Alleen HTML"
"plainHTML": "Alleen HTML",
"tellUsWhatYouThink": "Vertel ons wat je vindt",
"dropReview": "Laat een beoordeling achter in de App/Play Store",
"supportEnte": "Steun <bold-green>ente</bold-green>",
"giveUsAStarOnGithub": "Geef ons een ster op Github",
"free5GB": "5GB gratis op <bold-green>ente</bold-green> Photos",
"loginWithAuthAccount": "Log in met je Auth account",
"freeStorageOffer": "10% korting op <bold-green>ente</bold-green> photos",
"freeStorageOfferDescription": "Gebruik de code \"AUTH\" voor 10% korting op je eerste jaar"
}

View File

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

View File

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

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "Kurtarma anahtarını kullan",
"incorrectPasswordTitle": "Yanlış şifre",
"welcomeBack": "Tekrar hoş geldiniz!",
"emailAlreadyRegistered": "E-posta zaten kayıtlı.",
"emailNotRegistered": "E-posta kayıtlı değil.",
"madeWithLoveAtPrefix": "❤️ ile şurada yapılmıştır ",
"supportDevs": "Bu projeyi desteklemek için <bold-green>ente</bold-green> kanalına abone olun",
"supportDiscount": "İlk yılda %10 indirim için \"AUTH\" kupon kodunu kullanın",
@@ -333,6 +335,7 @@
}
},
"manualSort": "Özel",
"editOrder": "Sıralamayı düzenle",
"mostFrequentlyUsed": "Sık kullanılan",
"mostRecentlyUsed": "Son kullanılan",
"activeSessions": "Aktif oturumlar",
@@ -501,5 +504,6 @@
"deselectAll": "Tümünün seçimini kaldır",
"selectAll": "Tümünü seç",
"deleteDuplicates": "Yinelenenleri sil",
"plainHTML": "Sade HTML"
"plainHTML": "Sade HTML",
"supportEnte": "<bold-Green>Ente</bold-Green>'yi destekle"
}

View File

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

View File

@@ -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

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

View File

@@ -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

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

View File

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

View File

@@ -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)

6
desktop/.gitignore vendored
View File

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

View File

@@ -1,9 +1,18 @@
# CHANGELOG
## v1.7.9 (Unreleased)
## v1.7.10 (Unreleased)
- 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
- Parse description from image metadata.

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

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

View File

@@ -1,6 +1,6 @@
{
"name": "ente",
"version": "1.7.9-beta",
"version": "1.7.10-beta",
"private": true,
"description": "Desktop client for Ente Photos",
"repository": "github:ente-io/photos-desktop",
@@ -19,7 +19,7 @@
"postinstall": "electron-builder install-app-deps",
"lint": "yarn prettier --check --log-level warn . && yarn eslint && yarn tsc",
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc",
"prepare": "node scripts/magick.js"
"prepare": "node scripts/vips.js"
},
"resolutions": {
"jackspeak": "2.1.1"
@@ -31,9 +31,9 @@
"clip-bpe-js": "^0.0.6",
"comlink": "^4.4.2",
"compare-versions": "^6.1.1",
"electron-log": "^5.2.4",
"electron-log": "^5.3.0",
"electron-store": "^8.2.0",
"electron-updater": "^6.4.0-alpha.3",
"electron-updater": "^6.4.0",
"ffmpeg-static": "^5.2.0",
"lru-cache": "^11.0.2",
"next-electron-server": "^1.0.0",
@@ -41,7 +41,7 @@
"onnxruntime-node": "^1.20.1"
},
"devDependencies": {
"@eslint/js": "^9.18.0",
"@eslint/js": "^9.19.0",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0.5",
"@types/eslint__js": "^8.42.3",
@@ -49,15 +49,15 @@
"ajv": "^8.17.1",
"concurrently": "^9.1.2",
"cross-env": "^7.0.3",
"electron": "^34.0.0",
"electron-builder": "^26.0.0-alpha.10",
"electron": "^34.1.1",
"electron-builder": "^26.0.0",
"eslint": "^9",
"prettier": "3.4.2",
"prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.8",
"shx": "^0.3.4",
"typescript": "^5.7.2",
"typescript-eslint": "^8.21.0"
"typescript-eslint": "^8.23.0"
},
"packageManager": "yarn@1.22.22",
"productName": "ente"

View File

@@ -3,8 +3,8 @@ const fsp = require("fs/promises");
/**
* This hook is invoked during the initial build (e.g. when triggered by "yarn
* build"), and importantly, on each rebuild for a different architecture during
* the build. We use it to ensure that the magick binary is for the current
* architecture being built. See "[Note: ImageMagick]" for more details.
* the build. We use it to ensure that the vips binary is for the current
* architecture being built. See "[Note: vips]" for more details.
*
* The documentation for this hook is at:
* https://www.electron.build/app-builder-lib.interface.configuration#beforebuild
@@ -22,8 +22,10 @@ const fsp = require("fs/promises");
* },
* arch: 'arm64'
*
* Note that we must not return falsey from this function, because
* > Resolving to false will skip dependencies install or rebuild.
* Note that we must not return falsey from this function, because:
*
* > Resolving to false will skip dependencies install or rebuild.
*
*/
module.exports = async (context) => {
const { appDir, platform, arch } = context;
@@ -35,14 +37,14 @@ module.exports = async (context) => {
// https://github.com/electron-userland/electron-builder/blob/master/packages/builder-util/src/arch.ts#L9
// https://nodejs.org/api/process.html#processarch
if (arch == process.arch) {
// `magick.js` would've already downloaded the file, nothing to do.
// `vips.js` would've already downloaded the file, nothing to do.
return true;
}
const download = async (downloadName, outputName) => {
const out = `${appDir}/build/${outputName}`;
console.log(`Downloading ${downloadName}`);
const downloadPath = `https://github.com/ente-io/ImageMagick/releases/download/2025-01-21/${downloadName}`;
const downloadPath = `https://github.com/ente-io/libvips-packaging/releases/download/v8.16.0/${downloadName}`;
return fetch(downloadPath)
.then((res) => res.blob())
.then((blob) => fsp.writeFile(out, blob.stream()))
@@ -51,13 +53,13 @@ module.exports = async (context) => {
switch (`${platform.nodeName}-${arch}`) {
case "linux-x64":
await download("magick-x86_64", "magick");
await download("vips-x64", "vips");
case "linux-arm64":
await download("magick-aarch64", "magick");
await download("vips-arm64", "vips");
case "win32-x64":
await download("magick-x64.exe", "magick.exe");
await download("vips-x86_64.exe", "vips.exe");
case "linux-arm64":
await download("magick-arm64.exe", "magick.exe");
await download("vips-aarch64.exe", "vips.exe");
}
return true;

View File

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

View File

@@ -1,127 +0,0 @@
on:
workflow_dispatch:
push: # Push a tag to build and create a draft release
tags:
- "*"
name: binaries-for-ente
jobs:
create_magick_binary:
name: Create magick binary (Linux)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-24.04, ubuntu-24.04-arm]
compiler: [gcc]
include:
- os: ubuntu-24.04
arch: x86_64
- os: ubuntu-24.04-arm
arch: aarch64
- compiler: gcc
cxx_compiler: g++
packages: gcc g++
steps:
- name: Install dependencies
run: |
set -e
export DEBIAN_FRONTEND=noninteractive
sudo apt update -y
sudo apt install -y autoconf curl fuse git kmod libbz2-dev libdjvulibre-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libharfbuzz-dev liblcms-dev libopenexr-dev libopenjp2-7-dev libturbojpeg0-dev liblqr-dev libraqm-dev libtiff-dev libwebp-dev libx11-dev libxml2-dev liblzma-dev make software-properties-common wget ${{ matrix.packages }}
sudo add-apt-repository ppa:git-core/ppa -y
sudo apt install -y git
sudo add-apt-repository ppa:strukturag/libheif -y
sudo add-apt-repository ppa:strukturag/libde265 -y
sudo apt install libheif-dev -y
- name: Checkout
uses: actions/checkout@v4
# Avoid fatal: detected dubious ownership in repository at '/__w/ImageMagick/ImageMagick'
# Possible workaround: https://github.com/actions/runner/issues/2033#issuecomment-1598547465
- name: Flag current workspace as safe for git
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: Download AppImage
run: |
set -e
sudo apt install -y file
mkdir -p out/app-image
cd out/app-image
wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-${{ matrix.arch }}.AppImage" | head -n 1 | cut -d '"' -f 2)
chmod +x appimagetool-*.AppImage
- name: Build ImageMagick
env:
CFLAGS:
-Wno-deprecated-declarations -Wdeclaration-after-statement
-Wno-error=unused-variable
CC: ${{ matrix.compiler }}
CXX: ${{ matrix.cxx_compiler }}
run: |
set -e
./configure --with-quantum-depth=16 --without-magick-plus-plus --without-perl --without-x --disable-docs --prefix=/usr
make
make install DESTDIR=$(readlink -f out/appdir)
- name: Create ImageMagick AppImage
run: |
set -e
mkdir -p out/appdir/usr/share/applications/
cp app-image/imagemagick.desktop out/appdir/usr/share/applications/
mkdir -p out/appdir/usr/share/icons/hicolor/256x256/apps/
cp app-image/icon.png out/appdir/usr/share/icons/hicolor/256x256/apps/imagemagick.png
unset QTDIR
unset QT_PLUGIN_PATH
unset LD_LIBRARY_PATH
export VERSION=7
cd out
./app-image/appimagetool-*.AppImage --appimage-extract-and-run -s deploy appdir/usr/share/applications/*.desktop
chmod +x appdir/usr/lib/ld-linux-aarch64.so.1 || true
./app-image/appimagetool-*.AppImage --appimage-extract-and-run appdir
mkdir artifacts
cp ImageMagick*.AppImage artifacts/magick-${{ matrix.arch }}
- name: Upload ImageMagick AppImage
uses: actions/upload-artifact@v4
with:
name: magick-${{ matrix.arch }}
path: out/artifacts
- name: Create a draft GitHub release
uses: ncipollo/release-action@v1
with:
artifacts: "out/artifacts/*"
draft: true
allowUpdates: true
updateOnlyUnreleased: true
download_and_keep_windows_binaries:
name: Download magick binary (Windows)
runs-on: ubuntu-24.04
steps:
- name: Download
run: |
mkdir -p out/artifacts
curl -LO https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-43-portable-Q16-x64.zip
unzip ImageMagick-7.1.1-43-portable-Q16-x64.zip
cp ImageMagick-7.1.1-43-portable-Q16-x64/magick.exe out/artifacts/magick-x64.exe
curl -LO https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-43-portable-Q16-arm64.zip
unzip ImageMagick-7.1.1-43-portable-Q16-arm64.zip
cp ImageMagick-7.1.1-43-portable-Q16-arm64/magick.exe out/artifacts/magick-arm64.exe
- name: Upload ImageMagick exes
uses: actions/upload-artifact@v4
with:
name: magick-${{ matrix.arch }}
path: out/artifacts
- name: Create a draft GitHub release
uses: ncipollo/release-action@v1
with:
artifacts: "out/artifacts/*"
draft: true
allowUpdates: true
updateOnlyUnreleased: true

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

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

View File

@@ -1,2 +0,0 @@
1.heic
1.jpeg

View File

@@ -1,18 +0,0 @@
FROM ubuntu:24.04
# https://github.com/libvips/libvips/blob/master/.github/workflows/ci.yml
RUN apt-get update -y && apt-get install -y \
meson pkg-config \
libarchive-dev libcfitsio-dev libcgif-dev \
libexif-dev libexpat1-dev libffi-dev \
libfftw3-dev libheif-dev libheif-plugin-aomenc \
libheif-plugin-x265 libhwy-dev libimagequant-dev \
libjpeg-dev libjxl-dev liblcms2-dev \
libmatio-dev libnifti-dev libopenexr-dev \
libopenjp2-7-dev libopenslide-dev libpango1.0-dev \
libpng-dev libpoppler-glib-dev librsvg2-dev \
libtiff5-dev libwebp-dev
RUN apt-get install -y git && git clone --depth 1 https://github.com/libvips/libvips
WORKDIR /libvips

View File

@@ -1,74 +0,0 @@
FROM debian:bullseye
# Don't care about layer size.
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
gcc-10 \
make \
pkg-config
# Don't care about layer size.
RUN apt-get install -y --no-install-recommends \
python3-minimal \
python3-pip \
python3-setuptools \
patchelf
RUN python3 -m pip \
--disable-pip-version-check \
--no-cache-dir \
install \
'staticx==0.12.0'
# Don't care about layer caching, because I'm only using docker for building.
RUN apt-get install -y --no-install-recommends \
ca-certificates \
curl \
g++ \
g++-10 \
libglib2.0-dev \
libexpat1-dev \
libjpeg-dev \
libpng-dev \
libimagequant-dev \
libexif-dev \
liborc-0.4-dev \
&& rm -rf /var/lib/apt/lists
# TODO: Vendored source to remove test/ and doc/ with patches to remove test/ from configure.
# This would also remove the need to install ca-certificates + curl.
# TODO: libspng build with meson, miniz to replace libpng-dev.
# https://github.com/randy408/libspng/blob/master/docs/build.md#meson
# Then, publish the final image somewhere.
WORKDIR /build
RUN curl -sL https://github.com/libvips/libvips/releases/download/v8.10.1/vips-8.10.1.tar.gz | \
tar -xz -f- --strip-components=1
# XXX: -static doesn't work here. I'm using staticx to make the final vips binary static.
# Could also try clang.
# TODO: webp support
RUN CFLAGS="-O2 -flto -pipe" CXXFLAGS="-O2 -flto -pipe" \
./configure \
--disable-deprecated \
--disable-shared \
--disable-static \
--disable-dependency-tracking \
--disable-gtk-doc
# This is the fastest easiest way I found to compile the
# CLI as fast as possible. You can probably get more optimal,
# but it'd be a lot harder wrestling autotools.
RUN cd libvips \
&& make -j"$(nproc)"
RUN cd tools \
&& make -j"$(nproc)" vips
RUN cd tools \
&& staticx vips /bin/vips \
&& strip -s /bin/vips
ENTRYPOINT ["/bin/vips"]
CMD ["--help"]

View File

@@ -1,38 +0,0 @@
FROM --platform=linux/arm64/v8 alpine:3.18
ARG VIPS_VERSION=8.14.5
ARG ALPINE_VERSION=3.18
# Environment variables
ENV VIPS_HOME=/usr/local/vips-${VIPS_VERSION}
ENV VIPS_BLOCK_UNTRUSTED=true \
LD_LIBRARY_PATH=$VIPS_HOME/lib \
PKG_CONFIG_PATH=$VIPS_HOME/lib/pkgconfig \
PATH=$PATH:$VIPS_HOME/bin \
WORKDIR=/usr/local/src
WORKDIR $WORKDIR
RUN apk add xz \
&& wget https://github.com/libvips/libvips/releases/download/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz \
&& tar -xf vips-${VIPS_VERSION}.tar.xz \
&& cd vips-${VIPS_VERSION} \
&& apk add \
meson \
build-base \
vips-dev \
fftw-dev \
glib-dev \
expat-dev expat \
libjpeg-turbo-dev \
libheif-dev \
libspng-dev \
curl
RUN APK add curl-dev
RUN meson configure -Dintrospection=false -Dmodules=disabled -Dexamples=false -Dheif=disabled -Djpeg=disabled -Dopenjpeg=disabled -Ddeprecated=false -Dcplusplus=false --default-library=static --prefer-static --buildtype release
# RUN meson setup build-dir -Dintrospection=false -Dmodules=disabled -Dexamples=false --prefer-static --buildtype release \
# && cd build-dir \
# && meson compile \
# && meson install

View File

@@ -1,6 +0,0 @@
Experimenting with libvips.
```sh
docker build -t vips-test .
docker run -it --rm -v $(pwd):/w vips-test vips copy /w/1.heic /w/1.jpeg
```

View File

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

View File

@@ -24,6 +24,7 @@ import {
updateAndRestart,
updateOnNextRestart,
} from "./services/app-update";
import autoLauncher from "./services/auto-launcher";
import {
openDirectory,
openLogDirectory,
@@ -117,6 +118,10 @@ export const attachIPCHandlers = () => {
setLastShownChangelogVersion(version),
);
ipcMain.handle("isAutoLaunchEnabled", () => autoLauncher.isEnabled());
ipcMain.handle("toggleAutoLaunch", () => autoLauncher.toggleAutoLaunch());
// - App update
ipcMain.on("updateAndRestart", () => updateAndRestart());

View File

@@ -7,17 +7,14 @@ import {
} from "electron";
import { allowWindowClose } from "../main";
import { forceCheckForAppUpdates } from "./services/app-update";
import autoLauncher from "./services/auto-launcher";
import { openLogDirectory } from "./services/dir";
import { userPreferences } from "./stores/user-preferences";
/** Create and return the entries in the app's main menu bar */
export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
export const createApplicationMenu = (mainWindow: BrowserWindow) => {
// The state of checkboxes
//
// Whenever the menu is redrawn the current value of these variables is used
// to set the checked state for the various settings checkboxes.
let isAutoLaunchEnabled = await autoLauncher.isEnabled();
let shouldHideDockIcon = !!userPreferences.get("hideDockIcon");
const macOSOnly = (options: MenuItemConstructorOptions[]) =>
@@ -25,16 +22,6 @@ export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
const handleCheckForUpdates = () => forceCheckForAppUpdates(mainWindow);
const handleViewChangelog = () =>
void shell.openExternal(
"https://github.com/ente-io/ente/blob/main/desktop/CHANGELOG.md",
);
const toggleAutoLaunch = () => {
void autoLauncher.toggleAutoLaunch();
isAutoLaunchEnabled = !isAutoLaunchEnabled;
};
const toggleHideDockIcon = () => {
// Persist
userPreferences.set("hideDockIcon", !shouldHideDockIcon);
@@ -45,13 +32,6 @@ export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
const handleHelp = () =>
void shell.openExternal("https://help.ente.io/photos/");
const handleSupport = () =>
void shell.openExternal("mailto:support@ente.io");
const handleBlog = () => void shell.openExternal("https://ente.io/blog/");
const handleViewLogs = () => void openLogDirectory();
return Menu.buildFromTemplate([
{
label: "Ente Photos",
@@ -67,31 +47,21 @@ export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
label: "Check for Updates...",
click: handleCheckForUpdates,
},
{
label: "View Changelog",
click: handleViewChangelog,
},
{ type: "separator" },
{
label: "Preferences",
submenu: [
{
label: "Open Ente on Startup",
type: "checkbox",
checked: isAutoLaunchEnabled,
click: toggleAutoLaunch,
},
...macOSOnly([
...macOSOnly([
{
label: "Preferences",
submenu: [
{
label: "Hide Dock Icon",
type: "checkbox",
checked: shouldHideDockIcon,
click: toggleHideDockIcon,
},
]),
],
},
],
},
]),
{ type: "separator" },
...macOSOnly([
@@ -169,20 +139,6 @@ export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
label: "Ente Help",
click: handleHelp,
},
{ type: "separator" },
{
label: "Support",
click: handleSupport,
},
{
label: "Product Updates",
click: handleBlog,
},
{ type: "separator" },
{
label: "View Logs",
click: handleViewLogs,
},
],
},
]);
@@ -194,7 +150,6 @@ export const createApplicationMenu = async (mainWindow: BrowserWindow) => {
*/
export const createTrayContextMenu = (mainWindow: BrowserWindow) => {
const handleOpen = () => {
mainWindow.maximize();
mainWindow.show();
};

View File

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

View File

@@ -14,7 +14,6 @@ export const convertToJPEG = async (imageData: Uint8Array) => {
const inputFilePath = await makeTempFilePath();
const outputFilePath = await makeTempFilePath("jpeg");
// Construct the command first, it may throw NotAvailable on win32.
const command = convertToJPEGCommand(inputFilePath, outputFilePath);
try {
@@ -45,14 +44,7 @@ const convertToJPEGCommand = (
case "linux":
case "win32":
return [
imageMagickPath(),
"convert",
inputFilePath,
"-quality",
"100%",
outputFilePath,
];
return [vipsPath(), "copy", inputFilePath, outputFilePath];
default:
throw new Error("Not available on the current OS/arch");
@@ -60,12 +52,12 @@ const convertToJPEGCommand = (
};
/**
* Path to the magick executable bundled with our app on Linux and Windows.
* Path to the vips executable bundled with our app on Linux and Windows.
*/
const imageMagickPath = () =>
const vipsPath = () =>
path.join(
isDev ? "build" : process.resourcesPath,
process.platform == "win32" ? "magick.exe" : "magick",
process.platform == "win32" ? "vips.exe" : "vips",
);
export const generateImageThumbnail = async (
@@ -139,19 +131,11 @@ const generateImageThumbnailCommand = (
case "linux":
case "win32":
return [
imageMagickPath(),
"convert",
vipsPath(),
"thumbnail",
inputFilePath,
"-define",
`jpeg:size=${2 * maxDimension}x${2 * maxDimension}`,
"-auto-orient",
"-thumbnail",
`${maxDimension}x${maxDimension}`,
"-unsharp",
"0x.5",
"-quality",
`${quality}`,
outputFilePath,
`${outputFilePath}[Q=${quality}]`,
`${maxDimension}`,
];
default:

View File

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

View File

@@ -56,8 +56,6 @@ export const execAsync = async (command: string | string[]) => {
const startTime = Date.now();
const result = await execAsync_(escapedCommand);
log.debug(() => `${escapedCommand} (${Date.now() - startTime} ms)`);
// TODO(MR): Temp for debugging in nightlies; Remove before release.
log.info(`${escapedCommand} (${Date.now() - startTime} ms)`);
return result;
};

View File

@@ -122,14 +122,18 @@ const lastShownChangelogVersion = () =>
const setLastShownChangelogVersion = (version: number) =>
ipcRenderer.invoke("setLastShownChangelogVersion", version);
const isAutoLaunchEnabled = () => ipcRenderer.invoke("isAutoLaunchEnabled");
const toggleAutoLaunch = () => ipcRenderer.invoke("toggleAutoLaunch");
const onMainWindowFocus = (cb: (() => void) | undefined) => {
ipcRenderer.removeAllListeners("mainWindowFocus");
if (cb) ipcRenderer.on("mainWindowFocus", cb);
};
const onOpenURL = (cb: ((url: string) => void) | undefined) => {
ipcRenderer.removeAllListeners("openURL");
if (cb) ipcRenderer.on("openURL", (_, url: string) => cb(url));
const onOpenEnteURL = (cb: ((url: string) => void) | undefined) => {
ipcRenderer.removeAllListeners("openEnteURL");
if (cb) ipcRenderer.on("openEnteURL", (_, url: string) => cb(url));
};
// - App update
@@ -347,8 +351,10 @@ contextBridge.exposeInMainWorld("electron", {
saveMasterKeyB64,
lastShownChangelogVersion,
setLastShownChangelogVersion,
isAutoLaunchEnabled,
toggleAutoLaunch,
onMainWindowFocus,
onOpenURL,
onOpenEnteURL,
// - App update

View File

@@ -177,10 +177,10 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06"
integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==
"@eslint/js@^9.18.0":
version "9.18.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.18.0.tgz#3356f85d18ed3627ab107790b53caf7e1e3d1e84"
integrity sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==
"@eslint/js@^9.19.0":
version "9.19.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.19.0.tgz#51dbb140ed6b49d05adc0b171c41e1a8713b7789"
integrity sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
@@ -417,85 +417,85 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.21.0.tgz#395014a75112ecdb81142b866ab6bb62e3be0f2a"
integrity sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==
"@typescript-eslint/eslint-plugin@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.23.0.tgz#7745f4e3e4a7ae5f6f73fefcd856fd6a074189b7"
integrity sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.21.0"
"@typescript-eslint/type-utils" "8.21.0"
"@typescript-eslint/utils" "8.21.0"
"@typescript-eslint/visitor-keys" "8.21.0"
"@typescript-eslint/scope-manager" "8.23.0"
"@typescript-eslint/type-utils" "8.23.0"
"@typescript-eslint/utils" "8.23.0"
"@typescript-eslint/visitor-keys" "8.23.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^2.0.0"
ts-api-utils "^2.0.1"
"@typescript-eslint/parser@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.21.0.tgz#312c638aaba4f640d45bfde7c6795a9d75deb088"
integrity sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==
"@typescript-eslint/parser@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.23.0.tgz#57acb3b65fce48d12b70d119436e145842a30081"
integrity sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==
dependencies:
"@typescript-eslint/scope-manager" "8.21.0"
"@typescript-eslint/types" "8.21.0"
"@typescript-eslint/typescript-estree" "8.21.0"
"@typescript-eslint/visitor-keys" "8.21.0"
"@typescript-eslint/scope-manager" "8.23.0"
"@typescript-eslint/types" "8.23.0"
"@typescript-eslint/typescript-estree" "8.23.0"
"@typescript-eslint/visitor-keys" "8.23.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz#d08d94e2a34b4ccdcc975543c25bb62917437500"
integrity sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==
"@typescript-eslint/scope-manager@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz#ee3bb7546421ca924b9b7a8b62a77d388193ddec"
integrity sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==
dependencies:
"@typescript-eslint/types" "8.21.0"
"@typescript-eslint/visitor-keys" "8.21.0"
"@typescript-eslint/types" "8.23.0"
"@typescript-eslint/visitor-keys" "8.23.0"
"@typescript-eslint/type-utils@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.21.0.tgz#2e69d1a93cdbedc73fe694cd6ae4dfedd00430a0"
integrity sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==
"@typescript-eslint/type-utils@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.23.0.tgz#271e1eecece072d92679dfda5ccfceac3faa9f76"
integrity sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==
dependencies:
"@typescript-eslint/typescript-estree" "8.21.0"
"@typescript-eslint/utils" "8.21.0"
"@typescript-eslint/typescript-estree" "8.23.0"
"@typescript-eslint/utils" "8.23.0"
debug "^4.3.4"
ts-api-utils "^2.0.0"
ts-api-utils "^2.0.1"
"@typescript-eslint/types@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.21.0.tgz#58f30aec8db8212fd886835dc5969cdf47cb29f5"
integrity sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==
"@typescript-eslint/types@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.23.0.tgz#3355f6bcc5ebab77ef6dcbbd1113ec0a683a234a"
integrity sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==
"@typescript-eslint/typescript-estree@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz#5ce71acdbed3b97b959f6168afba5a03c88f69a9"
integrity sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==
"@typescript-eslint/typescript-estree@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz#f633ef08efa656e386bc44b045ffcf9537cc6924"
integrity sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==
dependencies:
"@typescript-eslint/types" "8.21.0"
"@typescript-eslint/visitor-keys" "8.21.0"
"@typescript-eslint/types" "8.23.0"
"@typescript-eslint/visitor-keys" "8.23.0"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
minimatch "^9.0.4"
semver "^7.6.0"
ts-api-utils "^2.0.0"
ts-api-utils "^2.0.1"
"@typescript-eslint/utils@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.21.0.tgz#bc4874fbc30feb3298b926e3b03d94570b3999c5"
integrity sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==
"@typescript-eslint/utils@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.23.0.tgz#b269cbdc77129fd6e0e600b168b5ef740a625554"
integrity sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "8.21.0"
"@typescript-eslint/types" "8.21.0"
"@typescript-eslint/typescript-estree" "8.21.0"
"@typescript-eslint/scope-manager" "8.23.0"
"@typescript-eslint/types" "8.23.0"
"@typescript-eslint/typescript-estree" "8.23.0"
"@typescript-eslint/visitor-keys@8.21.0":
version "8.21.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz#a89744c4cdc83b5c761eb5878befe6c33d1481b2"
integrity sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==
"@typescript-eslint/visitor-keys@8.23.0":
version "8.23.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz#40405fd26a61d23f5f4c2ed0f016a47074781df8"
integrity sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==
dependencies:
"@typescript-eslint/types" "8.21.0"
"@typescript-eslint/types" "8.23.0"
eslint-visitor-keys "^4.2.0"
"@xmldom/xmldom@^0.8.8":
@@ -609,10 +609,10 @@ app-builder-bin@5.0.0-alpha.12:
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-5.0.0-alpha.12.tgz#2daf82f8badc698e0adcc95ba36af4ff0650dc80"
integrity sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==
app-builder-lib@26.0.0-alpha.10:
version "26.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-26.0.0-alpha.10.tgz#3eb3f64ffa5e995595ad61497c5e7a0c2d64b817"
integrity sha512-9K3MulGK7j+En4KjH3aq7AzDqe8nn35x7O9l5kwl16nWFdBthcdy1IKsx9CgjMSF+eTNctOZlXwnYiPiGzY+GQ==
app-builder-lib@26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-26.0.0.tgz#726b8b2c058f04f854aba70c7245d48454905980"
integrity sha512-vZTt6Nc401IHBHISqspcO9tUF80ddOP5ehh2B4goLefM+zdT75CvuQUuqz7yzRgW16pHLqCvKMws0FbJQfLB5w==
dependencies:
"@develar/schema-utils" "~2.6.5"
"@electron/asar" "3.2.18"
@@ -625,15 +625,15 @@ app-builder-lib@26.0.0-alpha.10:
"@types/fs-extra" "9.0.13"
async-exit-hook "^2.0.1"
bluebird-lst "^1.0.9"
builder-util "26.0.0-alpha.10"
builder-util-runtime "9.3.0-alpha.0"
builder-util "26.0.0"
builder-util-runtime "9.3.0"
chromium-pickle-js "^0.2.0"
config-file-ts "0.2.8-rc1"
debug "^4.3.4"
dotenv "^16.4.5"
dotenv-expand "^11.0.6"
ejs "^3.1.8"
electron-publish "26.0.0-alpha.10"
electron-publish "26.0.0"
fs-extra "^10.1.0"
hosted-git-info "^4.1.0"
is-ci "^3.0.0"
@@ -784,24 +784,24 @@ buffer@^5.1.0, buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builder-util-runtime@9.3.0-alpha.0:
version "9.3.0-alpha.0"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.3.0-alpha.0.tgz#c4639ae24a74d2e0f4eb324100af3040300bae62"
integrity sha512-EriE6Uf15niqdkyjBOS09OrXlhEV0HKhnATlI9n63vCoisnvvRTQNgoR2MV9vnBmNGhavBPZXPWPItv4QMDVfw==
builder-util-runtime@9.3.0:
version "9.3.0"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.3.0.tgz#58d97c279bb8626a10d779e1cf22fea0eb25f5e8"
integrity sha512-wR81YIybr41JITLSltwtTsZXkgTwcpBol7LGOyB5A8fKCcZaYLDWgUqDwmsjhlgADD6sGD5ieyzS/5wbL2l/qQ==
dependencies:
debug "^4.3.4"
sax "^1.2.4"
builder-util@26.0.0-alpha.10:
version "26.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-26.0.0-alpha.10.tgz#f445a530c28da6e3650b93e92263c06c6f89a2cc"
integrity sha512-RMVOAgdd+tzwpyF5C8gx9KjzwdUvkUEubpsHTvb2JwlQnBcyBc6hyVCU2gt2MivQCLbjCOEgsUX1/zHrWDqGfg==
builder-util@26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-26.0.0.tgz#e5bc122f3e9e94fa2e3afd2e837e81ce9f177359"
integrity sha512-iLN4R0UAzSz4MxPmz+6vnXMqaY5BMd2FSNlM9f7eHSRYqZrsoTHCSrd7W4Kr4qFIdUxLlRz3X2npATapXzomIg==
dependencies:
"7zip-bin" "~5.2.0"
"@types/debug" "^4.1.6"
app-builder-bin "5.0.0-alpha.12"
bluebird-lst "^1.0.9"
builder-util-runtime "9.3.0-alpha.0"
builder-util-runtime "9.3.0"
chalk "^4.1.2"
cross-spawn "^7.0.6"
debug "^4.3.4"
@@ -1178,14 +1178,14 @@ dir-compare@^4.2.0:
minimatch "^3.0.5"
p-limit "^3.1.0 "
dmg-builder@26.0.0-alpha.10:
version "26.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-26.0.0-alpha.10.tgz#d4d908922005a0c852d0919a7dd0b8f77d3c4bd0"
integrity sha512-RWzCNLLu4dGIvBf8kBzjF/zI5aMOSA149S1V2NgAA4La8f8ghdJAm/DI5crSb2zDijFLyTNmUGTtvU6eHgiZyQ==
dmg-builder@26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-26.0.0.tgz#6dc81be31f7ffe9f8a5fc77ce7f83eba33ae9aa7"
integrity sha512-NyyTgm1U56ytpFvuGjj63PYug3v+oYYbPc8e08EiHP6G4TvMwYabmSzFtanfoO1iI7xOljpW/fW7SNCHHElsfw==
dependencies:
app-builder-lib "26.0.0-alpha.10"
builder-util "26.0.0-alpha.10"
builder-util-runtime "9.3.0-alpha.0"
app-builder-lib "26.0.0"
builder-util "26.0.0"
builder-util-runtime "9.3.0"
fs-extra "^10.1.0"
iconv-lite "^0.6.2"
js-yaml "^4.1.0"
@@ -1232,35 +1232,35 @@ ejs@^3.1.8:
dependencies:
jake "^10.8.5"
electron-builder@^26.0.0-alpha.10:
version "26.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-26.0.0-alpha.10.tgz#6f629f5f1f3340286af71cabd12d94edc53f15ea"
integrity sha512-QTitqOlP5aZ/8zhnxqjRb6BxSR7Kvwv07PoBGeIXADwSPHQhKhZ+S+GRFzUSYQrMTTJLGzUHbnAes6fZ3uThEA==
electron-builder@^26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-26.0.0.tgz#f5c03b049e3e9b0d3da7737f93bf1a830d1f17bb"
integrity sha512-R1ZNTCtwjApiELkE4LTNIF6UkV+FMgyDIjILlsVvFak8Jr60cI9gu4q3lVALYzGBcFyzHKn2RPp6j0gl5kuVow==
dependencies:
app-builder-lib "26.0.0-alpha.10"
builder-util "26.0.0-alpha.10"
builder-util-runtime "9.3.0-alpha.0"
app-builder-lib "26.0.0"
builder-util "26.0.0"
builder-util-runtime "9.3.0"
chalk "^4.1.2"
dmg-builder "26.0.0-alpha.10"
dmg-builder "26.0.0"
fs-extra "^10.1.0"
is-ci "^3.0.0"
lazy-val "^1.0.5"
simple-update-notifier "2.0.0"
yargs "^17.6.2"
electron-log@^5.2.4:
version "5.2.4"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.4.tgz#6b488d9db80aa3c6f3dc39bcd635fc9d1f79c8af"
integrity sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==
electron-log@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.3.0.tgz#503a911983db09156965595a7ee9a39f2d9d6384"
integrity sha512-ILgbh2k9IKbSaN8NAbQriVteEhmkdLo/e4J1dg+JIBTFzXS/kO8zNRZBh/4YPwIT/zeyxF1jP6Xz8GLsPE2IBQ==
electron-publish@26.0.0-alpha.10:
version "26.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-26.0.0-alpha.10.tgz#16ac95acca2d796ca00c7a90ca27ebf31855f284"
integrity sha512-yUkCJD7MLN57d6PJ8PMcBCR35xytA+jHyrOiS/H0hlmTOWq1sXN+tIBylX4h0dD/C6mn75/y5eE156Pe2nccPw==
electron-publish@26.0.0:
version "26.0.0"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-26.0.0.tgz#f37b9babe62885c2ee552af2817bf2048b566637"
integrity sha512-0MOeYp1IRDj+jdkWluEVMer8fpc/htwWJZdGQUMbbbhgMnX8AvDdwHuR0UdaPFLDJ076E9YHd2urkeFyLm7PUQ==
dependencies:
"@types/fs-extra" "^9.0.11"
builder-util "26.0.0-alpha.10"
builder-util-runtime "9.3.0-alpha.0"
builder-util "26.0.0"
builder-util-runtime "9.3.0"
chalk "^4.1.2"
form-data "^4.0.0"
fs-extra "^10.1.0"
@@ -1275,12 +1275,12 @@ electron-store@^8.2.0:
conf "^10.2.0"
type-fest "^2.17.0"
electron-updater@^6.4.0-alpha.3:
version "6.4.0-alpha.3"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.4.0-alpha.3.tgz#4c33647c79f7ea1bcd184aac8a0b15d5a2b37cf1"
integrity sha512-pqbEqfKVly49UO3QhnRnzghK75BW6v6ZrpW/2vs+ZVVxHmrdwEl1bTjJFQl1LSIBABpBEwT5W9uwf3cKfrD+Bg==
electron-updater@^6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.4.0.tgz#f413e5d1cb4fadde451eb7daa585ddb6332e2409"
integrity sha512-E2fqL3GrVaXGZm2w95s4kJuPIF633pi5GhEy1/ReOHjDW9h/C0mZ1LXcLq0LsyQ4vyVj9UsdRb4E+Zy/d7RKUw==
dependencies:
builder-util-runtime "9.3.0-alpha.0"
builder-util-runtime "9.3.0"
fs-extra "^10.1.0"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
@@ -1289,10 +1289,10 @@ electron-updater@^6.4.0-alpha.3:
semver "^7.6.3"
tiny-typed-emitter "^2.1.0"
electron@^34.0.0:
version "34.0.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-34.0.0.tgz#30ccedbc02d2f036868b8278960fd0e438ec0e52"
integrity sha512-fpaPb0lifoUJ6UJa4Lk8/0B2Ku/xDZWdc1Gkj67jbygTCrvSon0qquju6Ltx1Kz23GRqqlIHXiy9EvrjpY7/Wg==
electron@^34.1.1:
version "34.1.1"
resolved "https://registry.yarnpkg.com/electron/-/electron-34.1.1.tgz#1fc766e406401834fedb9747c4ca58671d9a1e46"
integrity sha512-1aDYk9Gsv1/fFeClMrxWGoVMl7uCUgl1pe26BiTnLXmAoqEXCa3f3sCKFWV+cuDzUjQGAZcpkWhGYTgWUSQrLA==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
@@ -3202,10 +3202,10 @@ truncate-utf8-bytes@^1.0.0:
dependencies:
utf8-byte-length "^1.0.1"
ts-api-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.0.tgz#b9d7d5f7ec9f736f4d0f09758b8607979044a900"
integrity sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==
ts-api-utils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.0.1.tgz#660729385b625b939aaa58054f45c058f33f10cd"
integrity sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==
tslib@^2.1.0, tslib@^2.6.2:
version "2.7.0"
@@ -3234,14 +3234,14 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
typescript-eslint@^8.21.0:
version "8.21.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.21.0.tgz#78bdb83a6d771f0312b128297d84a3111885fd08"
integrity sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==
typescript-eslint@^8.23.0:
version "8.23.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.23.0.tgz#796deb48f040146b68fcc8cb07db68b87219a8d2"
integrity sha512-/LBRo3HrXr5LxmrdYSOCvoAMm7p2jNizNfbIpCgvG4HMsnoprRUOce/+8VJ9BDYWW68rqIENE/haVLWPeFZBVQ==
dependencies:
"@typescript-eslint/eslint-plugin" "8.21.0"
"@typescript-eslint/parser" "8.21.0"
"@typescript-eslint/utils" "8.21.0"
"@typescript-eslint/eslint-plugin" "8.23.0"
"@typescript-eslint/parser" "8.23.0"
"@typescript-eslint/utils" "8.23.0"
typescript@^5.4.3:
version "5.5.4"

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",
},
],
},

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

@@ -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

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

@@ -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

@@ -22,6 +22,10 @@ interface Subscription {
originalTransactionID: string;
expiryTime: number;
userID: string;
attributes: {
customerID: string;
stripeAccountCountry: string;
};
}
interface UserDataResponse {
@@ -40,6 +44,10 @@ interface FormValues {
transactionId: string;
expiryTime: string | Date | null;
userId: string;
attributes: {
customerID: string;
stripeAccountCountry: string;
};
}
const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
@@ -53,6 +61,10 @@ const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
transactionId: "",
expiryTime: "",
userId: "",
attributes: {
"customerID": "",
"stripeAccountCountry": ""
},
});
const [isDatePickerOpen, setIsDatePickerOpen] = useState(false);
@@ -95,6 +107,10 @@ const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
"",
expiryTime: expiryTime,
userId: userDataResponse.subscription.userID || "",
attributes: {
customerID: userDataResponse.subscription.attributes.customerID || "",
stripeAccountCountry: userDataResponse.subscription.attributes.stripeAccountCountry || ""
}
});
} catch (error) {
console.error("Error fetching data:", error);
@@ -156,6 +172,10 @@ const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
productId: values.productId,
paymentProvider: values.provider,
transactionId: values.transactionId,
attributes: {
customerID: values.attributes.customerID,
stripeAccountCountry: values.attributes.stripeAccountCountry
}
};
try {

View File

@@ -2,3 +2,5 @@
# 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.** { *; }

View File

@@ -12,6 +12,11 @@ allprojects {
url "${project(':background_fetch').projectDir}/libs"
}
}
ext {
compileSdkVersion = 34
targetSdkVersion = 34
appCompatVersion = "1.7.0"
}
}
rootProject.buildDir = '../build'

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

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