Compare commits

...

955 Commits

Author SHA1 Message Date
Neeraj
a4ade14794 [cli] Skip CLI init for docs,versions & help commad (#5053)
## Description

## Tests
2025-02-13 11:17:04 +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
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
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
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
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
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
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
laurenspriem
cea9fa84a1 [mob][photos] Limit 2025-02-11 17:26:06 +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
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
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
Neeraj
e02c6dfab9 Remove extra line breaks in Auth app descriptions (#4883)
## Description

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

## Tests

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

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

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

## Tests

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

- DocuSeal
- STRATO
- TikTok
- Xbox
- Zoom

## Updated icons

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

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

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

## Tests

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

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

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

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

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

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

## Tests

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

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

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

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

## Tested by

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

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

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

## Tests
2025-01-23 11:03:10 +05:30
Manav Rathi
105878c3b5 checkpoint 2025-01-23 10:49:46 +05:30
Manav Rathi
c23c92573e checkpoint 2 2025-01-23 10:06:04 +05:30
Manav Rathi
ab5209070c wip surgery 2025-01-23 09:44:12 +05:30
Manav Rathi
121e1380c7 Split 2025-01-23 09:04:14 +05:30
Manav Rathi
60e144ab5e Children 2025-01-23 07:54:03 +05:30
Manav Rathi
07dd081f0e Nomenclature 2025-01-23 07:48:01 +05:30
Manav Rathi
26f4c9e0fe Move 2025-01-22 19:30:35 +05:30
mngshm
a9952e14d0 Revamp S3 Configuration Doc 2025-01-22 19:03:33 +05:30
ashilkn
45b2f91da5 [mob][photos] Show 'Link person' banner on contact screen if contact isn't linked to a person yet 2025-01-22 18:05:29 +05:30
Aman Raj Singh Mourya
8290809dfb [auth] minor changes 2025-01-22 17:53:18 +05:30
Aman Raj Singh Mourya
a4b14fe5b1 [auth] Implemented Banner widget 2025-01-22 17:51:30 +05:30
mngshm
bec84530e6 re-order help.ente.io/self-hosting sidebar 2025-01-22 17:43:29 +05:30
ashilkn
6081dcf7a8 [mob][photos] Create EndToEndBanner component and use it 2025-01-22 17:39:37 +05:30
ashilkn
e4ebdddb7f [mob][photos] chore 2025-01-22 16:55:08 +05:30
ashilkn
cea2f5b2df [mob][photos] Show name if email is linked to a person for emails in the share info screen of albums 2025-01-22 16:54:46 +05:30
ashilkn
0b5e6f9ced [mob][photos] Reset email to name cache completely on any change to name or email to avoid stale cache 2025-01-22 16:53:10 +05:30
ashilkn
48dc09ad38 [mob][photos] Use User.displayName instead of User.name since User.name is now deprecated 2025-01-22 16:14:48 +05:30
ashilkn
9ff57b765c [mob][photos] Deprecate in User model and create extension of User which has displayName() method that gets user name from emailToNameCache 2025-01-22 16:02:43 +05:30
ashilkn
03be554025 [mob][photos] Create emailToName cache for contacts linked to people 2025-01-22 15:51:45 +05:30
mngshm
5f2e18c25f Read Token from Param 2025-01-22 15:43:31 +05:30
Manav Rathi
2b7d514328 Move 2025-01-22 15:40:29 +05:30
Manav Rathi
3e7c66f9fe Tweak 2025-01-22 15:38:19 +05:30
Manav Rathi
fb1cfbf541 Tweak 2025-01-22 15:27:00 +05:30
Manav Rathi
471b3f2c94 Hover 2025-01-22 15:19:05 +05:30
mngshm
27beac3288 Formatting 2025-01-22 15:09:40 +05:30
mngshm
9f17c9a564 Remove token field 2025-01-22 15:07:52 +05:30
Manav Rathi
a62335df85 Unmini 2025-01-22 15:02:26 +05:30
Manav Rathi
1043f7c9a2 Ref 2025-01-22 14:53:21 +05:30
Neeraj
d95df66b9c [auth] Fix deeplink issue (#4818)
## Description
Also
- Remove logo from privacy screen
- Fix bug while deleting items from trash
## Tests
2025-01-22 14:45:21 +05:30
Manav Rathi
c19119afc4 Tweak 2025-01-22 14:43:25 +05:30
Neeraj Gupta
58cb9f480f Clean up 2025-01-22 14:42:23 +05:30
Neeraj Gupta
14e413effa [auth] Bump version 2025-01-22 14:41:36 +05:30
Neeraj Gupta
728a8c4976 Merge remote-tracking branch 'origin/main' into auth_fixes 2025-01-22 14:41:22 +05:30
Neeraj Gupta
dc779ae53f [auth] Opt out of flutter default deeplinking 2025-01-22 14:40:28 +05:30
Neeraj Gupta
ab5bda8074 [auth] Remove privacy screen image 2025-01-22 14:39:33 +05:30
Manav Rathi
3782165155 Doc 2025-01-22 14:39:05 +05:30
Neeraj Gupta
2fc8d6e0c4 [auth] Handle multiple invokation of same deeplink 2025-01-22 14:35:03 +05:30
Neeraj Gupta
3fa18b3560 [auth] Handle deeplink in offline mode 2025-01-22 14:30:04 +05:30
Neeraj Gupta
a15556264a [auth]Skip wait for online sync while parsing otpauth deeplink 2025-01-22 14:23:31 +05:30
Manav Rathi
267f54d943 [web] Fix link default prop for the (WIP) light mode (#4817)
This was causing an exception when opening screens with the <Link>
2025-01-22 14:20:13 +05:30
Manav Rathi
1015c87dd2 Fix link default prop 2025-01-22 14:14:18 +05:30
Neeraj Gupta
a71c284708 [auth] Fix bug in trash deletion 2025-01-22 13:55:22 +05:30
Neeraj Gupta
89e1efbde4 [auth] Opt out of flutter deeplink for ios 2025-01-22 13:54:57 +05:30
Manav Rathi
5e317b9f37 Increase hover opacity for light mode 2025-01-22 13:37:55 +05:30
Manav Rathi
6a4e992843 [desktop] Attempt to fix macOS universal build after electron builder update (#4816)
CI failures since updating Electron building (and Electron):

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

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

Also update the MetaInfo to avoid duplicating.
2025-01-22 12:43:17 +05:30
Manav Rathi
e0eae10007 Use URL instead of repeating contents 2025-01-22 12:41:39 +05:30
Manav Rathi
47ec5e78c0 [desktop] Fix incomplete build being generated
...because of returning false from our build hook.
2025-01-22 12:39:33 +05:30
ashilkn
0060389251 [mob][photos] Create 'Link email' widget for PeoplePage 2025-01-22 11:43:33 +05:30
Prateek Sunal
edb5e901e4 fix: use ffmpeg 2025-01-22 02:03:06 +05:30
ashilkn
df9124d4f9 [mob][photos] Check if email holds ente account before adding email to email TextField 2025-01-21 14:37:16 +05:30
ashilkn
7ff6555770 [mob][photos] Fix UI issue on iOS 2025-01-21 14:07:15 +05:30
ashilkn
2bbd2d9185 [mob][photos] Fix state issue + remove confirmation dialogs 2025-01-21 13:47:20 +05:30
ashilkn
0ab9fbec49 [mob][photos] Show 'This is me' button in SaveOrEditPersonScreen only if the current user isn't assigned a face 2025-01-21 12:05:23 +05:30
ashilkn
ab8525ca3d [mob][photos] Make 'Link email' of SaveOrEditPerson screen functional 2025-01-21 11:35:25 +05:30
ashilkn
72af9a2435 [mob][photos] Show 'Link email' header in PeoplePage only if email is missing for the person 2025-01-21 11:02:48 +05:30
ashilkn
3bfd3b5220 [mob][photos] Add UI for linking/unlinking from SaveOrEditPerson screen & make Unlinking functional all while managing state across different screens below it. 2025-01-20 19:33:55 +05:30
Neeraj 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
ashilkn
394798d232 [mob][photos] Make Link button in link email page functional. Write method to call for unlinking email from person 2025-01-16 18:50:40 +05:30
ashilkn
cccefc8d9b [mob][photos] Bug fix 2025-01-16 13:27:49 +05:30
ashilkn
674106593c [mob][photos] Create link email screen 2025-01-16 13:20:37 +05:30
ashilkn
70191d752b [mob][photos] Improve TextInput
Widget
2025-01-16 13:16:43 +05:30
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
549 changed files with 23852 additions and 12219 deletions

View File

@@ -4,7 +4,7 @@ on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.27.2"
FLUTTER_VERSION: "3.24.3"
jobs:
build:
@@ -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

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

View File

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

View File

@@ -4,7 +4,7 @@ on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.27.2"
FLUTTER_VERSION: "3.24.3"
jobs:
build:
@@ -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

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

View File

@@ -9,7 +9,7 @@ on:
- "photos-v*"
env:
FLUTTER_VERSION: "3.27.2"
FLUTTER_VERSION: "3.24.3"
jobs:
build:
@@ -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

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -21,6 +21,11 @@
"title": "airtm",
"hex": "000000"
},
{
"title": "AJ Bell",
"slug": "aj_bell",
"hex": "c41230"
},
{
"title": "aliyun",
"altNames": [
@@ -295,6 +300,9 @@
{
"title": "DMarket"
},
{
"title": "DocuSeal"
},
{
"title": "Doppler"
},
@@ -489,6 +497,12 @@
{
"title": "Kagi"
},
{
"title": "Keygen",
"altNames": [
"keygen.sh"
]
},
{
"title": "Kick"
},
@@ -681,6 +695,22 @@
"title": "ngrok",
"hex": "858585"
},
{
"title": "NekoHosting",
"slug": "nekohosting",
"altNames": [
"NekoHosting Billing",
"NekoHosting Dashboard"
]
},
{
"title": "NekoHosting Gaming Panel",
"slug": "nekohosting_gp",
"altNames": [
"NekoHosting Game Panel",
"NekoHosting GamePanel"
]
},
{
"title": "Nelnet"
},
@@ -930,6 +960,10 @@
"PAYDAY 3"
]
},
{
"title": "STRATO",
"hex": "FF8800"
},
{
"title": "Surfshark"
},
@@ -989,15 +1023,18 @@
"title": "Termius",
"hex": "858585"
},
{
"title": "Titan"
},
{
"title": "tianyiyun",
"altNames": [
"天翼云"
]
},
{
"title": "TikTok"
},
{
"title": "Titan"
},
{
"title": "TorGuard"
},
@@ -1093,8 +1130,7 @@
"title": "WHMCS"
},
{
"title": "Windscribe",
"hex": "858585"
"title": "Windscribe"
},
{
"title": "Wise"
@@ -1108,11 +1144,24 @@
"Work OS"
]
},
{
"title": "World Cube Association",
"slug": "wca",
"altNames": [
"WCA",
"worldcubeassociation"
]
},
{
"title": "WYZE"
},
{
"title": "yahoo"
"title": "Xbox",
"hex": "107C10"
},
{
"title": "Yahoo",
"hex": "5F01D2"
},
{
"title": "Yandex",
@@ -1127,6 +1176,9 @@
"altNames": [
"You Need A Budget"
]
},
{
"title": "Zoom"
}
]
}

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

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

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

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

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

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

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

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

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

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

After

Width:  |  Height:  |  Size: 1.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

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

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

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

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

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

After

Width:  |  Height:  |  Size: 363 B

View File

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

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

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

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 996 B

View File

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

After

Width:  |  Height:  |  Size: 10 KiB

View File

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

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 528 B

View File

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

After

Width:  |  Height:  |  Size: 797 B

View File

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

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 311 B

View File

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

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
auth/assets/discount.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
auth/assets/ente_5gb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
auth/assets/rate_us.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
auth/assets/star_us.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

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

View File

@@ -16,7 +16,7 @@
"secretCanNotBeEmpty": "Paslaptis negali būti tuščia.",
"bothIssuerAndAccountCanNotBeEmpty": "Tiek išdavėjas ir paskyra negali būti tušti.",
"incorrectDetails": "Neteisingi duomenys",
"pleaseVerifyDetails": "Patikrinkite duomenis ir bandykite dar kartą.",
"pleaseVerifyDetails": "Patvirtinkite duomenis ir bandykite dar kartą.",
"codeIssuerHint": "Išdavėjas",
"codeSecretKeyHint": "Slaptasis raktas",
"secret": "Paslaptis",
@@ -504,5 +504,6 @@
"deselectAll": "Naikinti visų pasirinkimą",
"selectAll": "Pasirinkti viską",
"deleteDuplicates": "Ištrinti dublikatus",
"plainHTML": "Grynasis HTML"
"plainHTML": "Grynasis HTML",
"freeStorageOfferDescription": "Naudokite kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams. "
}

View File

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

View File

@@ -88,6 +88,8 @@
"useRecoveryKey": "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

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

View File

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

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

View File

@@ -33,12 +33,14 @@ class CodeWidget extends StatefulWidget {
final Code code;
final bool isCompactMode;
final CodeSortKey? sortKey;
final bool isReordering;
const CodeWidget(
this.code, {
super.key,
required this.isCompactMode,
this.sortKey,
this.isReordering = false,
});
@override
@@ -222,25 +224,27 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
: null,
onLongPress: () {
showModalBottomSheet(
context: context,
builder: (_) {
return BottomActionBarWidget(
code: widget.code,
showPin: !ignorePin,
onEdit: () => _onEditPressed(true),
onShare: () => _onSharePressed(true),
onPin: () => _onPinPressed(true),
onTrashed: () => _onTrashPressed(true),
onDelete: () => _onDeletePressed(true),
onRestore: () => _onRestoreClicked(true),
onShowQR: () => _onShowQrPressed(true),
onCancel: () => Navigator.of(context).pop(),
);
},
);
},
onLongPress: widget.isReordering
? null
: () {
showModalBottomSheet(
context: context,
builder: (_) {
return BottomActionBarWidget(
code: widget.code,
showPin: !ignorePin,
onEdit: () => _onEditPressed(true),
onShare: () => _onSharePressed(true),
onPin: () => _onPinPressed(true),
onTrashed: () => _onTrashPressed(true),
onDelete: () => _onDeletePressed(true),
onRestore: () => _onRestoreClicked(true),
onShowQR: () => _onShowQrPressed(true),
onCancel: () => Navigator.of(context).pop(),
);
},
);
},
child: getCardContents(l10n),
),
),
@@ -645,7 +649,12 @@ class _CodeWidgetState extends State<CodeWidget> {
firstButtonLabel: l10n.delete,
isCritical: true,
firstButtonOnTap: () async {
await CodeStore.instance.removeCode(widget.code);
try {
await CodeStore.instance.removeCode(widget.code);
} catch (e, s) {
logger.severe('Failed to delete code', e, s);
showGenericErrorDialog(context: context, error: e).ignore();
}
},
);
}

View File

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

View File

@@ -667,16 +667,24 @@ class _HomePageState extends State<HomePage> {
}
return false;
}
int lastScanTime = DateTime.now().millisecondsSinceEpoch - 1000;
void _handleDeeplink(BuildContext context, String? link) {
if (!Configuration.instance.hasConfiguredAccount() || link == null) {
bool isAccountConfigured = Configuration.instance.hasConfiguredAccount();
bool isOfflineModeEnabled = Configuration.instance.hasOptedForOfflineMode() &&
Configuration.instance.getOfflineSecretKey() != null;
if (!(isAccountConfigured || isOfflineModeEnabled) || link == null) {
return;
}
if (DateTime.now().millisecondsSinceEpoch - lastScanTime < 1000) {
_logger.info("Ignoring potential event for same deeplink");
return;
}
lastScanTime = DateTime.now().millisecondsSinceEpoch;
if (mounted && link.toLowerCase().startsWith("otpauth://")) {
try {
final newCode = Code.fromOTPAuthUrl(link);
getNextTotp(newCode);
CodeStore.instance.addCode(newCode);
CodeStore.instance.addCode(newCode, shouldSync: false);
_focusNewCode(newCode);
} catch (e, s) {
showGenericErrorDialog(

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
name: ente_auth
description: ente two-factor authenticator
version: 4.3.0+430
version: 4.3.2+432
publish_to: none
environment:
@@ -32,9 +32,7 @@ dependencies:
expandable: ^5.0.1
expansion_tile_card: ^3.0.0
ffi: ^2.1.0
figma_squircle:
git:
url: https://github.com/Ax0elz/figma_squircle.git
figma_squircle: ^0.5.3
file_picker: ^8.1.7
# https://github.com/incrediblezayed/file_saver/issues/86
file_saver: ^0.2.11

View File

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

View File

@@ -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,15 @@
# CHANGELOG
## v1.7.9 (Unreleased)
## v1.7.10 (Unreleased)
- .
## 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,12 +38,8 @@
</branding>
<releases>
<release version="1.7.8" date="2025-01-13">
<description>
<ul>
<li>Parse description from image metadata.</li>
</ul>
</description>
<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

@@ -34,3 +34,4 @@ mac:
arch: [universal]
category: public.app-category.photography
hardenedRuntime: true
mergeASARs: false

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,6 +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.
*
*/
module.exports = async (context) => {
const { appDir, platform, arch } = context;
@@ -33,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.
return;
// `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()))
@@ -49,12 +53,14 @@ module.exports = async (context) => {
switch (`${platform.nodeName}-${arch}`) {
case "linux-x64":
return download("magick-x86_64", "magick");
await download("vips-x64", "vips");
case "linux-arm64":
return download("magick-aarch64", "magick");
await download("vips-arm64", "vips");
case "win32-x64":
return download("magick-x64.exe", "magick.exe");
await download("vips-x86_64.exe", "vips.exe");
case "linux-arm64":
return 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

@@ -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,31 @@ 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
titleBarStyle: "hidden",
titleBarOverlay: true,
// The color to show in the window until the web content gets loaded.
// See: https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
backgroundColor: "black",
// https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
//
// To avoid a flash, we want to use the same background color as the
// theme of their choice. Unless the user has modified their preference
// to not follow the system, we can deduce it from the current OS theme.
//
// See: https://www.electronjs.org/docs/latest/tutorial/dark-mode
backgroundColor: nativeTheme.shouldUseDarkColors ? "black" : "white",
// We'll show it conditionally depending on `wasAutoLaunched` later.
show: false,
});

View File

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

@@ -8,6 +8,13 @@ export default defineConfig({
head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]],
cleanUrls: true,
ignoreDeadLinks: "localhostLinks",
vite: {
build: {
rollupOptions: {
external: ['client-museum-s3.png'] // Added to handle static asset import
}
}
},
themeConfig: {
// We use the default theme (with some CSS color overrides). This
// themeConfig block can be used to further customize the default theme.

View File

@@ -118,6 +118,10 @@ export const sidebar = [
text: "Export",
link: "/photos/faq/export",
},
{
text: "Metadata",
link: "/photos/faq/metadata",
},
{
text: "Security and privacy",
link: "/photos/faq/security-and-privacy",
@@ -130,10 +134,6 @@ export const sidebar = [
text: "Hide vs archive",
link: "/photos/faq/hidden-and-archive",
},
{
text: "Photo dates",
link: "/photos/faq/photo-dates",
},
{
text: "Machine Learning",
link: "/photos/faq/machine-learning",
@@ -247,15 +247,6 @@ export const sidebar = [
text: "Hosting the web app",
link: "/self-hosting/guides/web-app",
},
{
text: "Administering your server",
link: "/self-hosting/guides/admin",
},
{
text: "Mobile build",
link: "/self-hosting/guides/mobile-build",
},
{
text: "Configuring S3",
link: "/self-hosting/guides/configuring-s3",
@@ -276,6 +267,15 @@ export const sidebar = [
text: "Configure CLI for Self Hosted Instance",
link: "/self-hosting/guides/selfhost-cli",
},
{
text: "Administering your server",
link: "/self-hosting/guides/admin",
},
{
text: "Mobile build",
link: "/self-hosting/guides/mobile-build",
},
],
},
{

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