Compare commits

..

1332 Commits

Author SHA1 Message Date
Neeraj Gupta
38503e8673 Merge remote-tracking branch 'origin/main' into remote_db 2025-09-02 10:34:47 +05:30
Aman Raj Singh Mourya
91785d8c90 Add Parallels custom icon (#7026)
## Description
This PR adds a custom icon for Parallels.

- Added `parallels.svg` under
`mobile/apps/auth/assets/custom-icons/icons/`
- Updated `custom-icons.json` with:
  - title: "Parallels"
  - slug: "parallels"
  - hex: #E61E25
  - altNames: ["Parallels Desktop", "Parallels VM"]

The icon is optimized (well under 50KB) and uses the official Parallels
red (#E61E25).
2025-09-02 00:19:46 +05:30
Ashil
210c18d244 Update internal changes (#7030) 2025-09-01 17:32:12 +05:30
Ashil
6636849838 update internal changes 2025-09-01 17:26:20 +05:30
Neeraj
5500315351 [mob][photos] fix unsupported locales in language selector (#7029) 2025-09-01 17:24:32 +05:30
Prateek Sunal
562292e642 fix: remove unsupported languages from language picker
Remove languages from _getLanguageName that don't have >90% translation
coverage and aren't in appSupportedLocales (Finnish, Korean, Arabic).
Also improve Chinese locale display.

- Removed fi, ko, ar cases that don't meet translation threshold
- Fixed Chinese locale handling to properly show "中文 (简体)" for zh_CN
- Ensures only properly translated languages appear in the picker

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-01 17:13:58 +05:30
Prateek Sunal
4aa80edbcf fix: resolve unsupported locales appearing in language selector
Replace AppLocalizations.supportedLocales with a curated list of properly
translated locales in the Photos app. This fixes the issue where unsupported
language codes (Bg, Be, Ca, Cs, etc.) were appearing in the language selector
without proper language name formatting.

- Add custom appSupportedLocales list with only >90% translated languages
- Update all references throughout Photos app to use the custom locale list
- Ensures only properly supported languages appear in the language picker

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-01 17:02:15 +05:30
Neeraj
9524a639cd [server] Fix collection link for locker (#6961)
## Description

## Tests
2025-09-01 16:28:19 +05:30
Neeraj
b8eb793c16 [mobile/photos] New translations (#7022)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-09-01 16:26:51 +05:30
Ashil
4b514f1e1a [mob][photos] Revert "Revert diskLoadDeferDuration to 500ms" (#7028)
This reverts commit a295f223b6.
2025-09-01 16:25:59 +05:30
ashilkn
772121c22e Revert "Revert diskLoadDeferDuration to 500ms"
This reverts commit a295f223b6.
2025-09-01 16:07:40 +05:30
Onurcan
f2e51893ad Update Parallels custom-icons.json 2025-09-01 11:59:32 +03:00
Onurcan
c08b78c775 dd Parallels custom icon 2025-09-01 11:58:26 +03:00
Laurens Priem
73ab50f113 [mob][photos] Run vectorDB migration is memory safe way (#7024)
## Description

- Add ability to block computeController temporarily
- Block computeController when vectorDB migration is running
2025-09-01 11:44:39 +05:30
laurenspriem
4a2346fe93 Block compute when vectorDB migration is happening 2025-09-01 11:11:10 +05:30
laurenspriem
68b5cce158 Add option to block compute tasks (ml, streaming) 2025-09-01 11:09:51 +05:30
laurenspriem
e907a9e8cb comment 2025-09-01 10:59:02 +05:30
Manav Rathi
92a40afca2 [web] New translations (#7021)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-09-01 10:22:50 +05:30
Aman Raj Singh Mourya
0c2b38c059 Fixing dev build on macos (#7012)
This should fix this error
https://github.com/ente-io/ente/pull/6768#discussion_r2310164866
2025-09-01 09:26:51 +05:30
Crowdin Bot
19650bcd57 New Crowdin translations by GitHub Action 2025-09-01 01:05:33 +00:00
Crowdin Bot
2b9ca073ce New Crowdin translations by GitHub Action 2025-09-01 00:45:39 +00:00
Aman Raj Singh Mourya
cf4b87dad9 [locker] Refactor theme handling in Locker to fix DynamicFAB style (#7016)
## Description
DynamicFAB theme was not getting applied from the commons package. This
PR fix that issue.

## Tests

**Before**

<img width="300" height="750" alt="Simulator Screenshot - iPhone 16 Plus
- 2025-08-30 at 15 53 26"
src="https://github.com/user-attachments/assets/17dfc778-b652-4e10-ad8f-3c8aed2656f6"
/>


**After**

<img width="300" height="750" alt="Simulator Screenshot - iPhone 16 Plus
- 2025-08-30 at 15 52 58"
src="https://github.com/user-attachments/assets/9e0c2feb-8204-4875-9bad-f9d4eaab8f36"
/>
2025-08-30 16:01:01 +05:30
AmanRajSinghMourya
3fd0db6a90 Refactor theme handling in locker to fix DynamicFAB 2025-08-30 15:52:34 +05:30
Laurens Priem
ce1701d211 [mob][photos] Similar small fixes (#7008)
## Description

Small design changes and fixes.

## Tests

Tested in debug mode on my pixel phone.
2025-08-30 07:29:27 +05:30
Laurens Priem
aaed336991 [infra] Release action changes (#7010)
## Description

- Disk space cleanup
- Generate rust bindings
2025-08-29 20:05:31 +05:30
eYdr1en
0b85dfe7e4 fixing dev build on macos 2025-08-29 15:53:56 +02:00
Prateek Sunal
68422b172f [mob][photos] fix manual video streaming when ML is enabled (#7009) 2025-08-29 18:53:53 +05:30
laurenspriem
db99dae3e1 log line 2025-08-29 18:48:00 +05:30
laurenspriem
3717a156d3 Logging unexpected embeddings 2025-08-29 18:47:01 +05:30
Prateek Sunal
ca9930e01b style: fix import directive ordering in thumbnail_widget 2025-08-29 12:50:13 +00:00
laurenspriem
eb23a4e770 rust bindings 2025-08-29 18:19:50 +05:30
laurenspriem
e03303e5b3 release workflow disk cleanup 2025-08-29 18:18:45 +05:30
laurenspriem
2ad27f1c6e Clear similar images json cache 2025-08-29 18:03:27 +05:30
Prateek Sunal
202e6a9f7c fix: trigger processing for already-queued manual stream files
When users click "Create Stream" on files already in queue from
previous sessions, ensure processing actually starts even if the
file was previously stalled due to ML blocking.

Add forceProcess parameter to queueFiles() to bypass the existing
queue check and trigger processing of stalled manual queue items.
2025-08-29 12:28:48 +00:00
laurenspriem
ceaedad327 debug option to delete vectorDB index 2025-08-29 17:57:21 +05:30
Prateek Sunal
fd963a1c8e fix: allow manual video stream creation when ML is waiting
When ML is enabled but not running, the compute controller blocks
all stream requests due to _waitingToRunML flag. This prevents
users from manually creating video streams even though ML isn't
actively using resources.

Add bypassMLWaiting parameter to allow manual stream creation
to proceed regardless of ML waiting state, improving UX.
2025-08-29 12:22:08 +00:00
laurenspriem
b40b5bb1ae delete progress 2025-08-29 17:07:44 +05:30
laurenspriem
91827626b2 dot dot dot 2025-08-29 17:04:33 +05:30
laurenspriem
42318335ae Fix issue with deleting favorites 2025-08-29 16:16:51 +05:30
laurenspriem
858db62385 Left align large files 2025-08-29 16:09:10 +05:30
laurenspriem
46e36612d3 Scroll to top after delete 2025-08-29 15:49:09 +05:30
laurenspriem
62cf236e3b Cycle through loading screen texts 2025-08-29 15:27:11 +05:30
Ashil
c2b1ab86f2 [mob][photos] Fix incorrect file deletion from db when widget unmounts during thumbnail loading (#7007)
## Description

Previously, when _loadWithRetry returned null due to widget unmounting,
the code incorrectly assumed the local file was deleted and would remove
database reference of the file and which would trigger re-upload of the
file.
2025-08-29 15:17:55 +05:30
laurenspriem
43adf42281 Don't auto select favorites for deletions 2025-08-29 15:00:42 +05:30
laurenspriem
1e2a65281c Fix delete button bug 2025-08-29 14:32:12 +05:30
ashilkn
70eb68b13c Fix incorrect file deletion when widget unmounts during thumbnail loading
Previously, when _loadWithRetry returned null due to widget unmounting,
the code incorrectly assumed the local file was deleted and would remove
database references or delete the file. This could lead to data loss.

Changes:
- Add new WidgetUnmountedException to centralized exceptions.dart for reuse
- Throw WidgetUnmountedException instead of returning null when widget unmounts
- Handle WidgetUnmountedException separately in error handler with appropriate logging
- Still set _errorLoadingLocalThumbnail flag to prevent retry attempts

Using Exception instead of Error follows Dart conventions:
- Exceptions are for recoverable runtime conditions (like widget unmounting)
- Errors are for programming mistakes that shouldn't be caught

This ensures that widget unmounting is properly distinguished from actual
file access failures.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 14:17:49 +05:30
Ashil
fa86b19307 [mob][photos] Update internal change log (#7006) 2025-08-29 14:10:19 +05:30
Ashil
e632dc7771 Merge branch 'main' into update_int_change_log 2025-08-29 14:08:58 +05:30
ashilkn
7fa9adb636 update internal change log 2025-08-29 14:08:00 +05:30
Ashil
83f885f158 [mob][photos] Revert diskLoadDeferDuration to 500ms (#7005)
## Description
2025-08-29 13:58:58 +05:30
ashilkn
a295f223b6 Revert diskLoadDeferDuration to 500ms
Reverts the change from commit 1f1cad181f
which reduced galleryThumbnailDiskLoadDeferDuration from 500ms to 80ms.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 12:57:42 +05:30
Laurens Priem
cc64ef8035 [infra] Create more space for internal release action (#7004)
## Description

- Removed redundant SDKs
- Removed redundant rust install (already pre-installed)
- Delete old other action
2025-08-29 12:41:28 +05:30
Ashil
69dd7b6233 [mob][photos] Spacing (#7002)
## Description

Add spacing in similar images page.
2025-08-29 12:41:11 +05:30
Ashil
bcc9f1be73 [mob][photos] Revert cache extent changes (#7000)
## Description

The reverted changes were intended to solve the issue #6957 fixed. So
these changes are no longer needed and there are doubts if they are
causing regressions related to thumbnail loading.

## Tests
2025-08-29 12:26:29 +05:30
Ashil
296b2a2a6c Merge branch 'main' into revert-cache-extent-changes 2025-08-29 12:24:03 +05:30
laurenspriem
6b48c9bc34 Remove ineffective cleanup steps 2025-08-29 12:23:47 +05:30
ashilkn
6a951bcc72 Update internal change log 2025-08-29 12:23:28 +05:30
laurenspriem
38914981a1 Fix disk space calculation in cleanup step 2025-08-29 11:52:36 +05:30
laurenspriem
66f4d5b1a6 Add disk cleanup step to free space in GitHub Actions
Removes unused pre-installed software to free ~30-45GB:
- .NET SDK (~20-25GB)
- Haskell compiler (~5-8GB)
- Boost libraries (~1-2GB)
- Cached tool versions (~5-10GB)

Includes timing and space metrics for each removal

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 11:43:07 +05:30
laurenspriem
9ee3781320 spacing 2025-08-29 10:30:05 +05:30
laurenspriem
907d1d2bb8 delete rust install (already on runner env by default) 2025-08-29 10:27:46 +05:30
laurenspriem
8218283463 delete old action 2025-08-29 10:26:32 +05:30
Laurens Priem
bd43385949 [mob][photos] Similar index clear (#6997)
## Description

- Clear vectorDB index on logout
- Revert to using `view` on index
- Use `.usearch` for index file
- Minor design changes

## Tests

Tested in debug mode on my pixel phone.
2025-08-28 18:57:28 +05:30
Laurens Priem
2e6a9acaf9 Merge branch 'main' into similar_index_clear 2025-08-28 18:57:11 +05:30
Ashil
a02dcace7d [mob][photos] New Ducky launcher icons (#6999) 2025-08-28 18:56:34 +05:30
Laurens Priem
cf4285de6d Merge branch 'main' into similar_index_clear 2025-08-28 18:50:12 +05:30
laurenspriem
f831491e4a log changes 2025-08-28 18:30:29 +05:30
laurenspriem
af154d82de ducky analyzing riv animation 2025-08-28 18:17:11 +05:30
Prateek Sunal
ff2f75ea74 [mob][photos] bypass size/duration limits for manual video stream requests (#6998)
## Summary
- Modified `_checkFileForPreviewCreation` method to accept `isManual`
parameter
- Bypass 500MB file size and 60 second duration limits when user
manually triggers video stream processing
- Maintains size/duration restrictions for automatic streaming to
preserve device performance

## Test plan
- [x] Manual Create/Recreate Stream button bypasses 500MB and 60 second
limits
- [x] Automatic streaming still respects size and duration restrictions
- [x] Files larger than 500MB or longer than 60 seconds can be manually
processed
2025-08-28 17:51:26 +05:30
laurenspriem
97e3ef819a Change migration key because index file was changed (internal only) 2025-08-28 17:43:18 +05:30
Prateek Sunal
3685cd2154 fix: don't show create stream if file size is null 2025-08-28 17:34:29 +05:30
laurenspriem
c64fff8ca4 empty tab state ducky 2025-08-28 17:25:54 +05:30
ashilkn
23dc809589 Remove hardcoded cacheExtent to use Flutter's default value 2025-08-28 17:07:46 +05:30
laurenspriem
33d1242c6d strings 2025-08-28 17:03:53 +05:30
laurenspriem
b8ee9fafd1 Better confirmation dialog 2025-08-28 17:03:24 +05:30
ashilkn
f72c9fa068 Revert "Different cache extents for different photoGridSizes"
This reverts commit 769adb75c5.
2025-08-28 16:55:39 +05:30
Ashil
1a7275a101 Merge branch 'main' into ducky_icon 2025-08-28 16:17:58 +05:30
Prateek Sunal
fa7ccbd180 fix: if fileSize is null for manual way then skip 10MB check 2025-08-28 16:16:15 +05:30
ashilkn
79e26d6993 Update internal change log 2025-08-28 16:16:04 +05:30
ashilkn
023135afb5 Remove green background from ducky icon display
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:07:32 +05:30
Prateek Sunal
04aaa3a5e4 fix: bypass size/duration limits for manual video stream requests
Allow manual stream requests to bypass the 500MB file size and 60-second
duration limits by passing isManual parameter to _checkFileForPreviewCreation.
This ensures users can manually process large files even if they exceed the
automatic streaming limits.
2025-08-28 10:25:45 +00:00
laurenspriem
848857f409 same close related 2025-08-28 15:27:33 +05:30
ashilkn
137033be67 Update Android ducky launcher icon
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:23:51 +05:30
laurenspriem
04b6f4a765 right threshold 2025-08-28 15:05:58 +05:30
laurenspriem
2645ba0949 Change index file name to use usearch 2025-08-28 13:13:16 +05:30
laurenspriem
5958647fa8 Delete vectorDB index file on logout 2025-08-28 13:11:05 +05:30
laurenspriem
b7b91631f6 revert back to view on index 2025-08-28 13:01:26 +05:30
Prateek Sunal
67d7f586b2 [mob][photos] bypass interaction check for manual stream requests (#6993)
## Summary
- Manual Create/Recreate Stream button presses now bypass user
interaction timer for immediate processing
- Fixed multiple concurrent streaming processes bug in ComputeController
- Fixed video streaming description text display spacing in advanced
settings
- Maintains device health and ML priority checks for all streaming
requests

## Tests
- [x] Manual Create/Recreate Stream button bypasses interaction timer  
- [x] Automatic streaming still respects interaction timer
- [x] Only one streaming process allowed at a time
2025-08-27 21:15:55 +05:30
Prateek Sunal
7c22a8bb25 chore: lint fix 2025-08-27 21:10:18 +05:30
Prateek Sunal
ff3864a09a fix: check only if permission granted before chunking 2025-08-27 21:09:10 +05:30
Prateek Sunal
4484b9e4ad update: add video streaming improvements to change logs
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-27 13:21:59 +00:00
Prateek Sunal
e9554ffbcb fix: prevent multiple concurrent streaming processes
Remove condition allowing additional stream requests when already streaming to ensure only one stream process runs at a time.

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-27 13:15:10 +00:00
Prateek Sunal
ad3901d484 fix: remove conditional clearQueue for manual processing
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-27 13:08:12 +00:00
Prateek Sunal
ecca4c3dc8 feat: bypass interaction check for manual stream requests
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-27 13:00:21 +00:00
Prateek Sunal
d05521f884 [mob][photos] video streaming description spacing and alignment (#6992)
## Summary
- Split videoStreamingDescription into separate line1/line2 localization
keys
- Remove TextAlign.justify from enabled state to fix awkward word
spacing
- Standardize text rendering between enabled and disabled states
- Both states now display description consistently without spacing
issues

## Test plan
- [x] Verify enabled state displays as single line without spacing
issues
- [x] Verify disabled state shows proper line breaks in onboarding
- [x] Confirm localization keys generate correctly
- [x] Run dart format and dart analyze (no issues)

Fixes video streaming settings page text display inconsistencies.
2025-08-27 18:08:28 +05:30
Prateek Sunal
ff37c4bf81 fix: video streaming description spacing and alignment
- Split videoStreamingDescription into separate line1/line2 localization keys
- Remove TextAlign.justify from enabled state to fix awkward word spacing
- Standardize text rendering between enabled and disabled states
- Both states now display description consistently without spacing issues

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-27 12:03:31 +00:00
ashilkn
446df755fa Add ducky icon for iOS
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-27 17:23:31 +05:30
ashilkn
a7805784b7 Add ducky icon for Android
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-27 17:01:09 +05:30
Neeraj
84a5ad0b86 [mob][photos] More minor design changes for similar images (#6986)
## Description

- Change tab order
- Make tabs distinct
- Change default ordering to size

## Tests

Tested in debug mode on my pixel phone.
2025-08-27 13:25:40 +05:30
laurenspriem
44ad11343a Better empty state prompt for emtpy tab 2025-08-27 13:17:41 +05:30
laurenspriem
07e50e3cfe Change default sort to size 2025-08-27 13:03:30 +05:30
laurenspriem
df8bbdb788 Make identical and similar distinct 2025-08-27 13:01:56 +05:30
laurenspriem
1ed381fe52 Change order of tabs 2025-08-27 12:52:45 +05:30
ashilkn
55090436ce Add new ducky-icon assets 2025-08-27 11:21:36 +05:30
Laurens Priem
ddd1d5ac86 [mob][photos] Similar images UX changes (#6981)
## Description

Similar images UX changes

## Tests

Tested in debug mode on my pixel phone.
2025-08-26 23:50:33 +05:30
Laurens Priem
26845a502e [mob][photos] Use load instead of view on index (#6980)
## Description

Use load instead of index
2025-08-26 23:48:59 +05:30
laurenspriem
21aac29020 format count properly 2025-08-26 23:48:31 +05:30
laurenspriem
c1ff02df14 Always select all on tab change 2025-08-26 23:39:21 +05:30
laurenspriem
e4927c4022 Merge branch 'main' into similar_ux_changes 2025-08-26 23:30:32 +05:30
laurenspriem
4fd797338b Empty state 2025-08-26 23:26:51 +05:30
laurenspriem
eca0e5943d tab button look 2025-08-26 23:24:37 +05:30
laurenspriem
56cc7309a5 Show progress only for multiple albums symlinking 2025-08-26 23:05:04 +05:30
laurenspriem
b740d1af05 Show modal on 100+ deleted files only 2025-08-26 23:01:30 +05:30
laurenspriem
6d21b73367 faster select 2025-08-26 22:59:30 +05:30
laurenspriem
a5704eef25 Use load instead of view on index 2025-08-26 22:46:33 +05:30
laurenspriem
7e83682686 tiny margin in threshold 2025-08-26 22:42:04 +05:30
laurenspriem
18d5aa61b0 Extract string 2025-08-26 22:34:59 +05:30
laurenspriem
7c2a719ba8 (un)select all 2025-08-26 22:32:11 +05:30
laurenspriem
47313a74ff Tab bar filter 2025-08-26 21:28:21 +05:30
Prateek Sunal
65a7a16298 [mob][photos] fixes (#6979)
## Description

- [x] Fix Spacing in Video streaming settings
- [x] Update copy in Video Streaming settings
- [x] Disable debug notifications for work manager in iOS

## Tests
2025-08-26 20:57:02 +05:30
Prateek Sunal
9251e4f5b6 fix: update spacing and remove cross icon from top right 2025-08-26 19:07:44 +05:30
Prateek Sunal
c4bc6abf83 fix: remove debug mode notification flag 2025-08-26 19:07:27 +05:30
laurenspriem
3165289483 Remove header 2025-08-26 17:48:39 +05:30
laurenspriem
01aab41c25 Select all by default 2025-08-26 17:46:53 +05:30
laurenspriem
1826258161 Copy 2025-08-26 17:43:58 +05:30
laurenspriem
df5917060b Copy change 2025-08-26 17:40:20 +05:30
Prateek Sunal
b5aa05cc1b [mob][photos] merge migration scripts (#6974)
## Description

Fixes #6923

## Tests
2025-08-26 17:16:10 +05:30
Prateek Sunal
cd865992f2 chore: directly use database 2025-08-26 17:02:21 +05:30
Prateek Sunal
370c0ab54a fix: merge migration scripts 2025-08-26 16:02:15 +05:30
Neeraj
923f2484fb [auth] Fix missing token (#6971)
## Description
When using Auth without backup, it was giving a error `Offline key is
missing`

**Reason**: During the `init` of `BaseConfiguration` if the `tokenKey`
is not set, we clear all the keys in the secure storage, and in this
process the `offlineAuthSecretKey` was also getting cleared

**Fix** Fixed by skipping the deletion of `offlineAuthSecretKey`  

## Tests
[Test Video](https://wormhole.app/qz3mol#Dlhr0NRpVQVQsrid2X-quA)
2025-08-26 13:02:43 +05:30
AmanRajSinghMourya
37928cd2c6 Code refractoring 2025-08-26 12:40:03 +05:30
AmanRajSinghMourya
fc32ba97c1 Refactor BaseConfiguration to ensure preserved keys are not deleted 2025-08-26 12:26:01 +05:30
AmanRajSinghMourya
e49084867e Revert "Refactor BaseConfiguration to preserve offlineAuthSecretKey during logout"
This reverts commit 5b5f563d47.
2025-08-26 12:21:00 +05:30
Laurens Priem
a046748ded [mob][photos] Minor fixes and changes (#6969)
## Description

Minor fixes and changes based on testing.

## Tests

Tested in debug mode on my pixel phone.
2025-08-26 10:08:42 +05:30
laurenspriem
047d708ef1 Merge branch 'main' into fix_modal 2025-08-26 10:08:18 +05:30
AmanRajSinghMourya
5b5f563d47 Refactor BaseConfiguration to preserve offlineAuthSecretKey during logout 2025-08-26 10:02:19 +05:30
Ashil
2b60ad3748 [mob][packages] Organize imports (#6968) 2025-08-26 10:01:40 +05:30
Neeraj
1f70043c83 [mob][photos] video streaming settings & create/recreate stream (#6923) 2025-08-26 10:00:08 +05:30
laurenspriem
7ce6f6a346 Check symlink permissions 2025-08-26 09:55:17 +05:30
ashilkn
03814bff0c Organize imports 2025-08-26 09:34:00 +05:30
laurenspriem
4c63a0ff13 Copy changes 2025-08-26 09:21:59 +05:30
laurenspriem
93552fb872 vectorDB flag check ML enabled 2025-08-26 09:05:06 +05:30
laurenspriem
1b61becdcf Fix modal on group-level delete 2025-08-26 08:37:16 +05:30
Prateek Sunal
0499cad3c9 chore: ignore generated mocks file 2025-08-26 04:48:32 +05:30
Prateek Sunal
79752ef4b8 chore: update file name 2025-08-26 04:35:51 +05:30
Prateek Sunal
c1bd6d3fdb Merge branch 'taking-streaming-oob' of https://github.com/ente-io/ente into taking-streaming-oob 2025-08-26 04:35:30 +05:30
Prateek Sunal
621423d9a4 fix: refactor code 2025-08-26 04:35:27 +05:30
Prateek Sunal
edb11c89ba fix: update mobile/apps/photos/lib/ui/settings/streaming/video_streaming_settings_page.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 04:31:44 +05:30
Prateek Sunal
adb71fe09c fix: update mobile/apps/photos/lib/services/video_preview_service.dart
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 04:31:12 +05:30
Prateek Sunal
c20cee2406 feat: state update event, tests, total logic 2025-08-26 04:27:38 +05:30
Prateek Sunal
dcfad86c47 fix: ensure preview ids are present 2025-08-25 23:32:57 +05:30
Prateek Sunal
0a2bff67bf fix: delete file from upload locks db if not found 2025-08-25 23:31:51 +05:30
Prateek Sunal
7aaa689cfb fix: simplify logic 2025-08-25 23:26:34 +05:30
Prateek Sunal
ad2a0ce897 refactor: simplify StreamingStatus handling in VideoPreviewService 2025-08-25 23:22:39 +05:30
Prateek Sunal
d99615b24f fix: remove skipped 2025-08-25 22:16:22 +05:30
Prateek Sunal
09cc48ae55 fix: add comments 2025-08-25 21:50:07 +05:30
Prateek Sunal
6ab2223a80 fix: mostly all review comments 2025-08-25 21:42:40 +05:30
Prateek Sunal
6fd86162e0 Merge remote-tracking branch 'origin/main' into taking-streaming-oob 2025-08-25 20:58:09 +05:30
Prateek Sunal
707e8dbfcf fix: show processing status, fix when to not show popup buttons, update getFiles logic 2025-08-25 20:57:18 +05:30
Prateek Sunal
5869bec781 feat: create and recreate stream buttons 2025-08-25 20:11:08 +05:30
Laurens Priem
e311a8bb32 [mob][photos] Similar images UI (#6963)
## Description

Minor fixes and UI changes.

## Tests

Tested in debug mode on my pixel phone.
2025-08-25 16:55:29 +05:30
laurenspriem
547ccfceca Use shared preferences for tracking migration 2025-08-25 16:53:33 +05:30
Keerthana
3a1917949b [mobile/photos] New translations (#6955)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-08-25 13:30:03 +05:30
Keerthana
3a1ce3258e [auth] New translations (#6956)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-08-25 13:10:39 +05:30
Prateek Sunal
13b2542bea fix: update logic 2025-08-25 12:02:56 +05:30
Prateek Sunal
6db3741a3b Merge remote-tracking branch 'origin/main' into taking-streaming-oob 2025-08-25 11:48:49 +05:30
laurenspriem
ce17eccd68 Fix delete issue 2025-08-25 11:11:57 +05:30
Ashil
95dc683088 Update internal change log (#6959) 2025-08-25 11:11:28 +05:30
Neeraj
cf9d5f72f7 [mob] Fix query for duplicate cleanup (#6962)
## Description
Only consider owned files
## Tests
2025-08-25 11:10:36 +05:30
Neeraj Gupta
3096e1550a Merge remote-tracking branch 'origin/main' into fixQuery 2025-08-25 11:03:45 +05:30
Neeraj Gupta
1b39435735 Fix query 2025-08-25 11:02:25 +05:30
laurenspriem
8f3d8505bb Better UI when selection is not possible 2025-08-25 11:02:03 +05:30
Manav Rathi
47e8aafe25 [desktop] Update changelog (#6960) 2025-08-25 10:50:10 +05:30
Neeraj Gupta
bc6506cb10 Fix link for locker 2025-08-25 10:50:05 +05:30
Manav Rathi
edf32d065e [desktop] Update changelog 2025-08-25 10:47:43 +05:30
ashilkn
1fa6a0c3b9 Update internal change log 2025-08-25 10:41:16 +05:30
Neeraj Gupta
f2a26ba391 Minor refactor 2025-08-25 10:35:47 +05:30
Manav Rathi
2388989dd0 [web] Enable Czech (#6958) 2025-08-25 10:35:06 +05:30
laurenspriem
9e392277b1 Fix initState issue 2025-08-25 10:31:41 +05:30
Neeraj
4609c375db Revert "[auth] Add smaller Activision icon" (#6953)
Reverts ente-io/ente#6950

I rushed a bit, sorry. The PR wasn't meant to be merged yet (if ever)
and it won't work right now anyway. It was meant to create conversation
on the topic and then possibly merged and there may be concerns to this
as a company may not want their logo/wordmark altered but I'm not well
versed in this topic (idk maybe I'm overthinking this).

Discussion: #6951
2025-08-25 10:31:20 +05:30
Manav Rathi
839c62ea72 [web] Enable Czech 2025-08-25 10:28:23 +05:30
Neeraj
dceef49f33 [mob][photos] Pre-cache thumbnails fetched from LRU cache to Flutter's ImageCache for faster rendering (#6957)
## Description

In Gallery, even if thumbnails are stored in LRU cache, there was a
delay in rendering thumbnails when scrolling fast enough. Pre-caching
these thumbnails to flutter's `ImageCache` right before they're rendered
has made the rendering fast enough for seamless UX.

#### Before:


https://github.com/user-attachments/assets/c47958fb-fbda-4e1f-9ce7-26b51ca87938

#### After:


https://github.com/user-attachments/assets/cbaf4427-f52f-4544-a0c2-820eb2b43953
2025-08-25 10:18:05 +05:30
laurenspriem
acbdc3111a Remove use of withOpacity 2025-08-25 10:15:49 +05:30
laurenspriem
98b91a6935 Remove duplicate string 2025-08-25 10:11:07 +05:30
laurenspriem
e1640e67d4 Extract strings 2025-08-25 10:09:03 +05:30
laurenspriem
e875758419 Simplify sort options 2025-08-25 09:48:33 +05:30
Manav Rathi
214b120472 [web] New translations (#6954)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-08-25 09:43:37 +05:30
ashilkn
f139e0a098 Fix flickering of GalleryFileWidget on hero animation after closing it's open full view 2025-08-25 09:21:57 +05:30
laurenspriem
e3c9a61887 Align 2025-08-25 09:20:19 +05:30
ashilkn
0da3dc5084 Skip clearing flutter image cache since default (current) limit is 100MB and the threshold to clear is 250MB 2025-08-25 09:20:08 +05:30
ashilkn
a856a82249 Refactor 2025-08-25 09:18:29 +05:30
ashilkn
fbdec00a62 Improve lru cache thumbnail rendering speed when scrolling gallery by precaching it it flutter's image cache 2025-08-25 09:16:59 +05:30
Crowdin Bot
6a7f980a0d New Crowdin translations by GitHub Action 2025-08-25 01:18:00 +00:00
Crowdin Bot
10a855fe27 New Crowdin translations by GitHub Action 2025-08-25 01:05:02 +00:00
Crowdin Bot
b4f8a2b27c New Crowdin translations by GitHub Action 2025-08-25 00:39:57 +00:00
dnred
89489b4d7c Revert "[auth] Add smaller Activision icon" 2025-08-24 23:48:21 +02:00
Aman Raj Singh Mourya
50296f8dfa [auth] Add smaller Activision icon (#6950)
## Description

The current Activision icon is too wide and small to be nicely displayed
in Auth so this PR adds a smaller one, just like the favicon on
Activision's [website](https://activision.com).

I know the Activision icon is pulled from simple-icons and I don't want
to get rid of that, just add an option for a smaller one, but I see that
the smaller Allegro icon is also added but it isn't displayed in the
icon picker and the icon from simple-icons takes precedence so you'd
have to figure this out.

## Tests

I haven't tested this.
2025-08-24 23:15:44 +05:30
dnred
f69cec864b Rename activision2.svg to activision.svg 2025-08-24 16:42:49 +02:00
dnred
73d5d33fc5 Update custom-icons.json 2025-08-24 16:25:47 +02:00
dnred
4d8ea12ddd Add logo 2025-08-24 16:17:25 +02:00
Prateek Sunal
7beb267ba7 chore: remove unused import 2025-08-24 02:15:09 +05:30
Prateek Sunal
7e13ef3537 chore: remove formatting for files_db 2025-08-24 02:10:06 +05:30
Prateek Sunal
47edca5bf5 chore: fix formatting 2025-08-24 02:08:00 +05:30
Prateek Sunal
925ba10b15 chore: revert remote_sync formatting 2025-08-24 02:06:28 +05:30
Prateek Sunal
db2d0bb7e9 fix: remove formatting from ml_service 2025-08-24 02:04:09 +05:30
Prateek Sunal
f3a2b2af0c fix: include it in if loop 2025-08-24 02:02:47 +05:30
Prateek Sunal
967e88f88d Merge remote-tracking branch 'origin/main' into taking-streaming-oob 2025-08-24 02:00:33 +05:30
Prateek Sunal
b44734a493 fix: add streaming static image 2025-08-24 01:59:23 +05:30
Manav Rathi
6478b08a19 [docs] Minor improvements to self-hosted docs (#6936)
## Description
- Small correction on the self-hosted docker exec command.
- Added tip on how to install Ente CLI.

In spirit of starting with a small PR :p
2025-08-23 21:54:47 +05:30
Laurens Priem
314e81565b Fix linter issues (#6939)
## Description

Linter was failing because it didn't first run
`flutter_rust_bridge_codegen generate` to generate the dart bindings to
rust code.
2025-08-23 20:34:02 +05:30
laurenspriem
f95e20d00f Consistent tap behaviour 2025-08-23 17:35:12 +05:30
laurenspriem
35a04d6e7e Don't unnecessarily sort 2025-08-23 17:34:53 +05:30
laurenspriem
403264d2c9 Fix linter issues 2025-08-23 17:20:22 +05:30
Toby
6b06a4c388 Add instructions on how to install Ente CLI 2025-08-23 13:13:08 +02:00
Toby
678bce89b2 Add small corrections to docker commands 2025-08-23 13:06:34 +02:00
Laurens Priem
2f1d4b9f1a Update rust to solve bindings generation issue (#6935)
## Description

Update rust to potentially solve bindings generation issue
2025-08-23 10:44:27 +05:30
laurenspriem
af20eadff0 Update rust to solve bindings generation issue 2025-08-23 10:39:54 +05:30
Prateek Sunal
3264ea046c [mob][photos] add named params for translations (#6932)
## Description

Parameters were sorted based on name by intl plugin which is a breaking
change.

We now have shifted to named params for translations so position won't
change.

## Tests
2025-08-22 22:50:07 +05:30
Laurens Priem
d81a73c833 [mob][photos] Similar images various improvements (#6931)
## Description

- Put the rust generated bindings in gitignore
- Use `view` instead of `load` on VectorDB index to use less RAM
- Various UI changes

## Tests

Tested in debug mode on my pixel phone.
2025-08-22 21:12:00 +05:30
laurenspriem
ac9c63fe29 Log updates 2025-08-22 21:11:25 +05:30
laurenspriem
53cb217dbc Fix MediaQuery in initState issue (for large files view) 2025-08-22 21:06:59 +05:30
Prateek Sunal
fca9a42e0a fix: add named params for translations to fix position 2025-08-22 19:41:45 +05:30
Prateek Sunal
8b708228be fix: add different ui for enabling it 2025-08-22 19:04:16 +05:30
laurenspriem
d379262f56 Small animation 2025-08-22 18:57:37 +05:30
laurenspriem
9282632af1 Exclude dart linter checks for rust 2025-08-22 18:14:13 +05:30
laurenspriem
6a43d6a567 Generate rust bindings on internal release 2025-08-22 18:11:53 +05:30
laurenspriem
1cdbef1a01 More fancy loading 2025-08-22 15:12:12 +05:30
laurenspriem
fa84bb0845 Delete progress indicator 2025-08-22 14:33:19 +05:30
laurenspriem
cbb6f07d0d Improve empty state 2025-08-22 12:38:37 +05:30
laurenspriem
fad9cf8559 Add rust bindings generation to readme 2025-08-22 11:57:45 +05:30
laurenspriem
371ba9c552 Put generated rust bindings in gitignore 2025-08-22 11:54:59 +05:30
laurenspriem
19086e43cc Remove generated rust bindings 2025-08-22 11:54:24 +05:30
laurenspriem
964c837c40 Remove scrollbar 2025-08-22 11:36:48 +05:30
laurenspriem
d85121862d Use view of index instead of loading in memory 2025-08-22 11:34:40 +05:30
Prateek Sunal
42d31a73a3 fix: update localization & fix lint 2025-08-21 23:32:45 +05:30
Prateek Sunal
946d2ae522 fix: remove unnecessary blank line in analysis_options.yaml + circular button 2025-08-21 22:51:01 +05:30
Prateek Sunal
8e9eb50783 fix: downgrade Dart SDK version to 3.7.2 2025-08-21 22:50:24 +05:30
Prateek Sunal
af3bc7757f fix: downgrade dart sdk again 2025-08-21 22:50:04 +05:30
Prateek Sunal
eda1d05216 fix: revert dart sdk 2025-08-21 22:49:49 +05:30
Prateek Sunal
b58e0f8331 fix: remove analysis options for now 2025-08-21 22:49:37 +05:30
Prateek Sunal
6dcf53650d fix: re-add captioned text 2025-08-21 22:48:42 +05:30
Prateek Sunal
bff53d9081 chore: add back space 2025-08-21 22:47:42 +05:30
Prateek Sunal
f3306e14c7 fix: revert 2025-08-21 22:47:30 +05:30
Prateek Sunal
b5c075bac4 fix: add space at end 2025-08-21 22:45:38 +05:30
Prateek Sunal
241d21c2aa fix: revert things 2025-08-21 22:44:34 +05:30
Prateek Sunal
789d77747c fix: update other contact page 2025-08-21 22:35:24 +05:30
Prateek Sunal
35050aa32f fix: delete generated intl_utils locale 2025-08-21 22:33:23 +05:30
Prateek Sunal
40e6bd9fae Merge remote-tracking branch 'origin/main' into taking-streaming-oob 2025-08-21 22:32:41 +05:30
Prateek Sunal
9fe15d7ff0 [mob][photos] remove generated locals (#6925)
## Description

We depended on intl_utils but that had problems + it was not
auto-generating things when running `flutter pub get`

Now we are using pure intl implementation of l10n, by which generated
code would be less.

- [x] Removes generated locals

## Tests
2025-08-21 22:27:09 +05:30
Prateek Sunal
28a2afe275 Merge remote-tracking branch 'origin/main' into remove-intl_utils 2025-08-21 22:26:54 +05:30
Aman Raj Singh Mourya
c072097c11 Add custom icons (#6924)
## Description
Adds custom SVG icons for "CoinTracing", "VHV Versicherungen (German
Insurance Company)" and "HR Document Box".
SVG sourced from official CoinTracking press assets.
SVG sourced from Wikipedia for VHV Versicherungen.
For HR Document Box was no svg available, so i used a png to svg
converter.

## Tests
2025-08-21 19:27:57 +05:30
Prateek Sunal
b317df2000 Merge branch 'main' into taking-streaming-oob 2025-08-21 18:11:42 +05:30
Prateek Sunal
dd420a80a4 Merge remote-tracking branch 'origin/main' into remove-intl_utils 2025-08-21 18:08:31 +05:30
Prateek Sunal
3dc0620e18 chore: update flutter again for auth 2025-08-21 18:04:29 +05:30
Prateek Sunal
173d075f8b feat: remove generated locals 2025-08-21 18:04:20 +05:30
Daniel
48283282e5 Merge branch 'ente-io:main' into main 2025-08-21 14:30:49 +02:00
Laurens Priem
fa555c448f [mob][photos] Various similar images improvements (#6922)
## Description

Various improvements for similar images, mainly caching and UI changes.

## Tests

Tested in debug mode on my pixel phone.
2025-08-21 17:59:13 +05:30
laurenspriem
6f6770d677 Selection options 2025-08-21 17:58:43 +05:30
Daniel
0b894e9724 Update custom-icons.json 2025-08-21 14:21:02 +02:00
Daniel
0670550cb1 Add files via upload 2025-08-21 14:18:48 +02:00
Daniel
45783cf527 Update custom-icons.json 2025-08-21 14:07:32 +02:00
Daniel
1615779eb8 Add files via upload 2025-08-21 14:05:48 +02:00
Daniel
02e4c9d8fd Add files via upload 2025-08-21 14:00:23 +02:00
Prateek Sunal
2e706228ee feat: separate settings page improvements 2025-08-21 17:22:57 +05:30
Neeraj Gupta
c5319f2ba8 Merge remote-tracking branch 'origin/main' into remote_db 2025-08-21 17:19:42 +05:30
Daniel
6eab6457ee Update custom-icons.json 2025-08-21 13:34:14 +02:00
Daniel
25490a7238 Add files via upload 2025-08-21 13:30:49 +02:00
Neeraj
f519ff8a51 [auth] Option to scan image using native plugin (#6920)
## Description

## Tests
Tested on physical device (android and ios)
2025-08-21 16:20:45 +05:30
Neeraj Gupta
afebe1ade1 Clean up 2025-08-21 16:15:44 +05:30
laurenspriem
3862644dd5 Show info at top 2025-08-21 16:07:52 +05:30
Neeraj Gupta
274a7d207d Improve scanning 2025-08-21 15:59:53 +05:30
laurenspriem
add2f0c8de Debug option for full refresh 2025-08-21 15:34:05 +05:30
Neeraj Gupta
8e807616e0 Bump version 2025-08-21 15:29:08 +05:30
laurenspriem
70f4325c71 Refresh for small size 2025-08-21 15:18:05 +05:30
Neeraj Gupta
38ea2248b8 Show option on mobile only 2025-08-21 15:16:21 +05:30
laurenspriem
9600b26359 More stable sort 2025-08-21 15:10:40 +05:30
Neeraj Gupta
5b3e996aaa Option to scan image using native plugin 2025-08-21 15:08:11 +05:30
laurenspriem
4d4cce091f Fix json decoding issue 2025-08-21 14:13:49 +05:30
Neeraj
aaca140d1b [mobile] Use same lint rule file (#6917)
## Description
Had verified that hash for these rules were same.
## Tests
2025-08-21 14:06:37 +05:30
Neeraj Gupta
596ffcd4c4 [mobile] Use same lint rule file 2025-08-21 14:04:04 +05:30
laurenspriem
41ef85a294 Add scroll bars 2025-08-21 13:08:51 +05:30
Neeraj
f722d82835 [server]: add one click verify button for verification email (#5654)
OG (ott.html):

<img width="701" height="590" alt="image"
src="https://github.com/user-attachments/assets/80b926d1-c65f-44a8-9de4-7b591258bf3c"
/>



New (ott_mobile.html):

<img width="642" height="811" alt="image"
src="https://github.com/user-attachments/assets/aa18a778-1161-4b4e-ad82-cf472da06ff7"
/>
2025-08-21 12:44:24 +05:30
Neeraj Gupta
cbb3096534 use mobile ott template for only photos 2025-08-21 12:41:56 +05:30
laurenspriem
f635e1e856 Merge branch 'main' into smart_dedupe 2025-08-21 12:22:29 +05:30
laurenspriem
c6734a5cb7 More logging 2025-08-21 12:15:37 +05:30
laurenspriem
e26b4796d3 Match to closest group 2025-08-21 12:04:31 +05:30
laurenspriem
99c0194c0f Check cache parameters 2025-08-21 11:54:10 +05:30
laurenspriem
e824c02d7f Fix bug 2025-08-21 11:45:08 +05:30
laurenspriem
a11f66b51d Caching and partial compute logic for similar files calculation 2025-08-21 11:35:42 +05:30
laurenspriem
f202fef266 JSON caching of similar files 2025-08-21 11:35:12 +05:30
Neeraj
ff8cfd3e87 [auth] Additional import option (#6916)
## Description

## Tests
2025-08-21 11:22:04 +05:30
Neeraj Gupta
431ab7fcc7 [auth] Additional import option 2025-08-21 11:11:48 +05:30
Ashil
2ac1d58dac [mob][photos] Fix jank when scrolling gallery when lot of selected items are in view (#6913)
## Description

Using `ColorFiltered` with `Blendmode.darken` introduces a performance
[issue](https://github.com/flutter/flutter/issues/174118) with flutter's
new rendering engine Impeller.

The fix uses an alternative method to that maintains the same UI
appearance as before.
2025-08-20 19:09:46 +05:30
ashilkn
5533e6a71d Fix performance issue (jank) when scrolling gallery when lot of selected items in view
This was only bad enough to be noticed on one device (Samsung A54) out of few
2025-08-20 18:46:32 +05:30
laurenspriem
a8ae0727a8 Fix potential duplicates 2025-08-20 18:24:21 +05:30
Aman Raj Singh Mourya
6955788724 Add custom icon for Mobile01 (#6908)
Custom icon for [Mobile01](https://www.mobile01.com/)

- Add optimised SVG file
- Add entry to custom-icons.json
2025-08-20 15:49:42 +05:30
Neeraj Gupta
f6dd35f5e7 Update templates 2025-08-20 15:11:28 +05:30
Neeraj Gupta
9148916d88 Merge remote-tracking branch 'origin/main' into ott_email_one_click 2025-08-20 15:02:57 +05:30
Neeraj
68545f8947 [auth] add import from gallery using zxing2 (#6909)
This pr implements the feature to add a 2FA account by importing a QR
code image from the device gallery..
Adds a new "Import from gallery" button to the Floating Action Button
menu.

The button's text is localized, and its styling is consistent with the
app's theme.

How to Test:

    Open the FAB menu and tap "Import from gallery".
    
1) Test with a valid 2FA QR code image. Expected: The account gets added
successfully.
2) Test with an image that has no QR code. Expected: A "No QR code
found" toast message appears.
3) Test with a QR code of plain text (like "hello "). Expected: An
"Invalid QR Code" dialog appears.
2025-08-20 14:44:02 +05:30
Prateek Sunal
fe40185889 fix: redirect video streaming to setting page 2025-08-20 14:43:54 +05:30
Prateek Sunal
6bb4428a8a chore: update generated translations 2025-08-20 14:41:57 +05:30
Neeraj
76c5c12c53 [mobile] Setup melos (#6907)
## Description

```
dart pub global activate melos
```
Run following command to get all dependencies for projects
```
melos bootstrap
```


## Tests
2025-08-20 14:36:10 +05:30
Prateek Sunal
0881685915 feat: add video streaming settings page 2025-08-20 14:34:16 +05:30
Prateek Sunal
3e13932d03 chore: format files and update analysis file 2025-08-20 14:33:35 +05:30
Dxball ☕
8d749a2dc8 Add custom icon fo Mobile01 2025-08-20 09:01:14 +00:00
a5xwin
56af818482 add qr code scanning from gallery using zxing2 2025-08-20 14:28:41 +05:30
Neeraj
fc1096c985 [mob] Include mobile flag during ott (#6906)
## Description
Need this to identify which OTT template to send from backend.
Ref: https://github.com/ente-io/ente/pull/5654
## Tests
2025-08-20 14:25:22 +05:30
Neeraj Gupta
88260a05e3 Setup melos 2025-08-20 14:14:35 +05:30
Neeraj Gupta
4b5f91a428 [mob] Send ismobile flag 2025-08-20 13:14:59 +05:30
Neeraj
29b12fc6b5 [docs] Lint (#6905)
## Description

## Tests
2025-08-20 11:01:44 +05:30
Neeraj Gupta
c3eec71d60 [docs] Lint 2025-08-20 11:01:25 +05:30
Neeraj
2fccdee0d6 [server] Add optional TLS/SSL encryption for SMTP (#6863)
## Description

Implement TLS/SSL encryption for sending emails via SMTP. When an SMTP
provider explicitly requires TLS/SSL communication the current
implementation runs in a timeout and fails. A new configuration
parameter for smtp was added to enable TLS/SSL communication.

This would solve #5958 

## Tests

I built a local docker image of my branch. The email provider I was
using is mailbox.org and using the tls configuration. Registering a new
user then resulted in a sent email containing the verification code.

I did not test a setup without TLS/SSL.
2025-08-20 11:00:36 +05:30
Neeraj
8f053e7a7b [m][photos] Fix for duplicate entries for local file (#6904)
## Description

## Tests
2025-08-20 10:42:41 +05:30
Neeraj
de7291f5d4 [mobile][photos] don't show lock screen on deep link (#6899)
## Description

Fixes the clicking on widget behavior

## Tests
2025-08-20 10:06:06 +05:30
Neeraj Gupta
e09c952198 Fix for duplicate enteries for file 2025-08-20 10:01:51 +05:30
laurenspriem
28a842b006 Show size 2025-08-20 09:51:27 +05:30
laurenspriem
19eb342f59 Move internal things to debug mode only 2025-08-20 09:47:36 +05:30
laurenspriem
2b82c79be9 Merge branch 'main' into smart_dedupe 2025-08-20 09:13:43 +05:30
Prateek Sunal
86a9dee49d fix: add note, revert old code, remove default redirect 2025-08-20 00:25:33 +05:30
Vishnu Mohandas
33b1a7e4f8 [mob] Remove generated code (#6901) 2025-08-19 20:22:51 +05:30
vishnukvmd
de783e91dc Ignore build 2025-08-19 20:22:22 +05:30
vishnukvmd
554c8f4b7a Remove noise 2025-08-19 20:22:11 +05:30
Vishnu Mohandas
f438142646 [locker] Icon (#6900) 2025-08-19 19:00:07 +05:30
vishnukvmd
aa6c010562 Update Android icon 2025-08-19 18:59:33 +05:30
vishnukvmd
2830c89bde Set icons 2025-08-19 18:58:21 +05:30
Prateek Sunal
4de530b882 fix: don't show lock sreen if not required 2025-08-19 18:27:33 +05:30
Vishnu Mohandas
62d7c87dc7 [locker] Update deps (#6898) 2025-08-19 18:23:51 +05:30
vishnukvmd
3a1b6dbf15 [locker] Update deps 2025-08-19 18:23:19 +05:30
laurenspriem
58182cc8ab Remove slider interface in release 2025-08-19 17:11:12 +05:30
Laurens Priem
5e0bba390b [mob][photos] Decoded image minor refactor (#6897)
## Description

Minor refactor (no functional change) in the way we're decoding and
returning images for indexing.
2025-08-19 16:42:24 +05:30
Vishnu Mohandas
df6a3b94db [mobile][locker] Add Drawer & Setting section in locker (#6895) 2025-08-19 15:35:41 +05:30
AmanRajSinghMourya
72b7e12768 Merge branch 'main' into drawer 2025-08-19 15:24:29 +05:30
AmanRajSinghMourya
3a7d82a799 Add setting section 2025-08-19 14:58:15 +05:30
Neeraj
5f1cfb9ba5 [server] Fail request on customDomain mismatch (#6893)
## Description

## Tests
2025-08-19 14:23:00 +05:30
Neeraj Gupta
298e3695c7 [server] Fail request on customDomain mismatch 2025-08-19 12:34:31 +05:30
Vishnu Mohandas
621713d0b4 [mob] Remove unused import (#6892) 2025-08-19 12:33:15 +05:30
vishnukvmd
34813d2fae [mob] Remove unused import 2025-08-19 12:32:58 +05:30
laurenspriem
bb177bc3f6 Merge branch 'main' into smart_dedupe 2025-08-19 11:47:19 +05:30
Vishnu Mohandas
d8e4418d78 Remove ignore (#6890) 2025-08-19 11:43:36 +05:30
vishnukvmd
9771a5bc5d Remove ignore 2025-08-19 11:41:44 +05:30
laurenspriem
65f7e3f6c6 Exclude rust_builder in linter 2025-08-19 11:39:03 +05:30
laurenspriem
49b9d83f05 refactor to not use ui.image unnecessarily everywhere 2025-08-19 10:52:59 +05:30
laurenspriem
273d7bd00a ignore rust_builder linting errors 2025-08-19 10:38:08 +05:30
laurenspriem
4e8991dc10 remove unused import 2025-08-19 10:25:42 +05:30
Neeraj
aa4207f878 [auth] New translations (#6877)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-08-19 10:13:12 +05:30
Manav Rathi
3176ba8a93 pin to specific release of debian to avoid collation mismatch (#6886)
## Description

this pins the postgres container to a specific version of debian to
prevent issues with updated glibc in newer deb release

https://github.com/docker-library/postgres/issues/1356

## Tests
2025-08-19 09:09:04 +05:30
Matthias Wirtz
fcf038c4d8 pin to specific release of debian to avoid collation mismatch 2025-08-18 20:54:12 +02:00
Prateek Sunal
46aad76039 [mob][photos] fix widget tap on iOS (#6882)
## Description

Widget tap was not opening the specified photo because the app group id
was not setting correctly when the method was being called.

## Tests
2025-08-18 22:23:36 +05:30
Prateek Sunal
9a654988f8 chore: remove unused prefs 2025-08-18 22:23:15 +05:30
Prateek Sunal
1ce749e93e fix: update code to check correctly 2025-08-18 22:22:54 +05:30
Prateek Sunal
db88432b9d fix: update swift file to handle homeWidget deep link 2025-08-18 21:54:00 +05:30
Prateek Sunal
354bcc715f fix: remove iOS widget tap issue from change log 2025-08-18 20:56:46 +05:30
Prateek Sunal
5541198967 fix: combine functions 2025-08-18 20:55:07 +05:30
Prateek Sunal
3e2dbe2c1b fix: take prefs from ServiceLocation & setAppGroup whenever needed 2025-08-18 20:47:01 +05:30
Prateek Sunal
5d3d18f347 fix: add some logs + init prefs at one place 2025-08-18 19:59:15 +05:30
Prateek Sunal
9a876f3d59 fix: update internal and store change logs for widget tap issues on iOS 2025-08-18 19:11:10 +05:30
Prateek Sunal
3b7600ae7b chore: update lock files 2025-08-18 19:09:57 +05:30
Prateek Sunal
8bacf8ff93 fix: widget tap not working on iOS by giving preferences to init 2025-08-18 19:09:44 +05:30
Vishnu Mohandas
b356e5d0a5 Hey Locker! (#6881) 2025-08-18 18:44:44 +05:30
vishnukvmd
777516446d Hey Locker! 2025-08-18 18:43:14 +05:30
laurenspriem
37c1d0f6a8 Unify UI 2025-08-18 18:23:14 +05:30
laurenspriem
be1bf28cd8 Add cacheExtend for smoother scroll 2025-08-18 17:25:44 +05:30
Vishnu Mohandas
de5f0fbb39 [docs] update bucket-level configuration for S3 (#6873)
## Description

This PR updates documentation for S3 configuration with bucket-level
configuration for URL style and local buckets and updates needed
configuration that will make it intuitive for self-hosters.
2025-08-18 15:48:38 +05:30
Vishnu Mohandas
48fa2bd6de [mobile] Remove unused script for dependency fetching in mobile packages (#6878)
## Description

## Tests
2025-08-18 12:49:14 +05:30
AmanRajSinghMourya
df584f34e9 Remove unused script for dependency fetching in mobile packages 2025-08-18 12:36:05 +05:30
Vishnu Mohandas
0241ad1fe5 [mobile] Refactor project to extract and centralize common code into packages (#6768)
## Description
Refactored the codebase to move shared logic into reusable packages
under packages/.
Cleaned up old code, fixed builds, applied lint fixes, and updated
dependencies.

### Extracted reusable logic into dedicated packages:

- packages/accounts
- packages/base
- packages/configuration
- packages/lock screen
- packages/logging
- packages/network
- packages/strings
- packages/ui
- packages/utils

### Removed legacy or redundant code:
- Password re-entry
- Recovery key flow
- Password verification logic
- Applied lint fixes across multiple modules like accounts, base,
configuration, events, lock_screen, logging, network, strings, ui, utils

###  Build Fixes
Fixed Android build issues
Upgraded Flutter to version 3.24.3 and resolved related dependency
errors
2025-08-18 12:26:17 +05:30
AmanRajSinghMourya
435ed212c6 Fix build issues 2025-08-18 12:13:15 +05:30
AmanRajSinghMourya
1e9a6a1e14 Merge branch 'main' into test-com 2025-08-18 11:37:45 +05:30
Manav Rathi
a7ba3079cb [web] New translations (#6875)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-08-18 11:33:05 +05:30
Neeraj
97f1bb71c7 [mobile/photos] New translations (#6876)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-08-18 10:55:31 +05:30
laurenspriem
cad8613e81 Remove "select extra" button 2025-08-18 10:28:57 +05:30
laurenspriem
b46e51f64d Prefer smaller names 2025-08-18 10:25:06 +05:30
laurenspriem
e6bf64548c Use cached files 2025-08-18 10:21:28 +05:30
laurenspriem
5729e0cf3e no shared or hidden files 2025-08-18 10:11:04 +05:30
laurenspriem
b353539328 Sort by highest size first 2025-08-18 09:54:31 +05:30
Crowdin Bot
f2049ac7fa New Crowdin translations by GitHub Action 2025-08-18 01:18:04 +00:00
Crowdin Bot
e82ba882d6 New Crowdin translations by GitHub Action 2025-08-18 01:05:17 +00:00
Crowdin Bot
eecd7ed355 New Crowdin translations by GitHub Action 2025-08-18 00:43:39 +00:00
Keerthana
bc70b4e725 [docs] fix linting for self-hosting 2025-08-18 01:52:26 +05:30
Keerthana
a52cebf0e5 [cli] remove dead code in init 2025-08-18 00:49:29 +05:30
Keerthana
4c31a7bcd6 [docs] update bucket configuration 2025-08-17 23:55:43 +05:30
Kilian Hohm
cf938eca91 Add CLI command to send a test email via admin API 2025-08-16 10:33:23 +02:00
Prateek Sunal
deef13ece9 [auth] update plugins & gradle (#6861)
## Description

Fix for compiling with flutter 3.32.8

## Tests
2025-08-15 19:35:21 +05:30
Kilian Hohm
a3d3ee24f8 Document optional TLS/SSL encryption for sending emails via SMTP 2025-08-15 15:48:59 +02:00
Kilian Hohm
6b37cc46a5 Add optional TLS/SSL encryption for sending emails via SMTP 2025-08-15 15:48:41 +02:00
Prateek Sunal
3132373c26 chore: update plugins & add desugaring 2025-08-15 18:13:08 +05:30
Prateek Sunal
5b4ff1d01a chore: update gradle and kotlin 2025-08-15 17:34:04 +05:30
AmanRajSinghMourya
20d8a42239 Add broken-icon 2025-08-14 22:23:50 +05:30
Aman Raj Singh Mourya
5d85dea5fe [auth] Show black color as default background color for privacy-screen (#6854)
## Description]
When switching between tabs on mobile, a white flash appear when
lockscreen is enable.
This PR fixes that by setting the background color to black for both
light and dark theme.
2025-08-14 21:54:33 +05:30
AmanRajSinghMourya
b19814dd2c Add onBoardingBodyColor to CustomColorScheme extension for light and dark themes 2025-08-14 21:18:53 +05:30
laurenspriem
ad39694026 report changes at correct place 2025-08-14 19:06:03 +05:30
Laurens Priem
a28f402f35 [mob][photos] Memories misc improv (#6851)
## Description

Few miscellaneous improvements for memories. Taking text embeddings from
assets, and better caching and choosing of which persons to show.

## Tests

Tested in debug mode on my pixel phone.
2025-08-14 17:59:53 +05:30
laurenspriem
5596e3d2e5 Merge branch 'main' into memories_misc_improv 2025-08-14 17:34:16 +05:30
laurenspriem
00b9d277d2 load text embeddings for memories from assets 2025-08-14 17:29:37 +05:30
Laurens Priem
f48c21bd4e [mob][photos] Specify rust version in mobile builds (#6850)
## Description

Specify rust version in mobile builds
2025-08-14 13:56:26 +05:30
laurenspriem
9b23ec5953 No dependency on rust version specifically 2025-08-14 13:55:34 +05:30
laurenspriem
b917592901 specify rust version 2025-08-14 13:47:30 +05:30
Laurens Priem
a1606b99d1 [mob][photos] Similar images debug screen (#6845)
## Description

Introduces the similar images (debug) screen and similar images
functionality in the app. It doesn't include the final design, this PR
is more to get some things in main, so that the entire team can start
testing it. This PR also finally introduces functional rust code into
the mobile app, as well as a vector DB.

(Note that flutter_rust_bridge, needed for rust integration,
automatically formats certain dart code when generating bindings. So
some file changes in this PR are simply automatic formats and can be
ignored. Similarly, the `rust_builder` directory is mainly generated and
can be ignored.)

## Tests

Tested on my own device in both debug and release mode.
2025-08-14 13:13:53 +05:30
laurenspriem
38ed141d0e Re-add rust builder 2025-08-14 13:05:43 +05:30
laurenspriem
64dde88b63 Delete rust_builder for PR issue 2025-08-14 13:05:09 +05:30
Manav Rathi
af628a72fa [web] New translations (#6849)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-08-14 12:39:59 +05:30
laurenspriem
634e5e9624 Merge branch 'main' into similar_images_debug 2025-08-14 12:37:38 +05:30
Crowdin Bot
6db71d7995 New Crowdin translations by GitHub Action 2025-08-14 07:04:33 +00:00
Manav Rathi
83378094b5 [web] Move custom domain related strings to translations (#6848) 2025-08-14 12:33:54 +05:30
laurenspriem
9afa40764e Remove more old refs 2025-08-14 12:25:46 +05:30
laurenspriem
9899298500 Remove old gitsubmodule refs 2025-08-14 12:21:41 +05:30
Aman Raj Singh Mourya
ad58bc1d5f [auth] Add custom icon for Skyscanner (#6843)
## Description
Custom icon for [Skyscanner](https://www.skyscanner.net/)
- Add optimised SVG file
- Add entry to `custom-icons.json`
2025-08-14 12:05:00 +05:30
Manav Rathi
d76c9ce6db [web] Move custom domain related strings to translations 2025-08-14 11:58:22 +05:30
Manav Rathi
0606401d29 [docs] Custom domains troubleshooting (#6847) 2025-08-14 10:35:06 +05:30
Manav Rathi
0e9556603e [docs] Custom domains troubleshooting 2025-08-14 10:32:17 +05:30
laurenspriem
f4c0899e02 Use slicing 2025-08-14 09:30:59 +05:30
laurenspriem
10ae4c5f92 Merge branch 'main' into similar_images_debug 2025-08-14 09:11:46 +05:30
laurenspriem
eb967709dd Put vectorDB behind feature flag 2025-08-14 08:53:38 +05:30
laurenspriem
b72b118299 Note change 2025-08-14 08:41:04 +05:30
gfrcsd
556c04aca2 Add custom icon for Skyscanner 2025-08-13 22:12:50 +01:00
AmanRajSinghMourya
72ede1a109 Add onLongPress callback to MenuItemWidget 2025-08-14 00:09:48 +05:30
Aman Raj Singh Mourya
4b89e92dd0 [auth] add custom icon for RaiderIO (#6839)
- Added Raider.IO SVG icon.
- Updated custom-icons.json to include the new icon.

Raider.IO is a platform that tracks World of Warcraft players'
performance.
2025-08-13 23:39:46 +05:30
sayimburak
6b93125b5d [auth] add custom icon for RaiderIO
- Added Raider.IO SVG icon.
- Updated custom-icons.json to include the new icon.

Raider.IO is a platform that tracks World of Warcraft players' performance.
2025-08-13 16:44:01 +03:00
Manav Rathi
4a3d9fd752 [web] Custom domains (#6837) 2025-08-13 17:45:44 +05:30
laurenspriem
39c1e54cc9 Delete with symlink 2025-08-13 14:56:53 +05:30
laurenspriem
cb3f1a5edc sort menu 2025-08-13 14:24:48 +05:30
Prateek Sunal
6112d6a780 [mob] update target api to 35 (android 15) & compileSdk to latest (36) (#6833)
## Description

targetSdk -> 35, compileSdk -> 36

- [x] Solves Target api issue for auth and photos

## Tests
2025-08-13 14:19:09 +05:30
laurenspriem
b34a769773 Sort on name within individual files group 2025-08-13 14:18:13 +05:30
Prateek Sunal
e265d4b4d2 fix: only bump target sdk to 35 2025-08-13 13:14:01 +05:30
Prateek Sunal
f95410a5b1 fix: only bump target sdk to 35 2025-08-13 13:13:37 +05:30
Manav Rathi
0eb56a8437 yarn pretty 2025-08-13 12:53:25 +05:30
Manav Rathi
eb9f8021ae Integrate 2025-08-13 12:30:13 +05:30
Manav Rathi
fdc3cb8f85 Images 2025-08-13 12:11:06 +05:30
AmanRajSinghMourya
5fe86858ef Update dependencies and upgrade SDK version; replace qr_code_scanner with qr_code_scanner_plus 2025-08-13 11:38:27 +05:30
Manav Rathi
0c9f9a60b7 Help 2025-08-13 11:23:37 +05:30
laurenspriem
4db135d5d0 Don't log clip queries 2025-08-13 10:55:54 +05:30
laurenspriem
8c5f7e62be Don't log clip queries 2025-08-13 10:55:23 +05:30
laurenspriem
ed011e93dc Merge branch 'main' into memories_misc_improv 2025-08-13 10:36:11 +05:30
AmanRajSinghMourya
7546d8cad2 Merge branch 'main' into test-com 2025-08-13 10:13:50 +05:30
laurenspriem
a98385c3a3 Dependencies 2025-08-13 09:49:51 +05:30
laurenspriem
68639dfd55 Update cargokit with upgraded flutter version 2025-08-13 09:49:42 +05:30
Neeraj
1fe2a941ff [mobile/photos] New translations (#6808)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-08-13 09:35:47 +05:30
laurenspriem
d7f88c1890 use rust in gh actions internal releases 2025-08-13 09:25:45 +05:30
Manav Rathi
357b7c58a1 Subscription check 2025-08-13 09:12:44 +05:30
Manav Rathi
f300573604 Simplify 2025-08-13 09:12:44 +05:30
Manav Rathi
4e622fc48a [web] Update yarn.lock (#6835) 2025-08-13 09:09:26 +05:30
Manav Rathi
b11d0e7c94 [web] Update yarn.lock 2025-08-13 09:04:53 +05:30
laurenspriem
d65ddaec02 Merge branch 'main' into smart_dedupe 2025-08-13 08:54:07 +05:30
Manav Rathi
ea0e2ed664 [infra] Caddy (#6831)
For custom domain TLS provisioning
2025-08-12 18:01:24 +05:30
Manav Rathi
01d70d1b5e Fix HTTPS connection with upstream 2025-08-12 17:49:48 +05:30
Prateek Sunal
de44b1813e chore: update target api & compile sdk to 36 (android 16) 2025-08-12 17:34:56 +05:30
Neeraj
7165db3cd9 [server] Support for configuring custom-domains (#6827)
## Description

## Tests
- Verified server db migrations is on 103
- Verified that duplicate custom domain results in error
- basic sanity testing for custom domain validation.
2025-08-12 17:25:47 +05:30
Neeraj
ee3829675b [auth] Update assets for f-droid (#6832)
## Description

## Tests
2025-08-12 16:26:56 +05:30
Neeraj
9ee86fc6a0 [mob] upgrade flutter to latest stable (#6254)
## Description

This PR upgrades flutter to stable version i.e. Flutter 3.32.8

- [x] Bump dependencies
- [x] Replace .withOpacity( with .withValues(alpha:
- [x] Fix broken l10n
- [x] Did some lint fixes
- [x] Update deprecated methods and arguments
- [x] Fix flutter_gen not found for Photos app (by removing the
l10n.yaml, fixing delegates, using `intl_utils/Flutter Intl`)

## Tests

- [x] Test app
- [x] Check upgraded deps
- [x] Test Deep links/Passkeys - Android
- [ ] Test Deep links/Passkeys - iOS
2025-08-12 16:22:09 +05:30
Neeraj Gupta
c46c009bee Update auth description 2025-08-12 16:18:55 +05:30
Prateek Sunal
e9786d8ee5 fix: bump remaining flutter sdk versions 2025-08-12 16:09:16 +05:30
Neeraj Gupta
dbc36c7129 Update assets 2025-08-12 16:05:15 +05:30
Prateek Sunal
e00c9795f0 chore: lint fix 2025-08-12 16:03:06 +05:30
Prateek Sunal
db7a7c3f7a chore: bump intl 2025-08-12 15:58:17 +05:30
Prateek Sunal
33b8039348 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-08-12 15:46:31 +05:30
laurenspriem
4070d47d0f Merge branch 'main' into smart_dedupe 2025-08-12 15:41:33 +05:30
Neeraj Gupta
249206eadf [auth] Update assets for f-droid 2025-08-12 15:32:43 +05:30
laurenspriem
11ef667433 Select all to select extra 2025-08-12 15:29:41 +05:30
Neeraj
2bf24be08e [auth] Fix path for auth workflows & delete oversized icons (#6830)
## Description

## Tests
2025-08-12 15:29:23 +05:30
laurenspriem
e9feed59cd Use person faces to differentiate too 2025-08-12 15:26:11 +05:30
Neeraj Gupta
7cc4ab57f3 Remove oversized assets 2025-08-12 15:24:38 +05:30
Manav Rathi
c84c29ed74 Caddy 2025-08-12 14:55:06 +05:30
Neeraj Gupta
cb03173c46 Fix path for auth linters 2025-08-12 14:52:05 +05:30
Neeraj
13a015434b [mob] Support for handling Custom domain (#6829)
## Description

## Tests
2025-08-12 14:49:30 +05:30
Neeraj Gupta
249009ae7e Clean up 2025-08-12 14:44:06 +05:30
Neeraj Gupta
b82956792a Separate change logs 2025-08-12 14:30:03 +05:30
Neeraj Gupta
4ba03d9a6a Update workflow 2025-08-12 13:53:21 +05:30
Neeraj Gupta
d6b4eec9b4 Merge remote-tracking branch 'origin/main' into custom_domain_handling 2025-08-12 13:50:26 +05:30
Neeraj Gupta
fb2743a8fe Update changelog 2025-08-12 13:50:16 +05:30
Prateek Sunal
c9c39b30ec chore: update changelog 2025-08-12 13:46:02 +05:30
Prateek Sunal
9eeb7efd4f [mob][photos] run ffmpeg in isolate (#5743)
## Description

- [x] Create a new service to use for FFmpeg in an isolate'ed
environment
- [x] Apply this service wherever we use FFmpeg Kit
- [x] Make FFMpeg accessible in an isolate (background)

## Tests

- [x] Test FFmpeg intergrations
2025-08-12 13:44:45 +05:30
Prateek Sunal
9fb52b8f95 fix: update changes 2025-08-12 13:44:01 +05:30
Prateek Sunal
8e7a6d2034 fix: rename variables 2025-08-12 13:43:38 +05:30
laurenspriem
5e52036f7a Better memory management 2025-08-12 13:38:29 +05:30
Prateek Sunal
9568c4819f chore: update timeout 2025-08-12 13:36:31 +05:30
Prateek Sunal
6e6ed7ea64 fix: logs 2025-08-12 13:31:25 +05:30
Neeraj Gupta
da590a643f Lint fixes 2025-08-12 13:28:00 +05:30
Neeraj Gupta
21c8af01a2 Update query 2025-08-12 13:25:39 +05:30
Prateek Sunal
00549d413e Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-08-12 13:13:24 +05:30
Prateek Sunal
75e7fa5cde Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-08-12 13:13:09 +05:30
Prateek Sunal
1e81abf9d9 Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-08-12 13:12:58 +05:30
Neeraj Gupta
e9c41aed1e Alert for origin mismatch 2025-08-12 13:03:42 +05:30
Manav Rathi
0784da5b4e [web] Custom albums build for custom domains (#6826) 2025-08-12 12:39:01 +05:30
Manav Rathi
633caa7883 Custom albums build for custom domains 2025-08-12 12:29:09 +05:30
Manav Rathi
d4635c415b [web] Custom domains - WIP (#6825) 2025-08-12 12:02:27 +05:30
Neeraj Gupta
f3e5297878 Merge remote-tracking branch 'origin/main' into custom_domain_handling 2025-08-12 11:55:46 +05:30
Neeraj Gupta
5e993b9526 Support for custom domain url replacement 2025-08-12 11:55:24 +05:30
Neeraj Gupta
29d316349b Allow empty string 2025-08-12 11:49:32 +05:30
laurenspriem
d61c18a6ef Use search with keys in similar images service 2025-08-12 11:38:44 +05:30
laurenspriem
5f4cf302a1 use search with keys in ml computer 2025-08-12 11:38:25 +05:30
laurenspriem
cb2b33eedb use rust search with potential keys in clip vector db 2025-08-12 11:38:03 +05:30
laurenspriem
856a87f01c Rust api to do entire search with potential keys in rust 2025-08-12 11:36:38 +05:30
Manav Rathi
95ed8d23de Prep for merge 2025-08-12 11:31:46 +05:30
Manav Rathi
97d8d9fa8d Handle errors 2025-08-12 11:19:29 +05:30
Manav Rathi
149eb6c38d Not required 2025-08-12 11:19:29 +05:30
Manav Rathi
4c57c6b30f Tweak 2025-08-12 11:19:29 +05:30
Manav Rathi
3d12812671 Use 2025-08-12 11:19:29 +05:30
Manav Rathi
440818f1af Read from remote store 2025-08-12 11:19:29 +05:30
Manav Rathi
18e7a52848 Sketch 1 2025-08-12 11:19:28 +05:30
Manav Rathi
b099d16a32 Screen outline 2025-08-12 11:19:28 +05:30
Manav Rathi
46c588c512 Button 2025-08-12 11:19:28 +05:30
Neeraj Gupta
f248dbabe0 Refactor publicUrl construction logic 2025-08-12 11:10:34 +05:30
Neeraj Gupta
799e844de3 Parse fields for custom domain 2025-08-12 11:07:34 +05:30
Manav Rathi
5090e16d54 Make public 2025-08-12 10:25:24 +05:30
Neeraj Gupta
1d649c5a79 Store only domain 2025-08-12 10:01:32 +05:30
Neeraj Gupta
9d4474393e Merge branch 'main' into refactor_remote_store 2025-08-12 09:39:48 +05:30
Manav Rathi
073235c294 [web] New translations (#6807)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2025-08-12 09:26:28 +05:30
Neeraj
fe8da0b332 [mob] Use Github workflow's run_number for bumping up the versionCode (#6824)
## Description

## Tests
2025-08-12 09:03:05 +05:30
Neeraj Gupta
b98294c073 Update workflow 2025-08-12 09:01:48 +05:30
Neeraj
c962508987 [mobile] Fix Image editor (#6819)
## Description
- Fix bottom navigation bar color in light theme
- Fix initial color in paint editor
- Tap to reset tune adjustment value (brightness, exposure, etc..) and
add haptics when crossing zero
2025-08-12 08:55:22 +05:30
Neeraj Gupta
4ff211868e Update changes 2025-08-12 08:54:56 +05:30
Neeraj Gupta
527f2557b6 Merge remote-tracking branch 'origin/main' into fix-image-editor 2025-08-12 08:53:30 +05:30
Neeraj
a945753629 [auth] Remove hex from some multi-color icons (#6820)
This PR removes the hex value from some multi-color icons that were
added in #6694. Removing the hex will fix broken icons like this:
<img width="270" height="284" alt="image"
src="https://github.com/user-attachments/assets/8603ce89-b47d-4b4b-a809-5d67b7b30c6a"
/>
<img width="229" height="262" alt="image"
src="https://github.com/user-attachments/assets/c38a8bce-57c5-4607-ac7b-47c677ea3871"
/>
<img width="334" height="293" alt="image"
src="https://github.com/user-attachments/assets/fe1f95e5-66b6-49ce-9458-5fe17c98e0fa"
/>
<img width="302" height="269" alt="image"
src="https://github.com/user-attachments/assets/4c7f59d8-534a-47e2-95bc-b6f70a1f2921"
/>
2025-08-12 08:52:59 +05:30
Sven
22c60fb83e Remove hex from multi-color icons 2025-08-11 19:12:32 +02:00
Aman Raj Singh Mourya
740ba4a9bf [auth] Add allegro icon (#6814)
## Description
Added 1 new custom SVG icon:

- **allegro.svg**

-## Tests
2025-08-11 18:29:47 +05:30
Aman Raj Singh Mourya
229bfdc7ec Fix formatting 2025-08-11 18:28:20 +05:30
Neeraj
93b1af6ec0 [mob] FIx change log parsing (#6817)
## Description

## Tests
2025-08-11 17:37:01 +05:30
laurenspriem
dbf6f6aa37 Proper rust init in MLComputer isolate 2025-08-11 17:24:36 +05:30
Neeraj Gupta
e8dde48688 Update workflow 2025-08-11 17:13:24 +05:30
Neeraj
d9145353b2 [mob] Modify daily build workflow (#6816)
## Description

## Tests
2025-08-11 17:04:39 +05:30
Neeraj Gupta
49c966f50c [mob] Modify daily build workflow 2025-08-11 17:03:58 +05:30
Neeraj
0ad83a3924 [mob] Add daily release workflow for photos (#6815)
## Description

## Tests
2025-08-11 16:33:02 +05:30
Neeraj Gupta
187a60ec3a Add daily release workflow for photos 2025-08-11 16:32:01 +05:30
Kremiorspokke
cabae4cca0 Update custom-icons.json 2025-08-11 12:32:39 +02:00
Kremiorspokke
cdfb9a7d0e Merge pull request #1 from Kremiorspokke/Kremiorspokke-patch-1
Add 1 new icon
2025-08-11 12:30:55 +02:00
Kremiorspokke
4860236f66 Add 1 new icon
Add polish e-commerce platfrom icon allegro
2025-08-11 12:22:41 +02:00
laurenspriem
ad90d2e37a Fix delete group bug 2025-08-11 15:43:30 +05:30
AmanRajSinghMourya
903762f283 fix: set initial color for painting editor 2025-08-11 15:34:02 +05:30
laurenspriem
6223a1529f bulk vector search in MLComputer isolate 2025-08-11 14:11:00 +05:30
Neeraj
143d758b5b [auth] Fix "Copied to Clipboard" text behind clipboard (#6791)
## Description
This fixes https://github.com/ente-io/ente/issues/324
2025-08-11 13:39:08 +05:30
AmanRajSinghMourya
1d25f23053 fix: update haptic feedback when reached zero 2025-08-11 12:56:59 +05:30
Neeraj
67d661eeb6 [auth] New translations (#6809)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2025-08-11 12:25:08 +05:30
Neeraj Gupta
fe86363b1f Bump version 2025-08-11 12:22:38 +05:30
Neeraj Gupta
15967713a0 Merge branch 'flutter-upgrade' of https://github.com/ente-io/auth into flutter-upgrade 2025-08-11 12:22:21 +05:30
Neeraj Gupta
2dafd62e14 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-08-11 12:22:00 +05:30
Neeraj
46865eff26 [mob] Gracefully handle decompress image exception (#6811)
## Description
On Android 16 with flutter upgrade, we are seeing `Could not decompress
image.` error for heic images taken from Iphone 16.
Instead of showing broken image, rendering the compressed version of the
image on UI.

Also, increased the minWidth/minWidth from default 1920/1080 to 8000/800

Refer:
https://pub.dev/packages/flutter_image_compress#minwidth-and-minheight
> If your image width is smaller than minWidth or height smaller than
minHeight, scale will be 1, that is, the size will not change.

```
E/FlutterJNI( 7914): Failed to decode image
E/FlutterJNI( 7914): java.io.IOException: getPixels failed with error invalid input
E/FlutterJNI( 7914):     at android.graphics.ImageDecoder.nDecodeBitmap(Native Method)
E/FlutterJNI( 7914):     at android.graphics.ImageDecoder.decodeBitmapInternal(ImageDecoder.java:1676)
E/FlutterJNI( 7914):     at android.graphics.ImageDecoder.decodeBitmapImpl(ImageDecoder.java:1865)
E/FlutterJNI( 7914):     at android.graphics.ImageDecoder.decodeBitmap(ImageDecoder.java:1850)
E/FlutterJNI( 7914):     at io.flutter.embedding.engine.FlutterJNI.decodeImage(FlutterJNI.java:571)
```

## Tests

Tested locally on Simulator with sample image.
2025-08-11 11:56:07 +05:30
Neeraj Gupta
36d45c7774 Change min Width/Height value during compress 2025-08-11 11:32:34 +05:30
Neeraj Gupta
fc0b86ffe6 Gracefully handle image decompress error 2025-08-11 11:32:07 +05:30
laurenspriem
1c75259e8f Merge branch 'isolate_issue' into flutter-upgrade 2025-08-11 11:28:53 +05:30
laurenspriem
67e493b27f use different deprecated method replacement 2025-08-11 11:00:17 +05:30
AmanRajSinghMourya
a74908214d Update password entry page to use a fixed color for valid field value 2025-08-11 10:38:44 +05:30
Crowdin Bot
6ac19de2af New Crowdin translations by GitHub Action 2025-08-11 01:18:24 +00:00
Crowdin Bot
a4e8a70c31 New Crowdin translations by GitHub Action 2025-08-11 01:05:16 +00:00
Crowdin Bot
4875ddf30c New Crowdin translations by GitHub Action 2025-08-11 00:44:23 +00:00
AmanRajSinghMourya
72f9d9e756 refactor: fix bottom navigation bar colors 2025-08-09 23:34:15 +05:30
AmanRajSinghMourya
e32698e4be update editor background color across image and video editor components 2025-08-09 23:33:36 +05:30
AmanRajSinghMourya
0b73388b0b fix search view background color 2025-08-09 11:35:00 +05:30
Neeraj
8fa63ba9fb [server] Fix typo in file link grouping (#6798) 2025-08-09 10:42:19 +05:30
Neeraj
15175a261a [mobile/photos] New translations (#6743)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2025-08-09 09:01:50 +05:30
Neeraj Gupta
b0eb362037 Fix typo in file link grouping 2025-08-09 06:19:54 +05:30
AmanRajSinghMourya
6bd5327d50 refactor: show black color as default background color in hideAppContent 2025-08-08 20:00:14 +05:30
Aman Raj Singh Mourya
8c2cb6dcad [auth] add AvistaZ network icons (#6789)
## Description
Add custom icons for AvistaZ.to network (Private Torrent tracker).
Including:
- [AvistaZ](https://avistaz.to/)
- [AnimeZ](https://animez.to/)
- [CinemaZ](https://cinemaz.to/)
- [ExoticaZ](https://exoticaz.to/)
- [PrivateHD](https://privatehd.to/)
## Tests
2025-08-08 17:33:28 +05:30
Aman Raj Singh Mourya
692f77c9bc [auth] add icon for capcom (#6790)
- added an icon for capcom
- added a json entry for capcom
2025-08-08 17:32:25 +05:30
Neeraj Gupta
7996ab4a3e Minor fixes 2025-08-08 16:36:50 +05:30
Neeraj Gupta
5d851d8f90 Add model for localAsset 2025-08-08 16:11:52 +05:30
eYdr1en
d4bfbbf04c fix comments 2025-08-08 12:40:51 +02:00
eYdr1en
92a03ce585 [auth] fix Copied to Clipboard text behind clipboard 2025-08-08 12:37:15 +02:00
Neeraj Gupta
1c37332f37 Endpoint to check domain claim 2025-08-08 15:40:05 +05:30
Neeraj Gupta
23103c3bcc Handle claimed domain error 2025-08-08 15:31:14 +05:30
Neeraj Gupta
920702c5dd Add validation 2025-08-08 15:31:02 +05:30
Neeraj Gupta
3167d85f06 Add index for customDomain 2025-08-08 15:25:04 +05:30
Brook
dd2a5d6191 [auth] add icon for capcom 2025-08-08 11:37:06 +03:00
Neeraj Gupta
bc1ae62477 Ability to configure cname 2025-08-08 14:06:26 +05:30
Neeraj Gupta
1af834aa7a Remove unused field 2025-08-08 14:02:36 +05:30
Hieu Pham
e66045dc74 [auth] add AvistaZ network icons
Add custom icons for AvistaZ.to network (Private Torrent tracker)
2025-08-08 15:08:08 +07:00
Prateek Sunal
69f6fdc9c7 Merge branch 'main' into flutter-upgrade 2025-08-08 13:25:52 +05:30
Prateek Sunal
1327a1f8cf chore: bump version 2025-08-08 13:24:50 +05:30
Prateek Sunal
52d2577236 chore: bump version 2025-08-08 13:23:19 +05:30
Neeraj Gupta
f2dc157e8a Support for customDomain flag 2025-08-08 13:10:57 +05:30
AmanRajSinghMourya
94e398dc89 Bump version 4.4.6+446 2025-08-08 12:40:30 +05:30
AmanRajSinghMourya
a5a19581fc Revert "Bump version to 4.4.6+445"
This reverts commit ea409fc266.
2025-08-08 12:39:12 +05:30
AmanRajSinghMourya
ea409fc266 Bump version to 4.4.6+445 2025-08-08 12:16:47 +05:30
Aman Raj Singh Mourya
0e9d7106f7 [mobile] Fix packages to support Auth theme (#6788) 2025-08-08 12:14:08 +05:30
AmanRajSinghMourya
6fe89fdc0e Add theme configuration and update color scheme in recovery key and lock screen pages 2025-08-08 12:05:08 +05:30
Neeraj
d9e860466c [auth] Auto hide dock icon macos (#6772)
## Description
After closing app or hidding the window on macos the dock icon still
appears even when the app is in tray which shouldn't happen this fixes
it
2025-08-07 20:54:30 +05:30
AmanRajSinghMourya
193e1374e1 Refactor GradientButton to use ClipRRect 2025-08-07 20:01:12 +05:30
AmanRajSinghMourya
e11a6ace80 Refactor theme usage in dynamic FAB and dialog widget; improve imports and color scheme references 2025-08-07 19:40:39 +05:30
AmanRajSinghMourya
9033bd8cec Fix formatting in custom-icons.json 2025-08-07 19:40:07 +05:30
AmanRajSinghMourya
085551b5a7 Add ente_strings package and update localization delegates 2025-08-07 19:39:58 +05:30
Manav Rathi
1633c478e3 [photos] [web] Handle XMP files interspersed with live photos (#6778) 2025-08-07 15:55:09 +05:30
Manav Rathi
5eb7cadc4d Fix multi-file scenarios 2025-08-07 15:49:50 +05:30
Neeraj Gupta
dd76317bb0 Clean up EnteFile 2025-08-07 15:45:55 +05:30
Neeraj Gupta
5519981f9c Stop reading redundant data 2025-08-07 15:43:55 +05:30
Manav Rathi
af5de77880 [photos] [web] Handle XMP files interspersed with live photos 2025-08-07 15:30:32 +05:30
Neeraj Gupta
1c249560c0 Clean up EnteFile 2025-08-07 15:10:56 +05:30
Neeraj
58279b668b [mob][photos] Reduce logs on startup (#6775)
## Description

## Tests
2025-08-07 14:08:28 +05:30
Ashil
7537614fc2 [mob][photos] More gallery scroll improvements (#6776) 2025-08-07 14:00:10 +05:30
Ashil
0db2385dbd Merge branch 'main' into gallery_scroll_improvement 2025-08-07 13:59:59 +05:30
Neeraj Gupta
130cc9137c File:Duration Switch to get only prop 2025-08-07 13:53:29 +05:30
Neeraj Gupta
95f2d282b5 Clean up EnteFile 2025-08-07 13:51:04 +05:30
Neeraj Gupta
e6668606db Minimize data read 2025-08-07 13:37:43 +05:30
Neeraj
fbb5397217 [auth] Add monochrome icon style for macos tray (#6771)
## Description
This fixes this issue https://github.com/ente-io/ente/issues/5173
2025-08-07 13:34:38 +05:30
ashilkn
f4605f86a4 Bump up build number 2025-08-07 13:18:27 +05:30
ashilkn
1f1cad181f Reduce galleryThumbnailDiskLoadDeferDuration 2025-08-07 13:14:21 +05:30
laurenspriem
cf81d58604 Prettify 2025-08-07 13:13:58 +05:30
laurenspriem
2560e5934f Delete method 2025-08-07 13:07:16 +05:30
Aman Raj Singh Mourya
7942c4d642 Added logos for meesman.nl, isc2.org, scouting.nl, zivver.com (#6770)
Fixed linting error in custom_icons.json (line 1733, superfluous comma)
and added the aforementioned logos.
2025-08-07 12:15:17 +05:30
Aman Raj Singh Mourya
625410852b [auth] add icon for Dresden University of Technology (#6774)
## Description

Add custom SVG icon for Dresden University of Technology.

Icon optimized with SVGOMG.
2025-08-07 12:10:54 +05:30
Neeraj Gupta
316c767ffa Merge branch 'reduceLog' into remote_db 2025-08-07 11:32:25 +05:30
Neeraj Gupta
970ca59077 Clean up localSettings log 2025-08-07 11:13:18 +05:30
laurenspriem
2a407b5928 track fileIDs, not size for similar files group 2025-08-07 11:12:47 +05:30
Neeraj Gupta
3ee021c9de Reduce heartbeat logs 2025-08-07 11:08:58 +05:30
Neeraj Gupta
c08b0f7aa4 Build changes 2025-08-07 11:08:15 +05:30
Neeraj Gupta
b5a4bcf98f Clean up EnteFile 2025-08-07 11:08:03 +05:30
ashilkn
0f8a8a7579 Perf: Skip recreation/modification of ImageProvider of Image used in thumbnail 2025-08-07 11:02:18 +05:30
ashilkn
33703072eb remove todo 2025-08-07 10:56:32 +05:30
Neeraj Gupta
dc06a2e193 Use getter for title 2025-08-07 10:41:20 +05:30
laurenspriem
019141ef3b animation 2025-08-07 10:34:53 +05:30
laurenspriem
44e9103942 bottom buttons 2025-08-07 10:29:14 +05:30
Muhammad Talal Anwar
83395641ef chore: add TU Dresden icon 2025-08-07 04:49:40 +00:00
Ashil
8cbdd4cc98 Gallery perf tweaks (#6754) 2025-08-07 10:00:10 +05:30
laurenspriem
a9e31aec8f Show more accurate size 2025-08-06 22:21:30 +05:30
laurenspriem
901e1a73dc auto select files 2025-08-06 22:13:59 +05:30
Prateek Sunal
6c614f2649 fix: re-add pro_image_editor 2025-08-06 22:11:39 +05:30
laurenspriem
184ea915fc Make files selectable 2025-08-06 21:51:05 +05:30
laurenspriem
d58f96fb60 Change default sort to shortest distance 2025-08-06 21:30:08 +05:30
eYdr1en
df5a7d6c19 auto hide dock icon macos 2025-08-06 15:24:57 +02:00
eYdr1en
95347022e8 add isTemplate for correct macos look on wallpaper 2025-08-06 15:20:44 +02:00
eYdr1en
4f224e7eba add monochrome icon style for macos tray 2025-08-06 15:10:42 +02:00
Prateek Sunal
fc593e86ee chore: update locks 2025-08-06 17:38:15 +05:30
Prateek Sunal
5c489f3358 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-08-06 17:37:16 +05:30
Prateek Sunal
899993a23b chore: bump everywhere 2025-08-06 17:07:07 +05:30
Prateek Sunal
6dd23fa5ff chore: bump things 2025-08-06 17:05:54 +05:30
AmanRajSinghMourya
210a0a45c1 Bump version to 4.4.5+445 2025-08-06 16:44:08 +05:30
AmanRajSinghMourya
ee035681ab Bump version to 4.4.3+444 2025-08-06 15:40:14 +05:30
laurenspriem
98598053c7 Proper text scheme 2025-08-06 15:04:48 +05:30
Neeraj Gupta
c29446e00a Add index 2025-08-06 14:51:41 +05:30
Ashil
1c2f8a74c4 Merge branch 'main' into gallery_perf_tweks 2025-08-06 14:46:33 +05:30
ashilkn
d86f9d2ffa refactor 2025-08-06 14:45:03 +05:30
AmanRajSinghMourya
cc2d65d796 Fix string 2025-08-06 14:35:25 +05:30
AmanRajSinghMourya
0e61b3dfd4 Minor changes in packages's pubspec to match dependencies 2025-08-06 14:35:03 +05:30
AmanRajSinghMourya
0a3035e5d5 Update Android build configuration: enable core library desugaring, increase minSdkVersion to 22, and upgrade Gradle version to 8.4. Add ProGuard rules to suppress warnings. 2025-08-06 14:33:19 +05:30
laurenspriem
8046c6837c Better spacing 2025-08-06 14:07:09 +05:30
laurenspriem
30641a2df6 Empty delete button 2025-08-06 14:01:49 +05:30
laurenspriem
c82cd54b7b Figma design 2025-08-06 12:52:03 +05:30
Neeraj Gupta
5aa36921d8 Use remoteDB 2025-08-06 12:38:06 +05:30
AmanRajSinghMourya
7adb1c0a6c Minor fix 2025-08-06 12:07:21 +05:30
AmanRajSinghMourya
cb55be1e5c Fix android build 2025-08-06 11:38:10 +05:30
AmanRajSinghMourya
d7a7144b33 Fix android build 2025-08-06 11:38:04 +05:30
AmanRajSinghMourya
e6a867a859 Cleanup 2025-08-06 11:37:04 +05:30
AmanRajSinghMourya
a9c8e4476f Remove old password reentry, recovery key, recovery, and password verification pages; refactor imports and update references in settings and home page. 2025-08-06 11:36:51 +05:30
AmanRajSinghMourya
f914263b2f Remove old password reentry, recovery key, recovery, and password verification pages; refactor imports and update references in settings and home page. 2025-08-06 11:36:46 +05:30
AmanRajSinghMourya
6f94d91afb More code refractor in auth/accounts section 2025-08-06 11:36:26 +05:30
AmanRajSinghMourya
57569e79fe Add ente_ui dependency to pubspec.yaml and update its lock status in pubspec.lock 2025-08-06 11:35:49 +05:30
AmanRajSinghMourya
b695db80ab Refactor HomePage to extend BaseHomePage for improved structure 2025-08-06 11:35:32 +05:30
AmanRajSinghMourya
ae1a43b8bf Refractor accounts section to use common code from packages/accounts 2025-08-06 11:35:13 +05:30
Neeraj Gupta
3b3af65d74 Rewrite reload and cache clear check 2025-08-06 11:35:12 +05:30
AmanRajSinghMourya
d9d9acfa3e Refractor accounts section to use common code from packages/accounts 2025-08-06 11:35:06 +05:30
AmanRajSinghMourya
d430936ae8 Refractor accounts section to use common code from packages/accounts 2025-08-06 11:34:44 +05:30
AmanRajSinghMourya
b02acc579f Update ente_accounts dependency 2025-08-06 11:33:58 +05:30
AmanRajSinghMourya
e87be4b9af Update flutter_inappwebview dependencies 2025-08-06 11:33:36 +05:30
AmanRajSinghMourya
399148aa59 Introduced lock screen package from packages/lockscreen 2025-08-06 11:33:23 +05:30
AmanRajSinghMourya
abd733934b Introduced lock screen package from packages/lockscreen 2025-08-06 11:33:13 +05:30
vishnukvmd
661e1f92d5 Add developer settings page 2025-08-06 11:31:56 +05:30
vishnukvmd
97b36681dc Consistency 2025-08-06 11:31:23 +05:30
vishnukvmd
5dd5756a41 Lint utils 2025-08-06 11:29:02 +05:30
vishnukvmd
d2cfa374bd Lint utils 2025-08-06 11:28:54 +05:30
vishnukvmd
fb64c8aa4c Lint ui 2025-08-06 11:28:43 +05:30
vishnukvmd
86b54e2241 Lint strings 2025-08-06 11:28:27 +05:30
vishnukvmd
c33396ea60 Lint network 2025-08-06 11:28:11 +05:30
vishnukvmd
24f48b5054 Lint logging 2025-08-06 11:27:56 +05:30
vishnukvmd
094c92c8b6 Lint lock_screen 2025-08-06 11:27:41 +05:30
vishnukvmd
c2922a0cb2 Lint lock_screen 2025-08-06 11:27:36 +05:30
vishnukvmd
9a357a716d Lint events 2025-08-06 11:27:21 +05:30
vishnukvmd
5574fd748e Lint configuration 2025-08-06 11:27:06 +05:30
vishnukvmd
f2be25667f Lint base 2025-08-06 11:26:48 +05:30
vishnukvmd
053d0cfcaa Fix minor lint 2025-08-06 11:26:27 +05:30
vishnukvmd
0ff8184f47 Lint accounts 2025-08-06 11:26:11 +05:30
vishnukvmd
f971835ae7 Remove noise 2025-08-06 11:25:56 +05:30
vishnukvmd
694e3ca121 Remove changelog 2025-08-06 11:25:42 +05:30
vishnukvmd
be850c27c6 Fix dependency 2025-08-06 11:25:08 +05:30
vishnukvmd
3aaf11ba1d Setup common accounts package 2025-08-06 11:24:46 +05:30
vishnukvmd
3019d858c9 Setup common accounts package 2025-08-06 11:24:35 +05:30
vishnukvmd
81e926ef2d Setup common accounts package 2025-08-06 11:17:59 +05:30
vishnukvmd
016d646971 Update common ui 2025-08-06 11:14:26 +05:30
vishnukvmd
1f100566ad Update common lockscreen 2025-08-06 11:13:56 +05:30
vishnukvmd
d69595e744 Setup common lockscreen 2025-08-06 11:13:25 +05:30
vishnukvmd
7a91e714fe Setup common lockscreen 2025-08-06 11:13:13 +05:30
vishnukvmd
e352de8b9c Update strings 2025-08-06 11:11:18 +05:30
vishnukvmd
e36831b599 Update strings 2025-08-06 11:11:09 +05:30
vishnukvmd
df74c7d54d Update strings 2025-08-06 11:10:50 +05:30
Manav Rathi
ffdc21d15c [rust] Make CI fail on warnings (#6763)
https://doc.rust-lang.org/stable/clippy/continuous_integration/github_actions.html
2025-08-06 10:55:37 +05:30
Neeraj Gupta
9ad88d3908 Filter out files for which we don't need to create streams 2025-08-06 10:50:34 +05:30
Neeraj Gupta
012e9091f0 Use remote DB 2025-08-06 10:34:43 +05:30
Neeraj Gupta
8ff0f237e7 Use remote DB 2025-08-06 10:17:27 +05:30
Neeraj Gupta
c80e4a65b8 Set state context early 2025-08-06 09:14:08 +05:30
Neeraj Gupta
c317f2494f Fix parsing 2025-08-06 09:13:42 +05:30
vishnukvmd
d7986b5c7c Update utils 2025-08-05 23:58:46 +05:30
vishnukvmd
3e888876d1 Update utils 2025-08-05 23:58:41 +05:30
vishnukvmd
6af494206e Add developer settings page 2025-08-05 23:57:41 +05:30
vishnukvmd
93f32de8c1 Update strings 2025-08-05 23:57:27 +05:30
vishnukvmd
e0b3e6464e Update strings 2025-08-05 23:57:20 +05:30
vishnukvmd
c67d2f0836 Consistency 2025-08-05 23:56:50 +05:30
vishnukvmd
49106a3dd9 Pull existing translations 2025-08-05 23:56:39 +05:30
vishnukvmd
b61c75dc84 Lint utils 2025-08-05 23:56:28 +05:30
vishnukvmd
465fc7c7d3 Lint ui 2025-08-05 23:56:13 +05:30
vishnukvmd
487e4ef559 Lint strings 2025-08-05 23:56:03 +05:30
vishnukvmd
34bf4f6bba Lint network 2025-08-05 23:55:51 +05:30
vishnukvmd
af36978ede Lint logging 2025-08-05 23:55:41 +05:30
vishnukvmd
a375dfdc2e Lint lock_screen 2025-08-05 23:55:28 +05:30
vishnukvmd
a5b0e66e9d Lint lock_screen 2025-08-05 23:55:23 +05:30
vishnukvmd
2b3b7a5e2a Lint events 2025-08-05 23:54:44 +05:30
vishnukvmd
b1dc9272a0 Lint configuration 2025-08-05 23:54:30 +05:30
vishnukvmd
7c33c160b2 Lint base 2025-08-05 23:54:15 +05:30
vishnukvmd
be232efbc6 Fix minor lint 2025-08-05 23:53:59 +05:30
vishnukvmd
bbac09b4a6 Lint accounts 2025-08-05 23:53:41 +05:30
vishnukvmd
a4626ae7a1 Remove noise 2025-08-05 23:53:27 +05:30
vishnukvmd
e8551df8b9 Remove changelog 2025-08-05 23:53:10 +05:30
vishnukvmd
77cb40aef4 Update strings 2025-08-05 23:52:50 +05:30
vishnukvmd
827090fb24 Fix dependency 2025-08-05 23:52:31 +05:30
vishnukvmd
39b9670fcc Setup common accounts package 2025-08-05 23:52:11 +05:30
vishnukvmd
d227a2bf20 Setup common accounts package 2025-08-05 23:52:03 +05:30
vishnukvmd
0b766415a4 Setup common accounts package 2025-08-05 23:51:32 +05:30
vishnukvmd
3b727549d5 Update common ui 2025-08-05 23:49:03 +05:30
vishnukvmd
dbdf19ee8d Update common lockscreen 2025-08-05 23:48:45 +05:30
vishnukvmd
2e3d621077 Update strings 2025-08-05 23:44:26 +05:30
vishnukvmd
0455481f3d Lint lock_screen 2025-08-05 23:38:42 +05:30
vishnukvmd
c9a7918397 Lint events 2025-08-05 23:38:42 +05:30
vishnukvmd
957f0bc041 Lint configuration 2025-08-05 23:38:42 +05:30
vishnukvmd
24f5a5813a Lint base 2025-08-05 23:38:42 +05:30
vishnukvmd
860b2895f6 Fix minor lint 2025-08-05 23:38:42 +05:30
vishnukvmd
a510320d0e Lint accounts 2025-08-05 23:38:42 +05:30
vishnukvmd
de04f18cb2 Remove noise 2025-08-05 23:38:42 +05:30
vishnukvmd
b84b73fda2 Remove changelog 2025-08-05 23:38:42 +05:30
vishnukvmd
12b0618149 Update strings 2025-08-05 23:38:42 +05:30
vishnukvmd
28a43393f9 Fix dependency 2025-08-05 23:38:42 +05:30
vishnukvmd
21b3bdf204 Setup common accounts package 2025-08-05 23:38:42 +05:30
vishnukvmd
3436fb7fb1 Update common ui 2025-08-05 23:38:42 +05:30
vishnukvmd
045b40b2b2 Update common lockscreen 2025-08-05 23:38:42 +05:30
vishnukvmd
c09922d1a3 Update strings 2025-08-05 23:38:42 +05:30
vishnukvmd
3e9032588e Setup common lockscreen 2025-08-05 23:34:58 +05:30
vishnukvmd
14e570b676 Update strings 2025-08-05 23:34:49 +05:30
vishnukvmd
a412aa4886 Update strings 2025-08-05 23:34:44 +05:30
vishnukvmd
a7a162d375 Update utils 2025-08-05 23:34:38 +05:30
vishnukvmd
b444bdc5ec Add re-usable base home page 2025-08-05 23:34:33 +05:30
vishnukvmd
f9299e7950 Reduce noise 2025-08-05 23:34:27 +05:30
vishnukvmd
8a9f73ada5 Refactor utils 2025-08-05 23:34:10 +05:30
vishnukvmd
d5c1970ca2 Update common ui 2025-08-05 23:34:01 +05:30
vishnukvmd
f8aff3e12b Update common strings 2025-08-05 23:33:52 +05:30
vishnukvmd
490759243b Setup common UI components 2025-08-05 23:33:46 +05:30
vishnukvmd
e8a9e509a8 Update common strings 2025-08-05 23:33:39 +05:30
vishnukvmd
c392ad5dcb Update utils 2025-08-05 23:33:23 +05:30
vishnukvmd
9bb084d610 Add typedefs to base 2025-08-05 23:33:13 +05:30
vishnukvmd
00b05e2d7c Update common utils 2025-08-05 23:33:00 +05:30
vishnukvmd
93736fe57a Update common strings 2025-08-05 23:32:46 +05:30
vishnukvmd
995ae50418 Refactor common utils 2025-08-05 23:32:24 +05:30
vishnukvmd
42e6dff0f5 Remove redundant test 2025-08-05 23:32:17 +05:30
vishnukvmd
150513d3e5 Refactor common strings 2025-08-05 23:32:04 +05:30
vishnukvmd
13ed1e76bc Use common network package 2025-08-05 23:31:55 +05:30
vishnukvmd
a7d0e2eef5 Refactor network 2025-08-05 23:31:36 +05:30
vishnukvmd
134314c285 Common config 2025-08-05 23:30:56 +05:30
vishnukvmd
eb3e3db8e6 Base config 2025-08-05 23:30:33 +05:30
vishnukvmd
3b9b886ae9 Refactor 2025-08-05 23:30:20 +05:30
vishnukvmd
d88df36c3d Packages 2025-08-05 23:30:06 +05:30
vishnukvmd
62d7311780 ignore surprises 2025-08-05 23:29:42 +05:30
vishnukvmd
9d76ccc173 init config 2025-08-05 23:27:17 +05:30
peterv99
abe5548202 Added logos for meesman.nl, isc2.org, scouting.nl, zivver.com
Fixed linting error in custom_icons.json (line 1733, superfluous comma) and added the aforementioned logos.
2025-08-05 19:52:36 +02:00
ashilkn
769adb75c5 Different cache extents for different photoGridSizes 2025-08-05 20:31:10 +05:30
ashilkn
1648f62da6 Add repaint boundary over each gird item in gallery 2025-08-05 16:49:48 +05:30
Neeraj Gupta
264b0b151a Merge remote-tracking branch 'origin/main' into remote_db 2025-08-05 14:41:02 +05:30
Manav Rathi
97d66a3afa [rust] Make CI fail on warnings
https://doc.rust-lang.org/stable/clippy/continuous_integration/github_actions.html
2025-08-05 14:39:01 +05:30
Neeraj Gupta
e5cb3e7005 Hide uploaded local files from homescreen 2025-08-05 14:31:38 +05:30
laurenspriem
e8f7f9ad62 Grid of three 2025-08-05 13:31:33 +05:30
Neeraj Gupta
adc1939638 Use existing method 2025-08-05 13:15:12 +05:30
Neeraj Gupta
2cc1c36b7b Flatten all remote asset fields 2025-08-05 13:12:34 +05:30
laurenspriem
a3330705b3 Fix deprecated method 2025-08-05 12:05:00 +05:30
laurenspriem
d8b40c1a55 Exact search off by default 2025-08-05 11:59:22 +05:30
laurenspriem
b5113dd420 Add option for exact search of similar files 2025-08-05 11:52:03 +05:30
Neeraj
d7fdca78f7 Update pubspec.yaml 2025-08-05 10:20:49 +05:30
Neeraj Gupta
b99450615e Remove unused field 2025-08-05 09:35:02 +05:30
ashilkn
63f24966ce Incrase cacheExtent of gallery 2025-08-05 06:53:54 +05:30
laurenspriem
a41b7f5535 null check error 2025-08-04 14:24:36 +05:30
laurenspriem
8304bca71c empty list error 2025-08-04 14:19:04 +05:30
Crowdin Bot
fa230333a4 New Crowdin translations by GitHub Action 2025-08-04 01:06:03 +00:00
laurenspriem
6dfcc58144 Add exact search to vectorDB 2025-08-01 16:55:02 +02:00
laurenspriem
9528b4ce8d Fix showing the same file twice 2025-08-01 16:21:43 +02:00
laurenspriem
73928092c4 Sort distance descending 2025-08-01 13:03:13 +02:00
laurenspriem
79d3c7f9a2 Merge conflict left 2025-08-01 12:40:15 +02:00
laurenspriem
108d9f84fc Merge branch 'main' into smart_dedupe 2025-08-01 12:39:54 +02:00
laurenspriem
0854fc3493 Merge branch 'main' into memories_misc_improv 2025-08-01 12:01:30 +02:00
ashilkn
1c14896fd6 bump up build number 2025-07-31 22:36:49 +05:30
laurenspriem
86967175f7 Better values 2025-07-31 16:58:26 +02:00
laurenspriem
a6b29525d2 Better frequency for people type 2025-07-31 16:51:49 +02:00
laurenspriem
d6c3cf3b8f Better frequency for people memories 2025-07-31 15:40:04 +02:00
Neeraj Gupta
5de1f0c93b Switch to remoteDB 2025-07-31 16:24:23 +05:30
Neeraj Gupta
ee902a5ccb ML typecast fixes 2025-07-31 15:39:53 +05:30
Neeraj Gupta
9e56afaa73 Fixed query 2025-07-31 15:35:48 +05:30
Neeraj Gupta
77f8c3f712 Fix: Specify type 2025-07-31 15:04:43 +05:30
Neeraj Gupta
f7a0a414db Fix: Use new db to get fileKey 2025-07-31 15:02:25 +05:30
Neeraj Gupta
bd49b8464b Minor db query fix 2025-07-31 14:20:55 +05:30
Neeraj Gupta
0cbfa319ba Use remote db for dedupe 2025-07-31 14:15:25 +05:30
Neeraj Gupta
95e05f167c Merge remote-tracking branch 'origin/main' into remote_db 2025-07-31 12:07:04 +05:30
laurenspriem
ec502f3f4e Copy 2025-07-31 08:27:11 +02:00
Neeraj Gupta
84ef4c2d0b Clean up 2025-07-31 11:22:24 +05:30
Neeraj Gupta
53c14dff01 Refactor 2025-07-31 10:34:42 +05:30
Neeraj Gupta
02ef29fd8f Consolidate shared assets deletion logic 2025-07-31 10:29:00 +05:30
laurenspriem
a7a23e9e97 UI improvements 2025-07-30 16:05:27 +02:00
laurenspriem
492b959204 Lower default 2025-07-30 15:47:32 +02:00
Neeraj Gupta
1848f1a94b Use remoteDB 2025-07-29 15:14:36 +05:30
Neeraj Gupta
276c38236f Use new db to identify backed up files 2025-07-29 14:53:26 +05:30
laurenspriem
dde67479be Logging 2025-07-28 16:59:09 +02:00
laurenspriem
a6c163a705 Exclude videos from similar dedupe 2025-07-28 16:39:05 +02:00
laurenspriem
159dd57f0c Fix migration issue 2025-07-28 14:43:48 +02:00
laurenspriem
0cff1642c5 Similar files page mvp 2025-07-28 14:21:38 +02:00
Neeraj Gupta
5e3e3b4427 Clean up 2025-07-28 16:53:57 +05:30
Neeraj Gupta
b8dab3ea1c Use new db for archive file count 2025-07-28 14:57:36 +05:30
Neeraj Gupta
2dc32f5339 Strip out exif from metadata 2025-07-28 14:54:40 +05:30
Neeraj Gupta
9fd6bc4974 Fix query 2025-07-28 14:54:24 +05:30
laurenspriem
ee55002bf1 Similar files change 2025-07-28 11:05:31 +02:00
Neeraj Gupta
3740e9e29d Gracefully handle partial cleanup 2025-07-28 14:33:34 +05:30
laurenspriem
05b4350496 Similar images service mvp 2025-07-28 10:41:36 +02:00
Neeraj Gupta
118dde38a2 Refactor 2025-07-28 11:48:01 +05:30
Neeraj Gupta
cd15fe86c6 Fix delete 2025-07-28 11:47:55 +05:30
laurenspriem
b68150a007 Bulk search first API 2025-07-27 17:38:15 +02:00
Neeraj Gupta
693a40cc24 Refactor save asset for edits 2025-07-26 12:17:53 +05:30
Neeraj Gupta
2cfa8497da Merge remote-tracking branch 'origin/main' into remote_db 2025-07-26 11:53:48 +05:30
Neeraj Gupta
3f6b9d7ae6 Refactor 2025-07-26 11:13:54 +05:30
Neeraj Gupta
e71b6dbb63 Remove unused method 2025-07-26 11:04:49 +05:30
laurenspriem
f47cff472a pragma entry point fo rother isolates 2025-07-24 17:20:27 +02:00
laurenspriem
8cc6bd6621 Fix potential isolate issue 2025-07-24 16:28:41 +02:00
laurenspriem
ba76c85824 Faster migration 2025-07-24 13:44:59 +02:00
laurenspriem
5b291de28f Don't migrate or call VectorDB automatically 2025-07-24 13:19:53 +02:00
Neeraj Gupta
44722c40c2 Merge branch 'main' into remote_db 2025-07-24 16:22:57 +05:30
laurenspriem
5e84774737 Dependencies after merging main 2025-07-24 12:21:32 +02:00
laurenspriem
773419b25f Merge branch 'main' into smart_dedupe 2025-07-24 12:12:05 +02:00
laurenspriem
09668c2f67 Don't use vectorDB for magic search 2025-07-24 11:58:10 +02:00
laurenspriem
072e5b492b Dependencies for 3.27 2025-07-24 11:22:22 +02:00
laurenspriem
1d19d69db9 Resolve warnings 2025-07-24 10:51:45 +02:00
laurenspriem
a88b43dd11 Debug line 2025-07-24 10:49:13 +02:00
laurenspriem
a694bf9b6c flutter downgrade dependencies 2025-07-24 09:02:05 +02:00
laurenspriem
bfcfa691a2 upgrade frb and run frb gen command 2025-07-23 17:55:07 +02:00
laurenspriem
2703c6a33a Bump to be up to date with internal branch 2025-07-23 17:39:19 +02:00
laurenspriem
3ad94f362a Resolve merge conflicts 2025-07-23 17:06:54 +02:00
laurenspriem
8508ca74f2 Merge branch 'main' into usearch_again 2025-07-23 15:05:06 +02:00
Prateek Sunal
78055a25d0 Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-07-23 14:40:14 +05:30
Prateek Sunal
b050f683c8 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-23 14:39:52 +05:30
Prateek Sunal
9141db8d47 Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-07-23 14:39:17 +05:30
Neeraj Gupta
bfd13b99d2 Fix compile error 2025-07-21 11:36:59 +05:30
Neeraj Gupta
e82d878fa8 Merge branch 'main' into remote_db 2025-07-21 10:46:57 +05:30
Prateek Sunal
4ff77067dc chore: update flutter version for auth build 2025-07-21 00:36:21 +05:30
Prateek Sunal
437b3d028a chore: update locks 2025-07-21 00:34:27 +05:30
Prateek Sunal
8afc4bb0cb fix: switch to old version lock 2025-07-21 00:23:24 +05:30
Prateek Sunal
ecd3ce850f chore: update lock file 2025-07-21 00:04:34 +05:30
Prateek Sunal
bc61727e8b Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-07-21 00:04:06 +05:30
Prateek Sunal
32f987e551 chore: downgrade to 3.29.3 2025-07-21 00:03:27 +05:30
Prateek Sunal
3596d0e42d fix: downgrade flutter upgrade to 3.29.3 2025-07-21 00:02:34 +05:30
Neeraj Gupta
0587813c70 Rename 2025-07-14 14:43:08 +05:30
Prateek Sunal
99d84a1154 fix: remove log level 2025-07-14 14:43:00 +05:30
Neeraj Gupta
b7712a7c51 Clean up 2025-07-14 14:42:16 +05:30
Prateek Sunal
126a96326f fix: don't use computer for ffmpeg isolate 2025-07-14 11:59:55 +05:30
Neeraj Gupta
213f3cd122 Clean up 2025-07-14 11:44:13 +05:30
Prateek Sunal
b7ead2004a fix: do isolate things without combine package 2025-07-14 11:39:25 +05:30
Neeraj Gupta
d103274da5 Add file matching logic before upload 2025-07-14 11:04:44 +05:30
Neeraj Gupta
28b244ebc5 Use fk to keep updated mapping info 2025-07-14 09:53:59 +05:30
Prateek Sunal
87fad99863 Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-14 09:00:19 +05:30
Prateek Sunal
9f727bb95d feat: upgrade auth to flutter 3.32 2025-07-11 20:28:43 +05:30
Neeraj Gupta
7d24dea7bc Merge branch 'main' into remote_db 2025-07-11 16:56:34 +05:30
Prateek Sunal
bd42a4d1f6 Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-07-11 16:10:32 +05:30
Prateek Sunal
22e0cd2168 chore: update locks 2025-07-11 16:09:53 +05:30
Prateek Sunal
0662baac73 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-11 16:09:12 +05:30
Prateek Sunal
ef3c561cf1 fix: no log output 2025-07-11 15:27:28 +05:30
Prateek Sunal
6f07399b5a Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-11 12:31:11 +05:30
Prateek Sunal
8524742c92 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-11 12:30:56 +05:30
Neeraj Gupta
4a358a7793 Refactor 2025-07-11 11:09:00 +05:30
Neeraj Gupta
699249cd26 Upload [1/x] 2025-07-11 10:15:35 +05:30
Prateek Sunal
9125090a3d fix: bg changes 2025-07-10 19:04:32 +05:30
Prateek Sunal
4a552fbcb4 Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-10 18:53:46 +05:30
Prateek Sunal
85ef085084 chore: lint fix 2025-07-10 18:53:23 +05:30
Prateek Sunal
f1d128f6b0 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-10 18:53:07 +05:30
Prateek Sunal
c925ed2117 fix: issues 2025-07-10 18:52:46 +05:30
Prateek Sunal
142a5f9661 fix: issue 2025-07-10 18:52:36 +05:30
Neeraj Gupta
7125ac7419 Simplify 2025-07-10 10:34:50 +05:30
Neeraj Gupta
de67b6e9fc Rename column and minor fixes 2025-07-09 15:20:49 +05:30
Neeraj Gupta
39868de5d9 Update schema for shared assets 2025-07-09 14:22:33 +05:30
Neeraj Gupta
751550d469 Refactor 2025-07-09 12:01:46 +05:30
Neeraj Gupta
6f0034dd9d Merge remote-tracking branch 'origin/main' into remote_db 2025-07-09 10:07:55 +05:30
Neeraj Gupta
7bd6180ebf Reflect backup status for device folder 2025-07-09 10:06:25 +05:30
Neeraj Gupta
5a3ae5f97c Log stack trace 2025-07-09 10:05:45 +05:30
Neeraj Gupta
e447058573 Simplify 2025-07-09 09:08:21 +05:30
Prateek Sunal
ae0c83b1aa Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-07-08 18:47:50 +05:30
Prateek Sunal
8f1ee2ef15 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-08 18:47:35 +05:30
Prateek Sunal
f1d978fbf7 fix: use combine for method channel communication 2025-07-08 18:46:51 +05:30
Neeraj Gupta
8a7e8b8237 Fix queue clean up on backup folder update 2025-07-08 17:57:38 +05:30
Neeraj Gupta
ed7b1be591 Re-organize 2025-07-08 15:08:56 +05:30
Neeraj Gupta
9a5ef8b634 Clean up 2025-07-08 11:29:37 +05:30
Neeraj Gupta
c2668387b5 Refactor to use new upload media and metadata 2025-07-08 11:01:37 +05:30
Neeraj Gupta
d265cf62c7 Separate model to get upload media 2025-07-08 09:18:57 +05:30
Prateek Sunal
4604280ef8 fix: move ffmpeg and ffprobe to isolate 2025-07-07 18:41:03 +05:30
Neeraj Gupta
a67c3b0624 Clean up fields 2025-07-07 16:57:06 +05:30
Neeraj Gupta
306c78fbb0 Refactor 2025-07-07 16:09:40 +05:30
Neeraj Gupta
e4f9dd6b33 Simplify new files notification + avoid redundant compute 2025-07-07 15:57:47 +05:30
Neeraj Gupta
5fec59f0fe Clean up 2025-07-07 15:20:32 +05:30
Neeraj Gupta
53050ca25e Map remote files to local during diff sync 2025-07-07 14:31:37 +05:30
Prateek Sunal
18ab4060b2 Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-07 13:17:08 +05:30
Prateek Sunal
9a4d465672 chore: update runner scheme 2025-07-07 13:16:49 +05:30
Prateek Sunal
7ea9483cca fix: dependency 2025-07-07 13:10:59 +05:30
Prateek Sunal
d9add4f827 chore: update locks 2025-07-07 11:56:43 +05:30
Prateek Sunal
3c19c00a70 Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-07 11:52:46 +05:30
Prateek Sunal
12c19d1ed1 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-07 11:52:24 +05:30
Prateek Sunal
c757b837f1 fix: update flutter version in all sources 2025-07-07 11:44:42 +05:30
Prateek Sunal
a9f1c0dbd4 fix: fetch the ffmpeg source at first 2025-07-07 11:42:35 +05:30
Prateek Sunal
896d77a83e fix: upgrade plugins 2025-07-07 11:28:56 +05:30
Neeraj Gupta
926aa42168 Merge branch 'main' into remote_db 2025-07-07 09:52:59 +05:30
Prateek Sunal
b1210e1d15 Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-04 16:55:15 +05:30
Prateek Sunal
127df30242 fix: readd workmanager 2025-07-04 16:55:04 +05:30
Neeraj Gupta
f4f8141b99 Move mobile -> mobile/apps/photos 2025-07-04 16:52:07 +05:30
Prateek Sunal
c0c17af51a Merge remote-tracking branch 'origin/flutter-upgrade' into isolated-ffmpeg 2025-07-04 16:48:16 +05:30
Prateek Sunal
d92ec2276e chore: update lock files 2025-07-04 16:44:43 +05:30
Prateek Sunal
1f99727ab9 fix: update git ignore 2025-07-04 16:43:52 +05:30
Prateek Sunal
85784920a9 fix: remove unwanted files 2025-07-04 16:41:12 +05:30
Prateek Sunal
d7b3af063b Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-07-04 16:38:37 +05:30
Neeraj Gupta
3d044dd3d4 Refactor metadata computation 2025-07-04 14:06:11 +05:30
Neeraj Gupta
8699ad2f01 New upload media data model 2025-07-04 11:52:27 +05:30
Neeraj Gupta
01aad531f1 Generated changes 2025-07-04 10:05:42 +05:30
Neeraj Gupta
6340d9f646 Simplify 2025-07-04 09:37:17 +05:30
Neeraj Gupta
0f944b1796 Simplify 2025-07-04 09:33:02 +05:30
Neeraj Gupta
1d8533168f Mark fields non-nullable 2025-07-03 17:32:58 +05:30
Neeraj Gupta
2fca1ba534 Add location in shared assets 2025-07-03 16:29:38 +05:30
Neeraj Gupta
2d386c769b Simplify 2025-07-03 11:41:14 +05:30
Neeraj Gupta
1b41d81839 Refactor 2025-07-02 20:08:49 +05:30
Neeraj Gupta
487156c7df Use computer for parsing XMP 2025-07-02 19:32:19 +05:30
Neeraj Gupta
35c54111e7 Remove unused import 2025-07-02 17:24:55 +05:30
Neeraj Gupta
d71340fbdd Refactor 2025-07-02 17:19:35 +05:30
Neeraj Gupta
f32ea85ee2 Refactor 2025-07-02 16:37:06 +05:30
Neeraj Gupta
6397ab888a Merge branch 'main' into remote_db 2025-07-02 14:48:53 +05:30
Neeraj Gupta
5a73043b63 Measure time 2025-07-02 14:13:39 +05:30
Neeraj Gupta
f258c40e98 Measure time 2025-07-02 14:13:20 +05:30
Neeraj Gupta
36b6476049 Use remote DB 2025-07-02 11:32:47 +05:30
Neeraj Gupta
c4c5ea150f Merge branch 'main' into remote_db 2025-07-02 09:30:08 +05:30
Neeraj Gupta
1956b3788b Rename 2025-07-01 15:52:11 +05:30
Neeraj Gupta
72cbddff6d Use upload queue for pending uploads 2025-07-01 15:42:48 +05:30
Neeraj Gupta
17670d5538 Use asset queue db for queueing pending upload 2025-07-01 15:25:52 +05:30
Neeraj Gupta
8cfd80663e Merge branch 'main' into remote_db 2025-07-01 14:55:11 +05:30
Neeraj Gupta
f285e2d706 Use lAsset for video type 2025-06-30 17:49:15 +05:30
Neeraj Gupta
f60e074dd5 Use tag instead of generatedID 2025-06-30 17:00:45 +05:30
Neeraj Gupta
140eae6859 Use tag instead of genID 2025-06-30 16:52:23 +05:30
Neeraj Gupta
23ee022472 Refactor 2025-06-30 16:46:08 +05:30
Neeraj Gupta
b1cf3f9fb0 Refactor live photo 2025-06-30 15:50:46 +05:30
Neeraj Gupta
dbbb80a817 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-30 14:35:46 +05:30
Neeraj Gupta
91a10634cc Remove redundant import 2025-06-30 13:01:53 +05:30
Neeraj Gupta
0a2c230254 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-30 12:24:18 +05:30
Neeraj Gupta
6745b110df Refactor shared assets 2025-06-30 12:23:01 +05:30
Neeraj Gupta
7061161181 Rename 2025-06-30 11:54:41 +05:30
Neeraj Gupta
f0026f0a81 Refactor 2025-06-30 11:52:36 +05:30
Neeraj Gupta
acec985bcb Add shared asset service 2025-06-30 11:31:42 +05:30
Neeraj Gupta
c8103a9e06 Refactor 2025-06-28 13:54:16 +05:30
Neeraj Gupta
02f64ad45f Refactor 2025-06-27 15:32:19 +05:30
Neeraj Gupta
d0931d1d0e Refactor 2025-06-27 15:17:08 +05:30
Neeraj Gupta
5c78de5355 Refactor 2025-06-27 14:08:47 +05:30
Neeraj Gupta
1aa9f61419 Rename 2025-06-27 12:49:00 +05:30
Neeraj Gupta
0f2b51d1a5 Remove redundant method 2025-06-27 12:46:29 +05:30
Neeraj Gupta
9fef560d15 Refactor 2025-06-27 12:02:01 +05:30
Neeraj Gupta
09c7bfd717 refactor 2025-06-26 14:44:44 +05:30
Neeraj Gupta
2ff059a701 Remove unused file 2025-06-26 14:25:05 +05:30
Neeraj Gupta
70b043d34a Migrate restore to new store 2025-06-26 14:19:15 +05:30
Neeraj Gupta
15a00379b5 Use remoteDB for linking 2025-06-26 10:01:25 +05:30
Neeraj Gupta
7246ade2ae Rename 2025-06-26 09:50:42 +05:30
Neeraj Gupta
7cad0a83d2 Clean up 2025-06-26 00:04:00 +05:30
Neeraj Gupta
e6703aef65 Simplify 2025-06-25 23:38:03 +05:30
Neeraj Gupta
662dfad7ca Remove unused method 2025-06-25 23:20:18 +05:30
Neeraj Gupta
466ab30f8b Improve handling of empty collection for cover 2025-06-25 22:55:04 +05:30
Neeraj Gupta
12c1845a5f Clean up 2025-06-25 22:43:44 +05:30
Neeraj Gupta
2d0202df36 Refactor magic metadata 2025-06-25 22:24:17 +05:30
Neeraj Gupta
2ec4f5a7e5 Use rAsset for metadata 2025-06-25 21:55:14 +05:30
Neeraj Gupta
6723bed1b0 Refactor filemagic service to use rAsset 2025-06-25 17:22:09 +05:30
Neeraj Gupta
84e8ce519e Fix error parsing for internal dialog 2025-06-25 16:43:05 +05:30
Neeraj Gupta
1b50528181 Remove unused filed 2025-06-25 14:58:23 +05:30
Neeraj Gupta
08dff77ad4 Refactor 2025-06-25 14:58:11 +05:30
Neeraj Gupta
713abce89a Refactor: get size from remoteAsset 2025-06-25 13:34:17 +05:30
Neeraj Gupta
da15593a47 Remove unused method 2025-06-25 12:44:40 +05:30
Neeraj Gupta
fc31cc61d1 Avoid redundant async 2025-06-25 12:44:34 +05:30
Neeraj Gupta
9c6259b713 Use remote db for favroite cache 2025-06-25 12:29:50 +05:30
Neeraj Gupta
ed603232a5 Merge branch 'main' into remote_db 2025-06-25 12:29:27 +05:30
Neeraj Gupta
ccd89d3451 Remove unused method 2025-06-25 11:28:28 +05:30
Neeraj Gupta
647b2ef4a7 Cache remoteAssets entry 2025-06-25 11:07:50 +05:30
Neeraj Gupta
f54c79462e Clear remote db on logout 2025-06-25 11:06:10 +05:30
Neeraj Gupta
eb81d96ddf Fix incorrect request key 2025-06-25 11:05:44 +05:30
Neeraj Gupta
57363a24ef Fix minor bugs 2025-06-25 09:23:34 +05:30
Neeraj Gupta
9431995e8c Clean up 2025-06-24 14:35:06 +05:30
Neeraj Gupta
64b86376f6 Cleanup 2025-06-24 13:31:58 +05:30
Neeraj Gupta
a825367c49 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-24 12:42:22 +05:30
Neeraj Gupta
1ffbb27ac5 Fix schema 2025-06-24 12:42:07 +05:30
Neeraj Gupta
d4add9f7ef Fix 2025-06-24 12:41:54 +05:30
Neeraj Gupta
541494613f Use CF for file key derivation 2025-06-24 12:19:55 +05:30
Neeraj Gupta
2b3427e40b Track shared assets separately 2025-06-24 11:55:28 +05:30
Neeraj Gupta
a57c9e881d Use remote db 2025-06-24 09:49:51 +05:30
Neeraj Gupta
d15f1e15ce Use remote db for file copy 2025-06-23 16:30:26 +05:30
Neeraj Gupta
0411f8ad40 Clean up 2025-06-23 15:04:42 +05:30
Neeraj Gupta
2981816c90 Use remotedb for trash 2025-06-23 14:54:48 +05:30
Neeraj Gupta
a6de98ef68 Add trash time 2025-06-23 14:35:13 +05:30
Neeraj Gupta
18156ce8bc Add trash group type 2025-06-23 14:24:56 +05:30
Neeraj Gupta
458c1cf86d Remove log 2025-06-21 11:28:05 +05:30
Neeraj Gupta
90c0874608 Merge branch 'main' into remote_db 2025-06-21 10:13:22 +05:30
Neeraj Gupta
928ffba4d7 rename 2025-06-21 09:14:01 +05:30
Neeraj Gupta
0701212540 Clean up 2025-06-21 08:46:49 +05:30
Neeraj Gupta
347bf4d2e0 Move 2025-06-21 07:57:41 +05:30
Neeraj Gupta
2729edfded rename 2025-06-21 07:57:26 +05:30
Neeraj Gupta
4e8d2c5cea Use local or remote id for selection 2025-06-21 07:56:55 +05:30
Neeraj Gupta
84e9336672 Use new abstraction to fetch public files 2025-06-20 14:22:02 +05:30
Neeraj Gupta
cecdea3f93 Rename 2025-06-20 13:21:14 +05:30
Neeraj Gupta
37674deba0 Implement move 2025-06-20 13:02:42 +05:30
Neeraj Gupta
733be57df8 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-19 22:49:29 +05:30
Neeraj Gupta
74df52baf1 rename 2025-06-19 16:28:35 +05:30
Neeraj Gupta
b817c4475e Refactor 2025-06-19 16:09:22 +05:30
Neeraj Gupta
f95dac31d2 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-19 11:44:20 +05:30
Prateek Sunal
baa3d49d4b fix: add desugaring for flutter_local_notifications to work 2025-06-18 16:00:27 +05:30
Prateek Sunal
d2c2062256 fix: upgeade gradle 2025-06-18 16:00:13 +05:30
Prateek Sunal
c646909765 fix: don't pin collection and path 2025-06-18 14:00:31 +05:30
Neeraj Gupta
151289b24a Use remoteDB during add to collection 2025-06-17 17:24:16 +05:30
Neeraj Gupta
5dac9d4dd6 Rename 2025-06-17 16:44:13 +05:30
Neeraj Gupta
43b9dbdc54 Refactor 2025-06-17 16:14:56 +05:30
Neeraj Gupta
9d3caaa5d5 Use remoteDB to get files within duration 2025-06-17 15:45:13 +05:30
Prateek Sunal
8b4f03b256 fix: temp commit, to revert 2025-06-17 14:44:25 +05:30
Prateek Sunal
976bd0134c fix: log string 2025-06-17 14:44:16 +05:30
Neeraj Gupta
7eda2ed24e remove unused import 2025-06-17 14:24:23 +05:30
Neeraj Gupta
30df5271b4 Fix query 2025-06-17 14:24:12 +05:30
Neeraj Gupta
4b1f7612a3 Rename 2025-06-17 14:15:40 +05:30
Neeraj Gupta
bf6521e8d5 Use new remoteDB 2025-06-17 14:00:50 +05:30
Neeraj Gupta
4bac1bcb1d Merge remote-tracking branch 'origin/main' into remote_db 2025-06-17 13:34:12 +05:30
Neeraj Gupta
b123635584 Merge remote-tracking branch 'origin/main' into remote_db 2025-06-17 12:33:29 +05:30
Prateek Sunal
8a785aac8f Merge branch 'flutter-upgrade' into isolated-ffmpeg 2025-06-16 17:21:17 +05:30
Prateek Sunal
452812af11 chore(ios): update lock files 2025-06-16 17:18:49 +05:30
Prateek Sunal
44fb8fec1a Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-06-16 17:17:55 +05:30
Prateek Sunal
1d8fc7aba8 fix: revert back to old l10n 2025-06-16 17:08:51 +05:30
Prateek Sunal
654db76175 fix: format files 2025-06-16 17:06:50 +05:30
Prateek Sunal
364170f38d fix: DialogTheme 2025-06-16 17:04:10 +05:30
Prateek Sunal
0cd7c92672 fix: add intl based locals as well 2025-06-16 17:04:02 +05:30
Prateek Sunal
962aaa1b7a Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-06-16 14:54:37 +05:30
Prateek Sunal
6ec0c550a3 chore: lock deps 2025-06-16 14:53:25 +05:30
Prateek Sunal
b67fcdb9ed fix: map and image editor related issues 2025-06-16 14:46:51 +05:30
Neeraj Gupta
d815143bb4 Rewrite upload queue logic 1/x 2025-06-16 14:02:12 +05:30
Prateek Sunal
2f4c3c7777 feat: upgrade deps (incomplete) 2025-06-16 12:58:13 +05:30
Prateek Sunal
cb84164466 Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-06-12 18:44:10 +05:30
Prateek Sunal
7b6aed426d Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-06-12 16:55:23 +05:30
Neeraj Gupta
ff6228497f Add tables to support shared media & upload tracking 2025-06-11 17:02:03 +05:30
Neeraj Gupta
7469578e77 Merge branch 'main' into remote_db 2025-06-11 12:38:31 +05:30
Neeraj Gupta
76afef6149 Support for persiting path backup config 2025-06-10 15:58:18 +05:30
Neeraj Gupta
2b3178495a Fix build 2025-06-09 21:54:46 +05:30
anandbaburajan
1752192688 [email]: different ott templates for with and without verify btn 2025-06-09 19:21:49 +05:30
Neeraj Gupta
d6f3ff8db3 Merge branch 'main' into remote_db 2025-06-09 13:15:33 +05:30
laurenspriem
eed12c2089 Merge branch 'internal-15_06_2025' into usearch_again 2025-06-09 12:34:55 +05:30
laurenspriem
889aed6024 Bump for internal release 2025-06-09 12:34:29 +05:30
laurenspriem
ac7840cbfd Merge branch 'internal-15_06_2025' into usearch_again 2025-06-09 12:33:03 +05:30
laurenspriem
1f1304ca5b Upgrade usearch to fix Armv8-R issues 2025-06-09 12:31:38 +05:30
Prateek Sunal
81c539979d Merge remote-tracking branch 'origin/main' into flutter-upgrade 2025-06-06 14:35:39 +05:30
Prateek Sunal
3cffd969b4 feat: bump flutter to 3.29 2025-06-06 14:35:30 +05:30
Neeraj Gupta
94098d8a07 Bump version 2025-06-06 12:35:30 +05:30
Neeraj Gupta
4b9c5fcb73 Merge branch 'internal-15_06_2025' of https://github.com/ente-io/auth into internal-15_06_2025 2025-06-06 12:33:48 +05:30
Neeraj Gupta
6ed16e5e02 Merge branch 'main' into internal-15_06_2025 2025-06-06 12:33:21 +05:30
laurenspriem
82a8e504af Merge branch 'internal-15_06_2025' into usearch_again 2025-06-04 22:14:26 +05:30
ashilkn
cc1660d9af bump up build number" 2025-06-04 18:24:59 +05:30
ashilkn
52b6fc108b Merge branch 'memory_improvement' into internal-15_06_2025 2025-06-04 18:19:37 +05:30
Neeraj Gupta
7b0ef2b0c0 Add table to store path backup config 2025-06-03 15:52:36 +05:30
Neeraj Gupta
35f95010ea Merge branch 'main' into remote_db 2025-06-03 12:46:53 +05:30
Neeraj Gupta
8b3b20aa93 Remove unsued type 2025-06-02 18:38:45 +05:30
Neeraj Gupta
408b0bfe2d Merge branch 'internal-15_06_2025' of https://github.com/ente-io/auth into internal-15_06_2025 2025-06-02 17:55:33 +05:30
Neeraj Gupta
655be76428 Bump version 2025-06-02 17:55:06 +05:30
Neeraj Gupta
9fedf8d6b7 Merge branch 'main' into internal-15_06_2025 2025-06-02 17:54:47 +05:30
ashilkn
7c4e775872 Bump build number 2025-06-02 14:56:04 +05:30
Neeraj Gupta
ecfa640c28 Bump version 2025-05-30 15:44:46 +05:30
Neeraj Gupta
1997eb20f3 Merge branch 'main' into internal-15_06_2025 2025-05-30 15:44:30 +05:30
Neeraj Gupta
233f0ec1e1 Fix shared collections decryption 2025-05-28 16:36:46 +05:30
Neeraj Gupta
64820ff5fa Merge branch 'main' into remote_db 2025-05-28 16:36:30 +05:30
laurenspriem
726425bbb6 Put vector db behind feature flag internal 2025-05-27 14:07:34 +05:30
Neeraj Gupta
86ffd4e1e6 Merge branch 'main' into remote_db 2025-05-26 16:27:39 +05:30
laurenspriem
c068f26604 Aggressive logging of vectorDB migration 2025-05-22 11:32:36 +05:30
laurenspriem
e60c2b1192 GC hints 2025-05-22 11:19:19 +05:30
laurenspriem
beb049f817 Reduce batch size in migration 2025-05-22 10:38:43 +05:30
Neeraj Gupta
436a02d352 Merge branch 'main' into remote_db 2025-05-19 15:34:32 +05:30
laurenspriem
7021c9fe02 Bump for internal release 2025-05-12 17:05:31 +05:30
laurenspriem
c2d5dece9e Merge branch 'main' into usearch_again 2025-05-12 17:04:42 +05:30
laurenspriem
b76d41b84d Specify rust version in readme 2025-05-12 15:48:27 +05:30
laurenspriem
3b9c76649d Update readme to include rust 2025-05-12 15:12:31 +05:30
laurenspriem
62ed8b6975 Log vector db stats when opening connection 2025-05-12 14:46:55 +05:30
laurenspriem
2422dba4d4 vector db more stats logging 2025-05-12 14:23:16 +05:30
laurenspriem
eb1916e3a3 integrate vector db in magic search 2025-05-12 11:39:02 +05:30
laurenspriem
df0d9137a6 Integration clip embeddings in vector db 2025-05-11 13:09:56 +05:30
laurenspriem
fc36b87965 Clip migration method 2025-05-11 13:09:20 +05:30
laurenspriem
63d90ea275 Class for vector db stats 2025-05-09 16:36:39 +05:30
laurenspriem
bb7f8a5eef More testing 2025-05-09 15:59:46 +05:30
Neeraj Gupta
0f3b8bae48 Add models for upload mapping 2025-05-09 15:12:25 +05:30
laurenspriem
2f5a02ec43 delete table option 2025-05-09 12:57:44 +05:30
laurenspriem
d411d91966 vector db api ensure capacity safety 2025-05-09 12:56:59 +05:30
laurenspriem
54b712953a vector db api let clear include capacity reset 2025-05-09 10:49:03 +05:30
laurenspriem
27ad020adc Testing clip migration to vector DB 2025-05-08 17:40:01 +05:30
Neeraj Gupta
0f270a379f Rename 2025-05-08 16:57:10 +05:30
Neeraj Gupta
609f6b8e18 Merge branch 'main' into remote_db 2025-05-08 15:28:06 +05:30
laurenspriem
ce112bd4d7 Index stats method 2025-05-08 15:23:23 +05:30
laurenspriem
2ffb73d053 Consistent method parameters 2025-05-08 15:07:50 +05:30
laurenspriem
6478d438b5 vector db api ensure never duplicate keys 2025-05-08 14:30:51 +05:30
Neeraj Gupta
7896b397c2 Merge branch 'main' into remote_db 2025-05-08 13:08:08 +05:30
laurenspriem
d87069eb4c vectordb api add documentation 2025-05-08 12:31:09 +05:30
laurenspriem
5447350ab1 vector db api add check for key 2025-05-08 12:29:41 +05:30
laurenspriem
ea1a2960bf First implementation of clip vector db 2025-05-08 12:08:55 +05:30
laurenspriem
832f2c451e Add bulk get method to vector db api 2025-05-08 11:47:50 +05:30
laurenspriem
715c7c23a7 Add bulk remove embeddings api 2025-05-08 10:29:25 +05:30
laurenspriem
e9c2e40a43 Update to latest usearch 2025-05-07 13:25:40 +05:30
laurenspriem
603c275c09 Update basic usearch test 2025-05-07 12:01:45 +05:30
laurenspriem
7b9d6df2fd Fix ios build issue 2025-05-07 11:32:53 +05:30
laurenspriem
a4afecef3d Fix ios config 2025-05-07 10:50:39 +05:30
laurenspriem
4d9bfb89ae macos config 2025-05-07 10:36:17 +05:30
laurenspriem
f2a74bd35e Merge branch 'main' into usearch_again 2025-05-06 15:34:59 +05:30
Neeraj Gupta
097078bd24 Switch to remoteDB 2025-05-02 16:34:11 +05:30
Neeraj Gupta
e43e3c4230 Switch to remoteDB 2025-05-02 16:26:18 +05:30
Neeraj Gupta
439f1ff0fb keep reference to collectionFileEntry 2025-05-02 16:09:44 +05:30
Neeraj Gupta
e5d78cfd99 Remove unused method 2025-05-02 16:09:26 +05:30
Neeraj Gupta
bd76e66abf perf refactor 2025-05-02 15:41:58 +05:30
Neeraj Gupta
9e6d7908a9 Refactor 2025-05-02 15:14:58 +05:30
Neeraj Gupta
281735e172 Show hidden files from latestDB 2025-05-02 12:28:18 +05:30
Neeraj Gupta
bc93aca110 Merge remote-tracking branch 'origin/main' into remote_db 2025-05-02 11:00:02 +05:30
Prateek Sunal
fbb15adf11 Merge remote-tracking branch 'origin/main' into isolated-ffmpeg 2025-05-02 10:56:28 +05:30
Neeraj Gupta
df6e409ca1 Remove debugCaption 2025-04-30 15:52:35 +05:30
Neeraj Gupta
7489821434 Refactor 2025-04-30 15:50:31 +05:30
Neeraj Gupta
52e0f04ec2 Merge remote-tracking branch 'origin/main' into remote_db 2025-04-30 15:06:51 +05:30
Neeraj Gupta
ad88ce632c Remove unused method 2025-04-30 14:32:22 +05:30
Neeraj Gupta
26222ec836 Use remoteDB 2025-04-30 14:10:04 +05:30
Neeraj Gupta
beeaee4fd9 Switch to remote db 1/51 2025-04-30 13:18:17 +05:30
Neeraj Gupta
dc98c7bcf5 Remove unused method 2025-04-30 13:11:19 +05:30
Neeraj Gupta
82497563c2 Switch to remoteDB 2025-04-30 13:03:58 +05:30
Neeraj Gupta
4a9b4520d2 Rename 2025-04-30 12:25:52 +05:30
Neeraj Gupta
756c8e5b7d rename 2025-04-30 12:14:53 +05:30
Neeraj Gupta
dffb920cab Switch to remoteDB 2025-04-30 12:12:34 +05:30
Neeraj Gupta
fa7ddbba0c Merge branch 'main' into remote_db 2025-04-30 11:20:44 +05:30
Neeraj Gupta
13a068969c Catch uncaught exception to avoid splash screen issue 2025-04-30 11:10:18 +05:30
Neeraj Gupta
717e8c8b7e Disable iOS battery check in debugmode 2025-04-30 11:09:59 +05:30
Neeraj Gupta
015adb595c Support for DB filters on home screen 2025-04-30 10:37:53 +05:30
Neeraj Gupta
91635d2e7d Schema update 2025-04-30 10:32:10 +05:30
Neeraj Gupta
cd3499a004 Merge branch 'main' into remote_db 2025-04-30 09:27:09 +05:30
Prateek Sunal
3efd36ab7b fix: statitify things and log error 2025-04-29 00:55:40 +05:30
Prateek Sunal
11cb355e98 fix: remove init from main 2025-04-29 00:54:14 +05:30
Prateek Sunal
caadca9a48 fix: reencode audio as aac 2025-04-29 00:54:04 +05:30
Neeraj Gupta
92a964cda6 Remove unused method 2025-04-28 15:47:00 +05:30
Neeraj Gupta
a9ba615962 Switch to new remotedb 2025-04-28 15:36:43 +05:30
Neeraj Gupta
f2b0c11622 Merge remote-tracking branch 'origin/main' into remote_db 2025-04-28 13:55:46 +05:30
Neeraj Gupta
83b89b6bbf Merge branch 'main' into remote_db 2025-04-28 13:55:26 +05:30
Prateek Sunal
0a50e33023 Merge remote-tracking branch 'origin/main' into isolated-ffmpeg 2025-04-28 13:09:03 +05:30
Prateek Sunal
5eef2a5816 fix: update isolated function 2025-04-28 13:08:42 +05:30
Prateek Sunal
fe4bf5c217 Merge remote-tracking branch 'origin/main' into isolated-ffmpeg 2025-04-28 12:10:47 +05:30
Neeraj Gupta
ee0a858302 Merge branch 'main' into remote_db 2025-04-28 09:52:10 +05:30
Neeraj Gupta
b34c923a66 merge files for home screen 2025-04-25 13:04:30 +05:30
Neeraj Gupta
fd927d038b Fix minor bugs 2025-04-25 12:36:57 +05:30
Neeraj Gupta
64e9902f57 Model & schema for local mapping 2025-04-25 12:36:33 +05:30
Neeraj Gupta
c3af79d113 Merge branch 'main' into remote_db 2025-04-24 08:50:49 +05:30
Neeraj Gupta
d87e679650 use remoteDB for collection cover 2025-04-23 12:00:21 +05:30
Neeraj Gupta
7e2242dc69 Show collection files 2025-04-22 16:34:47 +05:30
Neeraj Gupta
9adc207b02 Gradually load on device files 2025-04-22 15:10:09 +05:30
Neeraj Gupta
36049f6633 Treat default 0.0,0.0 as missing location 2025-04-22 14:14:32 +05:30
Neeraj Gupta
9341bc95ee Clean up 2025-04-22 13:57:38 +05:30
Neeraj Gupta
252dca1a01 Clean up 2025-04-22 13:07:53 +05:30
Neeraj Gupta
70501054d2 use remoteDb 2025-04-22 12:50:14 +05:30
Neeraj Gupta
be012e0a28 use remoteDb 2025-04-22 12:18:13 +05:30
Neeraj Gupta
340a0c097f Remove unused method 2025-04-22 12:11:20 +05:30
Neeraj Gupta
7fc8649455 use remoteDb 2025-04-22 11:58:56 +05:30
Neeraj Gupta
c97a313edb use remoteDb 2025-04-22 11:52:34 +05:30
Neeraj Gupta
480fdc84dc Merge remote-tracking branch 'origin/main' into remote_db 2025-04-22 11:52:10 +05:30
Neeraj Gupta
c92ef45c9a Refactor 2025-04-21 16:31:39 +05:30
Neeraj Gupta
ca62012a6f Store local mapping & creation time for remote files 2025-04-21 15:04:42 +05:30
anandbaburajan
873ee3ac14 [email]: different views for mobile and desktop 2025-04-18 16:54:21 +05:30
Neeraj Gupta
151a0d13a4 Sync remote assets to local 2025-04-18 14:00:14 +05:30
Neeraj Gupta
747b1b84c6 Upsert instead of replace 2025-04-18 13:59:15 +05:30
anandbaburajan
cfce2d00f5 [email]: add one click verify button for verification email 2025-04-18 13:45:04 +05:30
Neeraj Gupta
e060fb9823 Disable metadata and ml indexing 2025-04-18 12:14:39 +05:30
Neeraj Gupta
cd377149bc Fix parsing 2025-04-18 11:48:23 +05:30
Neeraj Gupta
d9e22a489b Fix count query 2025-04-18 11:47:34 +05:30
Neeraj Gupta
524db74bf5 Read collection file count 2025-04-17 16:45:36 +05:30
Neeraj Gupta
e1222d51a9 Merge branch 'main' into remote_db 2025-04-17 16:17:36 +05:30
Neeraj Gupta
1c68f0bb60 Refactor 2025-04-17 15:30:40 +05:30
Neeraj Gupta
f6419caf5c Disable metadata scan on ios 2025-04-17 13:50:48 +05:30
Neeraj Gupta
441bcbd187 todo 2025-04-17 13:35:07 +05:30
Neeraj Gupta
4ad3927348 Add trigger to clean up stale collection entries 2025-04-17 13:34:51 +05:30
Neeraj Gupta
4ae15e5966 Remove unused import 2025-04-17 12:17:33 +05:30
Prateek Sunal
912fc72600 Add ffmpeg framework support and refactor video processing to isolated service 2025-04-17 03:39:59 +05:30
Neeraj Gupta
d67d1d3df8 Index local files 2025-04-16 15:57:08 +05:30
Neeraj Gupta
07e1d33ca8 Merge branch 'main' into remote_db 2025-04-16 10:45:51 +05:30
Neeraj Gupta
50e15fa56c offline indexing 1/x 2025-04-15 16:03:39 +05:30
Neeraj Gupta
3f262c5ba2 Add db for offline ml data 2025-04-15 15:40:27 +05:30
Neeraj Gupta
7f34870e3a Remove unused code 2025-04-15 15:39:56 +05:30
Neeraj Gupta
8ba5013926 Merge branch 'main' into remote_db 2025-04-15 11:12:12 +05:30
Neeraj Gupta
e9a24efecb Make ml related classes generic 2025-04-14 16:23:26 +05:30
Neeraj Gupta
eaf74e4059 Merge branch 'main' into remote_db 2025-04-14 10:44:22 +05:30
Neeraj Gupta
e9e1c3ca27 Add wrapper for local metadata 2025-04-12 12:51:45 +05:30
laurenspriem
8c65a21b86 don't generate for web 2025-04-10 13:03:52 +05:30
laurenspriem
a07e8477fb format 2025-04-09 15:34:06 +05:30
laurenspriem
8b489e9ced Give distances in bulk search 2025-04-09 15:31:03 +05:30
laurenspriem
77e2bb1d46 Stop our own vector comparisons in benchmark 2025-04-09 15:21:20 +05:30
laurenspriem
4ce24e080a logging of benchmarking 2025-04-09 14:22:39 +05:30
laurenspriem
4e5ca3dca6 Benchmark face embeddings 2025-04-09 13:43:39 +05:30
laurenspriem
2ed155ab47 ignore trailing commas in generated code 2025-04-09 13:14:26 +05:30
laurenspriem
65e71e3caf Reintroduce reset_index method 2025-04-09 10:49:50 +05:30
laurenspriem
ee5efbcfcc Don't consume index if not needed 2025-04-09 10:43:07 +05:30
laurenspriem
6cf4530f7d Remove reset index 2025-04-09 10:06:46 +05:30
laurenspriem
e6ee09ca30 Back to basic error handling 2025-04-08 17:03:41 +05:30
laurenspriem
6d2f53b86c Update usearch 2025-04-08 14:56:47 +05:30
laurenspriem
6500748c5a Make vector db stateful in rust 2025-04-08 14:48:30 +05:30
laurenspriem
120dbeb4fc Fix null pointer crash 2025-04-05 16:56:14 +05:30
laurenspriem
c42807487b Upgrade Android NDK to r28 latest stable 2025-04-05 16:11:03 +05:30
laurenspriem
e707e24da9 first integration of usearch 2025-04-05 16:10:39 +05:30
laurenspriem
af817ec439 Test rust 2025-04-04 11:49:54 +05:30
laurenspriem
ddb44d8fd7 Integrate flutter_rust_bridge 2025-03-31 15:56:03 +05:30
laurenspriem
778822b12d Upgrade sdk 2025-03-31 15:47:51 +05:30
laurenspriem
9599ec3236 dart format 2025-03-31 15:34:48 +05:30
Neeraj Gupta
eb34533aed Add enum for processing state 2025-03-29 13:42:57 +05:30
Neeraj Gupta
cd042e741e Merge branch 'main' into remote_db 2025-03-27 16:43:32 +05:30
Neeraj Gupta
6e944b0b55 Process latest assets first 2025-03-27 13:56:47 +05:30
Neeraj Gupta
18b6b499dd Store time in microseconds 2025-03-27 13:51:34 +05:30
Neeraj Gupta
9205ef8219 Fix: droid metadata parsing 2025-03-27 13:50:59 +05:30
Neeraj Gupta
1ecdbdb88e Fix: get device album assets in desc order 2025-03-27 13:42:18 +05:30
Neeraj Gupta
e2bb4d723e Perform local medatascan for droid 2025-03-27 10:46:33 +05:30
Neeraj Gupta
cfe32c47f0 Merge branch 'main' into remote_db 2025-03-27 06:34:35 +05:30
Neeraj Gupta
a7f6b6589d Service for parsing local metadata 2025-03-26 22:11:59 +05:30
Neeraj Gupta
715e305e09 Add local metadata models 2025-03-26 22:08:43 +05:30
Neeraj Gupta
f7330be52c Reduce queue size 2025-03-26 16:44:08 +05:30
Neeraj Gupta
4cce54a0c6 Use local files for search 2025-03-26 16:42:15 +05:30
Neeraj Gupta
1850e9a2a6 Refactor 2025-03-26 16:24:51 +05:30
Neeraj Gupta
21e2b589cc Minor refactor 2025-03-26 16:23:34 +05:30
Neeraj Gupta
b7f8deb452 Disable smart memories in debug mode 2025-03-26 16:22:59 +05:30
Neeraj Gupta
b6ffb3ca22 Simplify schema 2025-03-26 14:39:29 +05:30
Neeraj Gupta
9351a52800 Clean up imports 2025-03-26 12:46:03 +05:30
Neeraj Gupta
c7510024c0 Use db query to get files on on device albums 2025-03-26 12:43:53 +05:30
Neeraj Gupta
63d3b1c94b Show files within on device albums 2025-03-25 16:10:50 +05:30
Neeraj Gupta
cec27b40a4 Show local device albums 2025-03-25 15:41:16 +05:30
Neeraj Gupta
2f8d0d1957 Delete old local sync 2025-03-25 15:10:49 +05:30
Neeraj Gupta
7f0a36f110 Merge branch 'main' into remote_db 2025-03-25 14:29:12 +05:30
Neeraj Gupta
355367a601 Stop photoManager callback for old local sync 2025-03-25 13:19:09 +05:30
Neeraj Gupta
c66da422cd Update local asset cache 2025-03-25 12:31:15 +05:30
Neeraj Gupta
6f90fad4a2 Fix: Store localSync time in ms 2025-03-25 12:30:52 +05:30
Neeraj Gupta
bcd6f55376 Fix: Use parameterized query params 2025-03-25 12:27:26 +05:30
Neeraj Gupta
b2766a0d4f Use thumbnail widget in the backfolder screen 2025-03-25 11:38:35 +05:30
Neeraj Gupta
ec1b95b0cd Merge branch 'main' into remote_db 2025-03-25 11:35:03 +05:30
Neeraj Gupta
4369317a4d Use lock for full sync 2025-03-25 05:47:47 +05:30
Neeraj Gupta
b18298dc62 Merge remote-tracking branch 'origin/main' into remote_db 2025-03-25 05:43:36 +05:30
Neeraj Gupta
b3e467a1a4 Return early 2025-03-25 05:43:21 +05:30
Neeraj Gupta
f8cd3d9fb4 Add retry on task cancelation 2025-03-24 17:15:18 +05:30
Neeraj Gupta
6d4756ca4b Undo cancellation 2025-03-24 16:16:44 +05:30
Neeraj Gupta
676bbb4d88 Add thumb queue 2025-03-24 16:14:43 +05:30
Neeraj Gupta
da8edfd34e Use new cache for inMem thumbnails 2025-03-24 15:43:42 +05:30
Neeraj Gupta
bf453cfaac Fix selection 2025-03-24 15:10:22 +05:30
Neeraj Gupta
35f41f044e Load thumbnail from cache 2025-03-24 15:09:36 +05:30
Neeraj Gupta
acff269695 Add global cache for image thumbnail 2025-03-24 14:58:24 +05:30
Neeraj Gupta
2b4f96dbb7 Remove task queue from existing thumb fetch 2025-03-24 14:01:50 +05:30
Neeraj Gupta
d5796e2abb Use local thumb provider for thumbnails 2025-03-24 14:00:59 +05:30
Neeraj Gupta
afe9690891 Keep reference for assetEntity 2025-03-24 11:39:20 +05:30
Neeraj Gupta
fc619bbd03 Use task queue to throttle local thumbnail fetch 2025-03-22 21:53:31 +05:30
Neeraj Gupta
a198331ffd Skip reading on disk cache for local thumbnails 2025-03-22 16:26:35 +05:30
Neeraj Gupta
c58fe5358d Add task queue 2025-03-22 16:13:17 +05:30
Neeraj Gupta
defc5164b9 Merge remote-tracking branch 'origin/main' into remote_db 2025-03-22 15:17:42 +05:30
Neeraj Gupta
97d4fb0693 Generated changes 2025-03-22 15:17:30 +05:30
Neeraj Gupta
e708564cb9 Show local assets on home screen 2025-03-22 15:13:19 +05:30
Neeraj Gupta
92068e026b Fix mapping 2025-03-22 14:16:07 +05:30
Neeraj Gupta
8a079ab4f4 Disable existing local & remote sync 2025-03-22 13:27:44 +05:30
Neeraj Gupta
b41c57cb8d Speed up backup folder selection page 2025-03-22 13:26:20 +05:30
Neeraj Gupta
87167e49fc Remove deadlock 2025-03-21 16:59:20 +05:30
Neeraj Gupta
089d1dcd10 Copy ios proj from main 2025-03-21 14:26:03 +05:30
Neeraj Gupta
db02e66124 Merge branch 'main' into remote_db 2025-03-21 14:18:05 +05:30
Neeraj Gupta
964066bf31 Merge remote-tracking branch 'origin/main' into remote_db 2025-03-21 11:09:22 +05:30
Neeraj Gupta
643220e595 Merge branch 'main' into remote_db 2025-03-20 16:47:55 +05:30
Neeraj Gupta
e871498161 Disable remote sync 2025-03-20 15:06:06 +05:30
Neeraj Gupta
31a88b74df Merge branch 'main' into remote_db 2025-03-20 14:05:00 +05:30
Neeraj Gupta
1801258fea Show thumbnail on backup folder 2025-03-19 22:33:22 +05:30
Neeraj Gupta
27acc2125b Fix log 2025-03-19 21:45:48 +05:30
Neeraj Gupta
60b7a91756 Add support for caching local db 2025-03-19 21:45:31 +05:30
Neeraj Gupta
b38a01820d Avoid redundant db txn 2025-03-19 16:25:18 +05:30
Neeraj Gupta
347d5a7a72 Add local image provider for thumbnail 2025-03-19 16:03:47 +05:30
Neeraj Gupta
82979ac729 Fix bug in computing fullDiff 2025-03-19 14:09:22 +05:30
Neeraj Gupta
5768eeb1fe Use trigger instead of fk to avoid redundant deletion 2025-03-19 14:07:58 +05:30
Neeraj Gupta
7a9ff9877a Add new screen for backup 2025-03-19 14:00:51 +05:30
Neeraj Gupta
3565540a61 get assetPath from local 2025-03-19 11:34:41 +05:30
Neeraj Gupta
06d78e5d6a Merge remote-tracking branch 'origin/main' into remote_db 2025-03-19 10:29:54 +05:30
Neeraj Gupta
6c11b76c11 [mob] Refactor 2025-03-17 17:16:43 +05:30
Neeraj Gupta
749cfde7d8 [mob] Support for enabling foreign key 2025-03-17 16:28:49 +05:30
Neeraj Gupta
6bcaa8ae26 [mob] Refactor 2025-03-17 16:27:12 +05:30
Neeraj Gupta
99c6318b0e Merge branch 'db_refactor' into remote_db 2025-03-17 15:35:02 +05:30
Neeraj Gupta
abf789a4aa rename 2025-03-17 14:12:39 +05:30
Neeraj Gupta
f5d3712cbb [mob] Remove unused code + update debouncer 2025-03-17 13:58:01 +05:30
Neeraj Gupta
45dd540abc [mob] move 2025-03-17 13:40:29 +05:30
Neeraj Gupta
865a736bdd [mob] Switch to leading debouncer 2025-03-17 13:29:35 +05:30
Neeraj Gupta
75bd1bfef6 [mob] Avoid running two fullSync 2025-03-17 13:27:57 +05:30
Neeraj Gupta
4cf67fe171 [mob] Fix delete from local db 2025-03-17 12:32:11 +05:30
Neeraj Gupta
65895328dc [mob] Fix full diff computation 2025-03-17 11:46:03 +05:30
Neeraj Gupta
a1c20b9c8a Merge remote-tracking branch 'origin/main' into remote_db 2025-03-17 11:25:45 +05:30
Neeraj Gupta
de9def5370 [mob] Rename 2025-03-17 11:25:24 +05:30
Neeraj Gupta
9cc723a280 [mob] Local local device assets info in db 2025-03-17 11:03:04 +05:30
Neeraj Gupta
16beae2a82 [mob] Rename 2025-03-15 21:56:10 +05:30
Neeraj Gupta
2e25c38324 [mob] Store local assets state in db 2025-03-15 21:53:47 +05:30
Neeraj Gupta
7e691f84e4 Merge remote-tracking branch 'origin/main' into remote_db 2025-03-15 16:24:42 +05:30
Neeraj Gupta
d99593fc85 [mob] Fix impl diff compute & simplify 2025-03-14 18:30:11 +05:30
Neeraj Gupta
d4877ea446 [mob] Write in parallel 2025-03-14 17:05:16 +05:30
Neeraj Gupta
5f4c748886 [mob] Refactor & improve logs 2025-03-14 16:17:59 +05:30
Neeraj Gupta
eaab58c62a [mob] refactor 2025-03-14 13:48:34 +05:30
Neeraj Gupta
c1c020402e [mob] Simplify local import 2025-03-14 13:10:44 +05:30
Neeraj Gupta
028f4e61d2 [mob] Add initial db schema for local files 2025-03-13 17:19:47 +05:30
Neeraj Gupta
abc6f56247 [mob] Fix: Handle null nonce for shared collections 2025-03-13 17:12:26 +05:30
Neeraj Gupta
822eb59761 Merge branch 'main' into remote_db 2025-03-13 15:07:20 +05:30
Neeraj Gupta
fade7859ab Refactor 2025-03-13 11:34:33 +05:30
Neeraj Gupta
f85047fb28 [mob] Refactor 2025-03-13 11:21:50 +05:30
Neeraj Gupta
3f81c9beae [mob] Add helpers for local assets import 2025-03-13 09:55:53 +05:30
Neeraj Gupta
b7fa8d7c89 Merge branch 'main' into remote_db 2025-03-12 13:59:12 +05:30
Neeraj Gupta
5f75c5fc3f [mob] Add sql scripts for local db 2025-03-11 14:06:13 +05:30
Neeraj Gupta
98eaee3b9e Merge branch 'main' into remote_db 2025-03-11 13:35:36 +05:30
Neeraj Gupta
59bd039bed Add db schema for local files 2025-03-10 11:07:17 +05:30
Neeraj Gupta
3e90126a55 Merge branch 'main' into remote_db 2025-03-07 13:47:42 +05:30
Neeraj Gupta
dabcc0aeb5 Merge remote-tracking branch 'origin/main' into remote_db 2025-03-05 13:35:37 +05:30
Neeraj Gupta
c4b99af0e2 Merge branch 'main' into remote_db 2025-03-03 19:07:38 +05:30
Neeraj Gupta
679c12bb90 Remove recursion 2025-03-03 11:21:11 +05:30
Neeraj Gupta
3ef8ece8c0 Refactor 2025-03-03 11:16:43 +05:30
Neeraj Gupta
24f8cf188a Refactor 2025-03-03 10:34:38 +05:30
Neeraj Gupta
233838da3e Merge branch 'main' into remote_db 2025-03-01 12:37:42 +05:30
Neeraj Gupta
06c4866c75 [mob] Refactor 2025-02-28 14:07:01 +05:30
Neeraj Gupta
fa71acf91a Merge branch 'main' into remote_db 2025-02-28 13:51:53 +05:30
Neeraj Gupta
81d40826b3 Merge remote-tracking branch 'origin/main' into remote_db 2025-02-28 12:59:40 +05:30
Neeraj Gupta
2a14b5e5a3 clean up 2025-02-28 12:59:26 +05:30
Neeraj Gupta
63bbca09f3 [mob] clean up 2025-02-28 11:39:20 +05:30
Neeraj Gupta
cbff68bc42 [server] Persist remote pull response 2025-02-28 10:56:15 +05:30
Neeraj Gupta
070ab80be9 [mob] Enable foreign_keys on remote db 2025-02-27 14:12:26 +05:30
Neeraj Gupta
0efbf407d3 [mob] table for collection_files and files 2025-02-27 14:11:52 +05:30
Neeraj Gupta
ab22b28695 Merge branch 'main' into remote_db 2025-02-26 16:13:26 +05:30
Neeraj Gupta
d3466d7efe [mob] Insert collection_files 2025-02-25 05:30:46 +05:30
Neeraj Gupta
5945f2aaad Merge branch 'main' into remote_db 2025-02-24 15:11:30 +05:30
Neeraj Gupta
4c79b9cb92 [mob] Pull remote diff using new diff models 2025-02-20 11:57:36 +05:30
Neeraj Gupta
4676c363d2 [mob] Refactor 2025-02-20 11:55:46 +05:30
Neeraj Gupta
f75807d8f0 [mob] New diff model 2025-02-20 11:24:02 +05:30
Neeraj Gupta
578541308a [mob] Refactor 2025-02-19 15:51:41 +05:30
Neeraj Gupta
30cded4d3d [mob][crypto] Sync stream decryption 2025-02-19 15:51:13 +05:30
Neeraj Gupta
be2aee6baa Merge branch 'main' into remote_db 2025-02-18 15:21:25 +05:30
Neeraj Gupta
fae23df6eb [mob] refactor 2025-02-17 14:37:09 +05:30
Neeraj Gupta
2a1f2aded1 [mob] Use remote db for collections 2025-02-14 21:23:01 +05:30
Neeraj Gupta
6e85d24286 [mob] Add db row mappers for collection 2025-02-14 21:23:01 +05:30
Neeraj Gupta
0bcc676e44 [mob] Add new collection model for remote 2025-02-14 21:23:01 +05:30
Neeraj Gupta
b5a9bab5c6 refactor 2025-02-14 21:23:01 +05:30
Neeraj Gupta
5849d14cd9 refactor 2025-02-14 21:23:01 +05:30
Neeraj Gupta
77cde87927 [mob] Create db for collections & collection_files 2025-02-14 21:23:01 +05:30
Neeraj Gupta
670d6e8470 [mob] Scaffold remote db 2025-02-14 21:23:01 +05:30
1513 changed files with 132586 additions and 80906 deletions

View File

@@ -5,7 +5,7 @@ on:
branches: [main]
paths:
# Run workflow when auth's intl_en.arb is changed
- "auth/lib/l10n/arb/app_en.arb"
- "mobile/apps/auth/lib/l10n/arb/app_en.arb"
# Or the workflow itself is changed
- ".github/workflows/auth-crowdin.yml"

View File

@@ -4,7 +4,7 @@ on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
permissions:
contents: write

View File

@@ -4,11 +4,11 @@ on:
# Run on every pull request (open or push to it) that changes auth/
pull_request:
paths:
- "auth/**"
- "mobile/apps/auth/**"
- ".github/workflows/auth-lint.yml"
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
permissions:
contents: read

View File

@@ -29,7 +29,7 @@ on:
- "auth-v*"
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
permissions:
contents: write

View File

@@ -0,0 +1,179 @@
name: "Internal release (photos)"
on:
schedule:
# Runs daily at 12:30 UTC (6:00 PM IST)
- cron: "30 12 * * *"
workflow_dispatch: # Allow manual trigger
env:
FLUTTER_VERSION: "3.32.8"
RUST_VERSION: "1.86.0"
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: mobile/apps/photos
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Free up disk space
run: |
echo "Initial disk usage:"
df -h /
# Get available space in KB
INITIAL=$(df / | awk 'NR==2 {print $4}')
echo -e "\n=== Removing .NET SDK (~20-25GB) ==="
BEFORE=$(df / | awk 'NR==2 {print $4}')
START=$(date +%s)
sudo rm -rf /usr/share/dotnet
END=$(date +%s)
AFTER=$(df / | awk 'NR==2 {print $4}')
FREED=$(( (AFTER - BEFORE) / 1048576 )) # Convert KB to GB
echo "Time: $((END-START))s | Freed: ${FREED}GB"
echo -e "\n=== Removing cached tools (~5-10GB) ==="
BEFORE=$(df / | awk 'NR==2 {print $4}')
START=$(date +%s)
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
END=$(date +%s)
AFTER=$(df / | awk 'NR==2 {print $4}')
FREED=$(( (AFTER - BEFORE) / 1048576 ))
echo "Time: $((END-START))s | Freed: ${FREED}GB"
echo -e "\n=== Final Summary ==="
FINAL=$(df / | awk 'NR==2 {print $4}')
TOTAL_FREED=$(( (FINAL - INITIAL) / 1048576 ))
echo "Total space freed: ${TOTAL_FREED}GB"
echo "Final disk usage:"
df -h /
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Install Flutter Rust Bridge
run: cargo install flutter_rust_bridge_codegen
- name: Generate Rust bindings
run: flutter_rust_bridge_codegen generate
- name: Increment version code for build
run: |
CURRENT_VERSION=$(grep '^version:' pubspec.yaml | sed 's/version: //')
VERSION_NAME=$(echo $CURRENT_VERSION | cut -d'+' -f1)
CURRENT_BUILD=$(echo $CURRENT_VERSION | cut -d'+' -f2)
NEW_BUILD=$((CURRENT_BUILD + ${{ github.run_number }}))
NEW_VERSION="${VERSION_NAME}+${NEW_BUILD}"
sed -i "s/^version: .*/version: $NEW_VERSION/" pubspec.yaml
echo "Building with version ${NEW_VERSION}"
# Store version for later use
echo "NEW_VERSION=${NEW_VERSION}" >> $GITHUB_ENV
- name: Prepare and validate changelog for Play Store
run: |
mkdir -p whatsnew
CHANGELOG_FILE="scripts/store_changes.txt"
DISCORD_FILE="scripts/internal_changes.txt"
OUTPUT_FILE="whatsnew/whatsnew-en-US"
# Use provided changelog or fallback
if [ -f "$CHANGELOG_FILE" ]; then
head -c 500 "$CHANGELOG_FILE" > "$OUTPUT_FILE"
else
echo "Bug fixes and improvements" > "$OUTPUT_FILE"
fi
# Validate: file exists
if [ ! -s "$OUTPUT_FILE" ]; then
echo "❌ Changelog is empty."
exit 1
fi
# Validate: <= 500 chars
LENGTH=$(wc -m < "$OUTPUT_FILE")
if [ "$LENGTH" -gt 500 ]; then
echo "❌ Changelog exceeds 500 characters ($LENGTH)."
exit 1
fi
# Validate: no markdown or HTML
if grep -Eq '[\*\_\<\>\[\]\(\)]' "$OUTPUT_FILE"; then
echo "❌ Changelog contains markdown/HTML formatting."
exit 1
fi
echo "✅ Changelog valid:"
cat "$OUTPUT_FILE"
# Store changelog for Play Store (with escaped newlines)
CHANGELOG_PLAYSTORE=$(cat "$OUTPUT_FILE" | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/"/\\"/g')
echo "CHANGELOG=${CHANGELOG_PLAYSTORE}" >> $GITHUB_ENV
# Store changelog for Discord (with proper newlines)
CHANGELOG_DISCORD=$(cat "$DISCORD_FILE" | sed 's/"/\\"/g')
echo "CHANGELOG_DISCORD<<EOF" >> $GITHUB_ENV
echo "$CHANGELOG_DISCORD" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Setup keys
uses: timheuer/base64-to-file@v1
with:
fileName: "keystore/ente_photos_key.jks"
encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }}
- name: Build PlayStore AAB
run: |
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 }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
- name: Upload AAB to PlayStore
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: io.ente.photos
releaseFiles: mobile/apps/photos/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
track: internal
whatsNewDirectory: mobile/apps/photos/whatsnew
mappingFile: mobile/apps/photos/build/app/outputs/mapping/playstoreRelease/mapping.txt
- name: Notify Discord
uses: sarisia/actions-status-discord@v1
with:
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
nodetail: true
title: "🏆 Daily release Photos v${{ env.NEW_VERSION }} (Branch: ${{ github.ref_name }})"
description: |
**Version:** ${{ env.NEW_VERSION }}
**Flutter:** ${{ env.FLUTTER_VERSION }}
**Commit:** [${{ github.sha }}](${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }})
**Download:** [Play Store](https://play.google.com/store/apps/details?id=io.ente.photos)
**Changes:**
${{ env.CHANGELOG_DISCORD }}
color: 0x00ff00

View File

@@ -1,77 +0,0 @@
name: "Internal release (photos)"
on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.24.3"
RUST_VERSION: "1.85.1"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: mobile/apps/photos
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Install Rust ${{ env.RUST_VERSION }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Install Flutter Rust Bridge
run: cargo install flutter_rust_bridge_codegen
- name: Setup keys
uses: timheuer/base64-to-file@v1
with:
fileName: "keystore/ente_photos_key.jks"
encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }}
- name: Build PlayStore AAB
run: |
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 }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
- name: Upload AAB to PlayStore
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: io.ente.photos
releaseFiles: mobile/apps/photos/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

@@ -1,68 +0,0 @@
name: "Internal release (photos)"
on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.24.3"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: mobile/apps/photos
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Setup keys
uses: timheuer/base64-to-file@v1
with:
fileName: "keystore/ente_photos_key.jks"
encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }}
- name: Build PlayStore AAB
run: |
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 }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
- name: Upload AAB to PlayStore
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
packageName: io.ente.photos
releaseFiles: mobile/apps/photos/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 Photos (Branch: ${{ github.ref_name }})"
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos)"
color: 0x00ff00

View File

@@ -8,7 +8,8 @@ on:
- ".github/workflows/mobile-lint.yml"
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
RUST_VERSION: "1.86.0"
permissions:
contents: read
@@ -31,7 +32,18 @@ jobs:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- run: flutter pub get
- name: Install Rust ${{ env.RUST_VERSION }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Install Flutter Rust Bridge
run: cargo install flutter_rust_bridge_codegen
- name: Generate Rust bindings
run: flutter_rust_bridge_codegen generate
- run: flutter analyze --no-fatal-infos

View File

@@ -9,7 +9,7 @@ on:
- "photos-v*"
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
permissions:
contents: write
@@ -28,6 +28,38 @@ jobs:
with:
submodules: recursive
- name: Free up disk space
run: |
echo "Initial disk usage:"
df -h /
# Get available space in KB
INITIAL=$(df / | awk 'NR==2 {print $4}')
echo -e "\n=== Removing .NET SDK (~20-25GB) ==="
BEFORE=$(df / | awk 'NR==2 {print $4}')
START=$(date +%s)
sudo rm -rf /usr/share/dotnet
END=$(date +%s)
AFTER=$(df / | awk 'NR==2 {print $4}')
FREED=$(( (AFTER - BEFORE) / 1048576 )) # Convert KB to GB
echo "Time: $((END-START))s | Freed: ${FREED}GB"
echo -e "\n=== Removing cached tools (~5-10GB) ==="
BEFORE=$(df / | awk 'NR==2 {print $4}')
START=$(date +%s)
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
END=$(date +%s)
AFTER=$(df / | awk 'NR==2 {print $4}')
FREED=$(( (AFTER - BEFORE) / 1048576 ))
echo "Time: $((END-START))s | Freed: ${FREED}GB"
echo -e "\n=== Final Summary ==="
FINAL=$(df / | awk 'NR==2 {print $4}')
TOTAL_FREED=$(( (FINAL - INITIAL) / 1048576 ))
echo "Total space freed: ${TOTAL_FREED}GB"
echo "Final disk usage:"
df -h /
- name: Setup JDK 17
uses: actions/setup-java@v1
with:
@@ -40,6 +72,12 @@ jobs:
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Install Flutter Rust Bridge
run: cargo install flutter_rust_bridge_codegen
- name: Generate Rust bindings
run: flutter_rust_bridge_codegen generate
- name: Setup keys
uses: timheuer/base64-to-file@v1
with:

View File

@@ -4,7 +4,7 @@ on:
workflow_dispatch: # Manual trigger only
env:
FLUTTER_VERSION: "3.24.3"
FLUTTER_VERSION: "3.32.8"
ANDROID_KEYSTORE_PATH: "keystore/ente_photos_key.jks"
jobs:

View File

@@ -15,6 +15,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUSTFLAGS: -D warnings
jobs:
lint:
runs-on: ubuntu-latest
@@ -33,9 +36,9 @@ jobs:
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- run: cargo fmt --check
- run: cargo clippy
- run: cargo clippy --all-targets --all-features
- run: cargo build

View File

@@ -54,6 +54,18 @@ jobs:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/photos web/apps/photos/out
- name: Build custom-albums
run: yarn build:photos
env:
NEXT_PUBLIC_ENTE_ONLY_SERVE_ALBUMS_APP: 1
- name: Publish custom-albums
uses: cloudflare/wrangler-action@v3
with:
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/custom-albums web/apps/photos/out
- name: Build accounts
run: yarn build:accounts

View File

@@ -142,6 +142,22 @@ var _updateFreeUserStorage = &cobra.Command{
},
}
var _sendMail = &cobra.Command{
Use: "send-mail <to-email> <from-email> <from-name>",
Args: cobra.ExactArgs(3),
Short: "Sends a test mail via the admin api",
RunE: func(cmd *cobra.Command, args []string) error {
recoverWithLog()
var flags = &model.AdminActionForUser{}
cmd.Flags().VisitAll(func(f *pflag.Flag) {
if f.Name == "admin-user" {
flags.AdminEmail = f.Value.String()
}
})
return ctrl.SendTestMail(context.Background(), *flags, args[0], args[1], args[2])
},
}
func init() {
rootCmd.AddCommand(_adminCmd)
_ = _userDetailsCmd.MarkFlagRequired("admin-user")
@@ -159,5 +175,6 @@ func init() {
_updateFreeUserStorage.Flags().StringP("user", "u", "", "The email of the user to update subscription for. (required)")
// add a flag with no value --no-limit
_updateFreeUserStorage.Flags().String("no-limit", "True", "When true, sets 100TB as storage limit, and expiry to current date + 100 years")
_adminCmd.AddCommand(_userDetailsCmd, _disable2faCmd, _disablePasskeyCmd, _updateFreeUserStorage, _listUsers, _deleteUser)
_sendMail.Flags().StringP("admin-user", "a", "", "The email of the admin user. ")
_adminCmd.AddCommand(_userDetailsCmd, _disable2faCmd, _disablePasskeyCmd, _updateFreeUserStorage, _listUsers, _deleteUser, _sendMail)
}

View File

@@ -2,11 +2,12 @@ package cmd
import (
"fmt"
"github.com/ente-io/cli/pkg"
"github.com/spf13/cobra/doc"
"os"
"runtime"
"github.com/ente-io/cli/pkg"
"github.com/spf13/cobra/doc"
"github.com/spf13/viper"
"github.com/spf13/cobra"
@@ -20,11 +21,6 @@ var ctrl *pkg.ClICtrl
var rootCmd = &cobra.Command{
Use: "ente",
Short: "CLI tool for exporting your photos from ente.io",
// Uncomment the following line if your bare application
// has an action associated with it:
Run: func(cmd *cobra.Command, args []string) {
fmt.Sprintf("Hello World")
},
}
func GenerateDocs() error {

View File

@@ -139,5 +139,28 @@ func (c *Client) UpdateFreePlanSub(ctx context.Context, userDetails *models.User
}
}
return nil
}
func (c *Client) SendTestMail(ctx context.Context, toEmail, fromEmail, fromName string) error {
body := map[string]interface{}{
"to": []string{toEmail},
"fromName": fromName,
"fromEmail": fromEmail,
"subject": "Test mail from Ente",
"body": "This is a test mail from Ente",
}
r, err := c.restClient.R().
SetContext(ctx).
SetBody(body).
Post("/admin/mail")
if err != nil {
return err
}
if r.IsError() {
return &ApiError{
StatusCode: r.StatusCode(),
Message: r.String(),
}
}
return nil
}

View File

@@ -156,6 +156,23 @@ func (c *ClICtrl) UpdateFreeStorage(ctx context.Context, params model.AdminActio
return nil
}
func (c *ClICtrl) SendTestMail(ctx context.Context, params model.AdminActionForUser, to, from, fromName string) error {
accountCtx, err := c.buildAdminContext(ctx, params.AdminEmail)
if err != nil {
return err
}
err = c.Client.SendTestMail(accountCtx, to, from, fromName)
if err != nil {
if apiErr, ok := err.(*api.ApiError); ok && apiErr.StatusCode == 400 && strings.Contains(apiErr.Message, "Token is too old") {
fmt.Printf("Error: old admin token, please re-authenticate using `ente account add` \n")
return nil
}
return err
}
fmt.Printf("Successfully sent test email to %s\n", to)
return nil
}
func (c *ClICtrl) buildAdminContext(ctx context.Context, adminEmail string) (context.Context, error) {
accounts, err := c.GetAccounts(ctx)
if err != nil {

View File

@@ -2,6 +2,8 @@
## v1.7.15 (Unreleased)
- Custom domains.
- Support Czech translations.
- .
## v1.7.14

View File

@@ -26,6 +26,10 @@ export const sidebar = [
text: "Collecting photos",
link: "/photos/features/collect",
},
{
text: "Custom domains",
link: "/photos/features/custom-domains/",
},
{
text: "Deduplicate",
link: "/photos/features/deduplicate",

0
docs/docs/cli/index.md Normal file
View File

View File

@@ -35,4 +35,4 @@ be specific to your distro (e.g. `xdg-desktop-menu forceupdate`).
> [!NOTE]
>
> If you're using an AppImage and not seeing the icon, you'll need to
> [enable AppImage desktop integration](/photos/troubleshooting/desktop-install/#appimage-desktop-integration).
> [enable AppImage desktop integration](/photos/troubleshooting/desktop-install/#appimage-desktop-integration).

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -0,0 +1,105 @@
---
title: Custom domains
description: Use your own domain when sharing photos and videos stored in Ente Photos
---
# Custom domains
Custom domains allow you to serve your public links with your own personalized domain.
For example, if I have an Ente album and wish to share it with my friends, I can go to the album's sharing settings and create a public link. When I copy this link, it will of the form of
```
https://albums.ente.io/?t=...
```
The custom domains feature allows you to instead create a link that uses your own domain, say
```
https://pics.example.org/?t=...
```
You don't need to run any servers or manage any services, Ente will still host and serve your album for you, the only thing that changes is that you can serve your links using your personalized domain.
## Availability
The custom domains feature requires the ability to publicly share albums which for abuse prevention reasons can only be done by people with an active Ente subscription.
## Setup
The setup involves two steps:
1. Letting Ente know about the domain you wish to use for serving your public links
2. Updating your DNS settings to point your domain (or subdomain) to **my.ente.io**
For people who are comfortable with changing DNS settings on their domain provider, this entire process is very simple will take a minute. For people who are not comfortable with changing DNS, we will provide a more detailed breakdown below.
Let's dive in.
To make the process concrete, let's assume we're trying to use _pics.example.org_ as our custom domain. Note that there is no restriction to use a subdomain, a top level domain can be used as a custom domain too. That is, either of _example.org_ or _subdomain.example.org_ is fine, Ente will work with both.
### Step 1 - Link your domain
The first step is to let Ente know about the domain or subdomain you wish to use by linking it to your account.
> [!WARNING]
>
> Currently (Aug 2025) the ability to link a custom domain is only present in Ente's web app, [web.ente.io](https://web.ente.io). It will come to Ente mobile and desktop when their next versions get released.
Head over to Preferences > Custom domains, in the domain field enter "pics.example.org" (replace with your subdomain) and press "Save". That's it. The linking is done.
### Step 2 - Add DNS entry
The second step is to add a CNAME entry in your DNS provider that forwards requests for pics.example.org (replace with your subdomain) to **my.ente.io**.
Specifically, you need to add a `CNAME record` from the domain (or subdomain) of your choice to `my.ente.io`. You can leave the `TTL` at its default.
| Record Type | Name | Value | TTL |
| ----------- | :------------------------: | -----------: | -------------- |
| CNAME | Your subdomain, e.g `pics` | `my.ente.io` | Auto (default) |
The exact steps for doing this depend on the DNS provider that you're using.
> Your DNS provider usually is the service from which you bought your domain. The domain name seller will provide some sort of an admin panel where you can configure your DNS settings.
As concrete examples, here is how this step would look for Cloudflare:
![Adding a CNAME for custom domain in Cloudflare](cf.png)
Note that orange proxy option is off. And here is how it would look for Namecheap:
![Adding a CNAME for custom domain in Namecheap](nc.png)
> [!NOTE]
>
> The examples are using "pics" as the subdomain, but that's just an example, you can use anything you like (or use "@" if you'd like to use the root domain itself).
The time it takes for DNS records to update is dependent on your DNS provider. Usually the changes should start reflecting within a few minutes, and should almost always reflect within an hour.
Once the DNS changes have been applied, then you can take any public link to your shared albums, replace `albums.ente.io` with your choice (e.g. `pics.example.org`), and the link will still work.
You don't need to do this manually though, the apps will do it for you. More on this in the next section. But first, some troubleshooting tips.
### Troubleshooting
If your domain is not working, go through the following checklist.
- The CNAME should be from your domain to my.ente.io, not the other way around. That is, `pics.example.org => my.ente.io`.
- If you're using Cloudflare DNS, make sure that the "Orange" proxy status toggle is off, and the Proxy status is the "Grey" DNS only.
## Using
Using is trivial. When you go to an album's sharing options and copy the link to it, Ente will automatically copy the link that uses your configured domain.
> [!WARNING]
>
> Currently (Aug 2025) the ability to automatically substitute your custom domain is only present in Ente's web app, [web.ente.io](https://web.ente.io). It will come to Ente mobile and desktop when their next versions get released.
## Unsetting
To stop using your custom domain, we need to undo the two steps we did during setup.
1. Unlink your domain in Ente. This can be done just by going to Preferences > Custom Domains, clearing the value in the "Domain" input and pressing "Update".
2. Remove the CNAME record you added during setup in your DNS provider.

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -112,4 +112,4 @@ ip addr add 10.10.10.1/24 dev dummy0
ip link set dummy0 up
```
Once the interface is up, Ente correctly detects that the system is online.
Once the interface is up, Ente correctly detects that the system is online.

View File

@@ -8,6 +8,12 @@ description: Guide to configuring Ente CLI for Self Hosted Instance
If you are self-hosting, you can configure Ente CLI to export data & perform
basic administrative actions.
::: tip Installing Ente CLI
For instructions on installing the Ente CLI, see the [README available on Github](https://github.com/ente-io/ente/tree/main/cli/README.md).
:::
## Step 1: Configure endpoint
To do this, first configure the CLI to use your server's endpoint.

View File

@@ -63,11 +63,20 @@ It has no relation to Backblaze, Wasabi or Scaleway.
Each bucket's endpoint, region, key and secret should be configured accordingly
if using an external bucket.
A sample configuration for `b2-eu-cen` is provided, which can be used for other
2 buckets as well:
If a bucket has SSL support enabled, set `s3.are_local_buckets` to `false`. Enable path-style URL by setting `s3.use_path_style_urls` to `true`.
::: note
You can configure this for individual buckets over defining top-level configuration if you are using the latest server image (August 2025)
:::
A sample configuration for `b2-eu-cen` is provided, which can be used for other 2 buckets as well:
```yaml
b2-eu-cen:
are_local_buckets: true
use_path_style_urls: true
key: <key>
secret: <secret>
endpoint: localhost:3200

View File

@@ -22,8 +22,7 @@ can achieve this the following steps:
# Change the DB name and DB user name if you use different
# values.
# If using Docker
docker exec -it <postgres-ente-container-name>
docker exec -it <postgres-ente-container-name> sh
psql -U pguser -d ente_db
# Or when using psql directly

View File

@@ -96,8 +96,8 @@ provide correct credentials for proper connectivity within Museum.
The `s3` section within `museum.yaml` is by default configured to use local
MinIO buckets when using `quickstart.sh` or Docker Compose.
If you wish to use an external S3 provider, you can edit the configuration with
your provider's credentials, and set `s3.are_local_buckets` to `false`.
If you wish to use an external S3 provider with SSL, you can edit the configuration with
your provider's credentials, and set `s3.are_local_buckets` to `false`. Additionally, you can configure this for specific buckets in the corresponding bucket sections in the Compose file.
If you are using default MinIO, it is accessible at port `3200`. Web Console can
be accessed by enabling port `3201` in the Compose file.
@@ -111,11 +111,11 @@ and [troubleshooting](/self-hosting/troubleshooting/uploads) sections.
| Variable | Description | Default |
| -------------------------------------- | -------------------------------------------- | ------- |
| `s3.b2-eu-cen` | Primary hot storage S3 config | |
| `s3.b2-eu-cen` | Primary hot storage bucket configuration | |
| `s3.wasabi-eu-central-2-v3.compliance` | Whether to disable compliance lock on delete | `true` |
| `s3.scw-eu-fr-v3` | Optional secondary S3 config | |
| `s3.wasabi-eu-central-2-derived` | Derived data storage | |
| `s3.are_local_buckets` | Use local MinIO-compatible storage | `false` |
| `s3.scw-eu-fr-v3` | Cold storage bucket configuration | |
| `s3.wasabi-eu-central-2-v3` | Secondary hot storage configuration | |
| `s3.are_local_buckets` | | `true` |
| `s3.use_path_style_urls` | Enable path-style URLs for MinIO | `false` |
### Encryption Keys
@@ -171,6 +171,8 @@ smtp:
email:
# Optional name for sender
sender-name:
# Optional encryption
encryption:
```
| Variable | Description | Default |
@@ -181,6 +183,7 @@ smtp:
| `smtp.password` | SMTP auth password | |
| `smtp.email` | Sender email address | |
| `smtp.sender-name` | Custom name for email sender | |
| `smtp.encryption` | Encryption method (tls, ssl) | |
| `transmail.key` | Zeptomail API key | |
### WebAuthn Passkey Support

View File

@@ -46,7 +46,7 @@ If running Museum without Docker, the code should be visible in the terminal
# Change the DB name and DB user name if you use different
# values.
# If using Docker docker exec -it <postgres-ente-container-name>
# If using Docker docker exec -it <postgres-ente-container-name> sh
psql -U pguser -d ente_db
# Or when using psql directly

View File

@@ -0,0 +1,15 @@
{
email custom-domains@ente.io
on_demand_tls {
ask https://api.ente.io/custom-domain
}
}
https:// {
tls {
on_demand
}
reverse_proxy https://custom-albums.ente.io {
header_up Host {upstream_hostport}
}
}

View File

@@ -0,0 +1,19 @@
# Caddy
Caddy is used to terminate TLS and manage certificates for custom domains.
## Installation
```sh
sudo mkdir -p /root/caddy/conf
sudo mv Caddyfile /root/caddy/conf
sudo chown root:root /root/caddy/conf/Caddyfile
```
Rest of it works like our other systemd services.
If the Caddyfile changes, the running instance can be updated without restarts by using `sudo systemctl reload caddy`.
## Backups
The entire `/root/caddy` directory can be backed up and contains the everything needed to resurrect the same setup.

View File

@@ -0,0 +1,17 @@
[Unit]
Documentation=https://caddyserver.com/docs/running
Requires=docker.service
After=docker.service
[Service]
ExecStartPre=docker pull caddy
ExecStartPre=-docker stop caddy
ExecStartPre=-docker rm caddy
ExecStart=docker run --name caddy \
--cap-add NET_ADMIN \
-p 80:80 -p 443:443 -p 443:443/udp \
-v /root/caddy/conf:/etc/caddy \
-v /root/caddy/data:/data \
-v /root/caddy/config:/config \
caddy
ExecReload=docker exec -w /etc/caddy caddy caddy reload

45
mobile/.gitignore vendored Normal file
View File

@@ -0,0 +1,45 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
melos_*.iml
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

View File

@@ -0,0 +1,72 @@
# For more linters, we can check https://dart-lang.github.io/linter/lints/index.html
# or https://pub.dev/packages/lint (Effective dart)
# use "flutter analyze ." or "dart analyze ." for running lint checks
include: package:flutter_lints/flutter.yaml
linter:
rules:
# Ref https://github.com/flutter/packages/blob/master/packages/flutter_lints/lib/flutter.yaml
# Ref https://dart-lang.github.io/linter/lints/
- avoid_print
- avoid_unnecessary_containers
- avoid_web_libraries_in_flutter
- no_logic_in_create_state
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_final_locals
- require_trailing_commas
- sized_box_for_whitespace
- use_full_hex_values_for_flutter_colors
- use_key_in_widget_constructors
- cancel_subscriptions
- avoid_empty_else
- exhaustive_cases
# just style suggestions
- sort_pub_dependencies
- use_rethrow_when_possible
- prefer_double_quotes
- directives_ordering
- always_use_package_imports
- sort_child_properties_last
- unawaited_futures
analyzer:
errors:
avoid_empty_else: error
exhaustive_cases: error
curly_braces_in_flow_control_structures: error
directives_ordering: error
require_trailing_commas: error
always_use_package_imports: warning
prefer_final_fields: error
unused_import: error
camel_case_types: error
prefer_is_empty: warning
use_rethrow_when_possible: info
unused_field: warning
use_key_in_widget_constructors: warning
sort_child_properties_last: warning
sort_pub_dependencies: warning
library_private_types_in_public_api: warning
constant_identifier_names: ignore
prefer_const_constructors: warning
prefer_const_declarations: warning
prefer_const_constructors_in_immutables: warning
prefer_final_locals: warning
unnecessary_const: error
cancel_subscriptions: error
unrelated_type_equality_checks: error
unnecessary_cast: info
unawaited_futures: warning # convert to warning after fixing existing issues
invalid_dependency: info
use_build_context_synchronously: ignore # experimental lint, requires many changes
prefer_interpolation_to_compose_strings: ignore # later too many warnings
prefer_double_quotes: ignore # too many warnings
avoid_renaming_method_parameters: ignore # incorrect warnings for `equals` overrides

View File

@@ -1,3 +1,3 @@
{
"flutter": "3.24.3"
"flutter": "3.32.8"
}

View File

@@ -44,4 +44,5 @@ android/key.properties
dist/
# FVM Version Cache
.fvm/
.fvm/
lib/l10n/arb/*.dart

View File

@@ -44,7 +44,7 @@ or managing your secrets, please use our mobile or desktop app.
## 🧑‍💻 Build from source
1. [Install Flutter](https://flutter.dev/docs/get-started/install)
1. [Install Flutter v3.32.8](https://flutter.dev/docs/get-started/install).
2. Pull in all submodules with `git submodule update --init --recursive`

View File

@@ -30,10 +30,13 @@ if (keystorePropertiesFile.exists()) {
android {
namespace "io.ente.auth"
compileSdk 34
compileSdk 36
ndkVersion flutter.ndkVersion
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
@@ -56,8 +59,8 @@ android {
applicationId "io.ente.auth"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
targetSdkVersion 34
minSdkVersion 22
targetSdkVersion 35
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -115,4 +118,7 @@ flutter {
source '../..'
}
dependencies {}
dependencies {
// For AGP 7.4+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}

View File

@@ -0,0 +1,6 @@
# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn com.google.errorprone.annotations.CanIgnoreReturnValue
-dontwarn com.google.errorprone.annotations.CheckReturnValue
-dontwarn com.google.errorprone.annotations.Immutable
-dontwarn com.google.errorprone.annotations.RestrictedApi

View File

@@ -6,6 +6,19 @@ allprojects {
}
rootProject.buildDir = '../build'
subprojects {
afterEvaluate { project ->
if (project.hasProperty('android')) {
project.android {
if (namespace == null) {
namespace project.group
}
}
}
}
}
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}

View File

@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip

View File

@@ -19,8 +19,8 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.8.22" apply false
id "com.android.application" version "8.6.0" apply false
id "org.jetbrains.kotlin.android" version "2.1.10" apply false
}
include ":app"

View File

@@ -17,8 +17,7 @@
"uidai",
"UIDAI",
"Unique Identification Authority of India"
],
"hex": "FBB401"
]
},
{
"title": "Accredible",
@@ -57,8 +56,7 @@
},
{
"title": "Amtrak",
"slug": "amtrak",
"hex": "003A5D"
"slug": "amtrak"
},
{
"title": "Animal Crossing",
@@ -90,13 +88,6 @@
"Docaposte AR24"
]
},
{
"title": "Art Fight",
"slug": "art_fight",
"altNames": [
"ArtFight"
]
},
{
"title": "Aruba",
"slug": "aruba",
@@ -122,6 +113,10 @@
{
"title": "availity"
},
{
"title": "AvistaZ.to",
"slug": "avistaz"
},
{
"title": "AzurHosts",
"slug": "azurhosts",
@@ -161,14 +156,6 @@
"Blizzard"
]
},
{
"title": "BBS.NGA",
"slug": "bbs_nga",
"altNames": [
"NGA玩家社区",
"NGA社区"
]
},
{
"title": "Belo"
},
@@ -313,8 +300,7 @@
},
{
"title": "Caltrain",
"slug": "caltrain",
"hex": "E31837"
"slug": "caltrain"
},
{
"title": "Canva"
@@ -322,6 +308,14 @@
{
"title": "Capacities"
},
{
"title": "Capcom",
"slug": "capcom",
"hex": "0D4DA2",
"altNames": [
"Capcom Co., Ltd."
]
},
{
"title": "Carta",
"altNames": [
@@ -360,6 +354,10 @@
{
"title": "Chucklefish"
},
{
"title": "CinemaZ.to",
"slug": "cinemaz"
},
{
"title": "Clipper",
"slug": "clippercard",
@@ -367,8 +365,7 @@
"ClipperCard",
"clipper-card",
"Clipper Card"
],
"hex": "006298"
]
},
{
"title": "CloudAMQP"
@@ -385,6 +382,11 @@
{
"title": "CoinDCX"
},
{
"title": "CoinTracking",
"slug": "cointracking",
"altNames": ["cointracking.info", "Coin Tracking"]
},
{
"title": "colorado",
"altNames": [
@@ -413,8 +415,7 @@
},
{
"title": "Coolify",
"slug": "coolify",
"hex": "8C52FF"
"slug": "coolify"
},
{
"title": "Crowdpear"
@@ -463,25 +464,6 @@
"cwallet.com"
]
},
{
"title": "U.S. Department of Homeland Security",
"slug": "us_dhs",
"altNames": [
"DHS",
"dhs",
"United States Department of Homeland Security",
"uscis",
"USCIS",
"U.S. Citizenship and Immigration Services",
"cbp",
"CBP",
"U.S. Customs and Border Protection",
"U.S. Immigration and Customs Enforcement",
"ice",
"ICE"
],
"hex": "005189"
},
{
"title": "DCS",
"altNames": [
@@ -527,8 +509,7 @@
"altNames": [
"Domino's",
"Domino's Pizza"
],
"hex": "0B648F"
]
},
{
"title": "Doppler"
@@ -551,8 +532,7 @@
"Dunkin'",
"Dunkin",
"Dunkin Donuts"
],
"hex": "C63663"
]
},
{
"title": "eBay"
@@ -612,10 +592,13 @@
],
"hex": "17AB17"
},
{
"title": "ExoticaZ.to",
"slug": "exoticaz"
},
{
"title": "Experian",
"slug": "experian",
"hex": "AF1685"
"slug": "experian"
},
{
"title": "Fanatical",
@@ -739,8 +722,7 @@
"altNames": [
"green man gaming",
"gmg"
],
"hex": "00E205"
]
},
{
"title": "Guideline"
@@ -758,6 +740,11 @@
{
"title": "Hivelocity"
},
{
"title": "HRDocumentBox",
"slug": "hrdocumentbox",
"altNames": ["HRDocumentBox", "HR Document Box"]
},
{
"title": "HSA Bank",
"slug": "hsa_bank",
@@ -867,8 +854,7 @@
},
{
"title": "Kayak",
"slug": "kayak",
"hex": "FF6900"
"slug": "kayak"
},
{
"title": "Keygen",
@@ -1064,6 +1050,13 @@
"MistralAI"
]
},
{
"title": "Mobile01",
"slug": "mobile01",
"altNames": [
"M01"
]
},
{
"title": "Mozilla"
},
@@ -1169,8 +1162,7 @@
"slug": "njtransit",
"altNames": [
"NJ Transit"
],
"hex": "1A2B57"
]
},
{
"title": "nordvpn",
@@ -1244,6 +1236,12 @@
"title": "Parqet",
"slug": "parqet"
},
{
"title": "Parallels",
"slug": "parallels",
"hex": "#E61E25",
"altNames": ["Parallels Desktop", "Parallels VM"]
},
{
"title": "Parsec"
},
@@ -1275,8 +1273,7 @@
"slug": "pcpartpicker",
"altNames": [
"PC Part Picker"
],
"hex": "EDA920"
]
},
{
"title": "Peerberry"
@@ -1331,6 +1328,10 @@
"title": "Privacy.com",
"slug": "privacy"
},
{
"title": "PrivateHD.to",
"slug": "privatehd"
},
{
"title": "Proton"
},
@@ -1380,6 +1381,13 @@
"r10.net"
]
},
{
"title": "RaiderIO",
"slug": "raider_io",
"altNames": [
"raider.io"
]
},
{
"title": "Raindrop.io",
"slug": "raindrop_io",
@@ -1482,8 +1490,7 @@
"altNames": [
"onlinesbi",
"State Bank of India"
],
"hex": "12A8E0"
]
},
{
"title": "SEI",
@@ -1525,7 +1532,8 @@
"title": "Skinport"
},
{
"title": "Smogon"
"title": "Skyscanner",
"hex": "0770E3"
},
{
"title": "SMSPool",
@@ -1584,8 +1592,7 @@
},
{
"title": "Supercell",
"slug": "supercell",
"hex": "000000"
"slug": "supercell"
},
{
"title": "Surfshark"
@@ -1668,8 +1675,7 @@
"altNames": [
"StoryGraph",
"TheStoryGraph"
],
"hex": "15919B"
]
},
{
"title": "tianyiyun",
@@ -1713,6 +1719,15 @@
"T Rowe Price Group, Inc"
]
},
{
"title": "TU Dresden",
"slug": "tu_dresden",
"altNames": [
"Technische Universität Dresden",
"Dresden University of Technology"
],
"hex": "00305d"
},
{
"title": "Tweakers"
},
@@ -1730,7 +1745,7 @@
{
"title": "Twitter",
"altNames": [
"X",
"X"
]
},
{
@@ -1781,6 +1796,11 @@
"uollet.com.br"
]
},
{
"title": "VHV",
"slug": "vhv",
"altNames": ["VHV", "VHV Versicherung"]
},
{
"title": "Vikunja"
},
@@ -1798,7 +1818,7 @@
"title": "Warner Bros.",
"slug": "warner_bros",
"altNames": [
"Warner Brothers"
"Warner Brothers"
]
},
{
@@ -1811,7 +1831,7 @@
"title": "WEB.DE",
"slug": "web_de"
},
{
{
"title": "WeMod",
"slug": "wemod",
"altNames": [
@@ -1835,8 +1855,7 @@
"Washington Metro",
"DC Metro",
"Washington Metropolitan Area Transit Authority"
],
"hex": "2D2D2D"
]
},
{
"title": "Wolvesville"
@@ -1940,6 +1959,26 @@
{
"title": "Co-Wheels",
"slug": "cowheels"
},
{
"title": "Zivver",
"slug": "zivver"
},
{
"title": "Meesman Indexbeleggen",
"slug": "meesman"
},
{
"title": "Scouting Nederland",
"slug": "scoutingnederland"
},
{
"title": "ISC2",
"slug": "isc2"
},
{
"title": "Allegro",
"slug": "allegro"
}
]
}

View File

@@ -0,0 +1,8 @@
<svg version="1.2" baseProfile="tiny-ps" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1386 1594" width="1386" height="1594">
<title>logo (15)-svg copy-svg</title>
<style>
tspan { white-space:pre }
.shp0 { fill: #ff5a00 }
</style>
<path id="Layer" fill-rule="evenodd" class="shp0" d="M1385.14 634.99L1385.14 1547.13C1385.14 1553.03 1384.01 1558.88 1381.76 1564.35C1379.45 1569.82 1376.13 1574.75 1372 1578.93C1367.82 1583.11 1362.83 1586.44 1357.36 1588.69C1351.89 1590.94 1346.04 1592.12 1340.14 1592.12L570.51 1592.12C534.63 1594.16 498.65 1593.2 462.98 1589.23C427.26 1585.26 391.98 1578.29 357.44 1568.42C322.9 1558.55 289.28 1545.79 256.88 1530.35C224.49 1514.85 193.44 1496.67 164.05 1475.97C137.02 1453.77 112.73 1428.52 91.6 1400.63C70.47 1372.8 52.66 1342.56 38.61 1310.54C24.56 1278.53 14.32 1244.96 8.1 1210.59C1.82 1176.16 -0.32 1141.14 1.61 1106.29L1.61 1101.41C1.61 641.05 502.94 580.24 666.61 580.24L1046.9 580.24L1046.9 546.83C1047.7 524.84 1045.5 502.8 1040.36 481.41C1035.21 460.01 1027.22 439.42 1016.54 420.17C1005.87 400.92 992.63 383.17 977.23 367.51C961.79 351.8 944.25 338.28 925.21 327.29C785.88 256.77 512.11 282.89 283.91 423.38C278.5 428.1 271.85 431.32 264.77 432.66C257.69 434 250.34 433.47 243.53 431.05C236.72 428.64 230.66 424.46 225.99 418.93C221.38 413.41 218.27 406.76 216.98 399.63L202.99 171.03C202.99 168.08 203.31 165.18 204.06 162.34C204.76 159.5 205.88 156.77 207.33 154.19C208.73 151.67 210.5 149.31 212.53 147.22C214.62 145.13 216.93 143.31 219.45 141.8C259.67 118.58 301.4 97.99 344.3 80.24C387.26 62.49 431.29 47.59 476.17 35.63C521.12 23.67 566.75 14.71 612.82 8.76C658.89 2.86 705.33 -0.03 751.78 0.13C937.98 0.13 1138.77 54.24 1238.52 163.09C1338.32 271.95 1384.55 429.44 1384.55 636.81L1385.14 634.99ZM1046.9 858.76L687.31 858.76C410.48 858.76 355.13 1022.96 355.13 1105.05C354.87 1119.64 356.37 1134.17 359.64 1148.38C362.91 1162.59 367.9 1176.32 374.49 1189.3C381.09 1202.33 389.24 1214.45 398.84 1225.44C408.39 1236.49 419.22 1246.25 431.18 1254.61C442.71 1263.35 454.94 1271.18 467.7 1277.99C480.47 1284.8 493.71 1290.65 507.39 1295.47C521.01 1300.25 535.06 1304 549.27 1306.63C563.48 1309.26 577.91 1310.76 592.39 1311.19L1046.9 1311.19L1046.9 858.76Z" />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="926.65619"
height="958.5625"
id="svg2"
inkscape:version="0.48.1 "
sodipodi:docname="Capcom icon.svg">
<metadata
id="metadata3015">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1835"
inkscape:window-height="1058"
id="namedview3013"
showgrid="false"
inkscape:zoom="0.32"
inkscape:cx="1623.239"
inkscape:cy="170.71783"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<defs
id="defs4" />
<g
transform="translate(2426,-55.799683)"
id="layer1">
<path
d="m -1552.0877,1007.6508 4.1189,-358.25737 -199.9062,0 c -15.7424,43.40396 -59.9402,72.71875 -113.25,72.71875 -28.0932,0 -58.13,-6.62565 -82.4688,-21.25 -31.7176,-19.0581 -55.4185,-41.69206 -74.9375,-81.90625 -15.3567,-37.21359 -27.109,-82.77963 -28.4687,-123.09375 4.6791,-79.72921 28.9019,-108.14789 73.25,-141.03125 9.8313,-7.28971 37.2996,-13.1189 45.2187,-13.15625 17.4221,-0.0822 31.9427,10.48615 39.8125,26.0625 11.4471,22.65651 -5.3079,50.1006 -21.875,69.625 l 161.625,111.34375 249.625,-261.1875 c -87.0859,-138.79748 -246.2201,-231.718747 -428.0937,-231.718747 -275.3534,0 -498.5625,212.989027 -498.5625,475.718747 0,262.72972 216.0662,461.41517 498.5625,482.84377 l 376.5933,-1.6875 c 0.2227,-314.9224 -12.7573,-290.91079 -1.2435,-5.0239 z"
id="path3840"
style="fill:#0c4da2;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccssccssscccssccc" />
<path
d="m -1927.7708,145.18332 c -226.9823,1.42857 -412.3662,166.7661 -412.3662,383.05133 0,216.28523 204.6469,402.07109 452.3662,396.47808 l 240.7127,0.6783 0,-189.50724 -45.4634,0 c -14.2837,35.73115 -80.9968,70.68064 -129.3669,70.68064 -25.4902,0 -89.6606,-3.46506 -113.3988,-11.7792 -41.9106,-14.67892 -101.712,-35.75045 -153.7082,-123.14142 -13.9338,-30.6351 -53.1686,-105.28898 -44.4023,-214.19078 4.2456,-65.63495 45.9366,-147.56776 120.7486,-184.67165 32.6212,-16.17886 65.4607,-18.83348 123.1208,-13.60101 41.3957,3.75653 82.5276,32.86328 96.8886,67.79717 11.107,27.01833 7.9153,59.94169 -5.16,78.69532 -0.9328,1.33796 -0.9528,2.52293 -0.7595,3.80017 0.1471,0.97218 1.408,2.592 1.408,2.592 l 22.7845,17.79932 c 0,0 6.4866,4.50696 14.0636,4.30516 4.4004,-0.11719 12.2667,-4.89104 12.2667,-4.89104 l 130.1212,-136.55317 c -80.4452,-108.54703 -223.4056,-147.54198 -309.8556,-147.54198 z"
id="path3950"
style="fill:#ffcb08;fill-opacity:1;stroke:none"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 438 438" 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;"><rect id="Artboard1" x="0" y="0" width="437.5" height="437.5" style="fill:none;"/><g id="layer101"><path d="M80.861,420.364c-4.353,-1.171 -8.1,-4.433 -10.133,-8.799l-1.102,-2.397l0.27,-99.121c0.291,-94.079 0.36,-100.573 1.396,-103.303c0.216,-0.469 -1.105,-1.372 -5.198,-3.524c-25.794,-13.562 -44.713,-37.051 -52.206,-64.809c-2.864,-10.522 -3.359,-14.797 -3.306,-28.127c0.096,-13.244 0.362,-15.721 3.139,-26.22c4.859,-18.438 14.538,-34.891 28.434,-48.251c15.784,-15.189 35.348,-24.767 57.621,-28.224c6.712,-1.041 23.289,-0.974 30.121,0.164c17.719,2.848 33.842,9.706 47.898,20.401c5.197,3.951 12.219,10.687 16.429,15.746c1.786,2.143 3.359,3.944 3.53,4.03c0.17,0.043 1.457,-1.276 2.831,-2.98c1.374,-1.703 4.464,-5.023 6.823,-7.364c16,-15.872 36.506,-26.044 59.249,-29.328c6.883,-0.998 22.306,-0.936 29.095,0.117c24.21,3.771 45.357,14.964 61.863,32.804c14.591,15.824 23.698,35.557 26.684,57.999c0.705,5.216 0.645,20.34 -0.103,25.635c-3.387,24.211 -13.551,44.465 -30.708,61.272c-8.322,8.17 -17.577,14.713 -27.465,19.501c-1.841,0.89 -2.398,1.358 -2.187,1.871c1.355,3.125 1.433,5.048 1.331,30.426c-0.056,14.056 -0.017,25.549 0.111,25.55c0.128,0 18.029,-10.353 39.741,-22.998c21.712,-12.602 40.555,-23.464 41.839,-24.057c1.969,-0.932 2.952,-1.099 6.199,-1.086c3.29,0.013 4.229,0.188 6.276,1.178c3.241,1.509 6.433,4.598 7.874,7.594l1.186,2.398l-0.204,83.099c-0.171,63.745 -0.335,83.526 -0.726,84.977c-1.733,6.188 -8.375,11.117 -14.998,11.091c-4.742,-0.019 -4.742,-0.019 -46.94,-25.012l-40.62,-24.046l-0.32,26.574c-0.309,23.754 -0.407,26.83 -1.054,28.451c-1.899,4.649 -5.458,7.967 -10.164,9.444c-2.695,0.843 -3.763,0.839 -116.64,0.344c-88.824,-0.356 -114.33,-0.586 -115.866,-1.02Zm140.434,-223.059c-0.256,-0.215 -1.661,-1.331 -3.195,-2.448c-6.858,-5.197 -12.604,-10.732 -18.726,-18.148c-1.021,-1.243 -2,-2.187 -2.128,-2.145c-0.171,0.085 -1.759,1.873 -3.562,4.002c-4.25,5.067 -10.769,11.151 -16.426,15.444l-4.585,3.442l24.524,0.098c13.458,0.054 24.31,-0.073 24.098,-0.245Zm-94.961,-25.46c25.4,-5.495 44.191,-24.646 49.163,-50.005c1.571,-8.239 1.017,-19.307 -1.512,-27.991c-5.519,-19.291 -20.708,-35.245 -39.61,-41.602c-7.594,-2.551 -10.669,-3.033 -19.726,-3.069c-8.673,-0.035 -11.751,0.38 -18.767,2.573c-19.293,5.99 -35.166,22.119 -40.926,41.621c-2.598,8.663 -3.241,19.726 -1.736,27.978c2.552,13.511 8.999,25.415 18.788,34.683c9.024,8.495 19.726,13.836 32.534,16.194c4.355,0.787 17.43,0.583 21.792,-0.382Zm167.009,0.498c5.987,-1.343 8.683,-2.315 14.804,-5.324c17.081,-8.391 28.977,-23.639 33.369,-42.847c0.87,-3.756 1.006,-5.636 1.033,-12.344c0.026,-6.707 -0.094,-8.588 -0.934,-12.351c-5.454,-24.845 -23.837,-43.29 -48.596,-48.773c-5.165,-1.174 -18.751,-1.228 -23.925,-0.096c-25.999,5.536 -45.305,25.454 -49.553,51.114c-0.831,4.91 -0.869,14.31 -0.077,19.226c4.125,26.164 24.251,46.796 50.422,51.686c6.233,1.178 17.642,1.01 23.457,-0.291Z" style="fill:#fff;fill-rule:nonzero;"/></g></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1220.8 227.9" style="enable-background:new 0 0 1220.8 227.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#0D253E;}
.st1{fill:#008AFB;}
</style>
<title>CoinTracking light</title>
<g id="Layer_2_1_">
<g id="Layer_1-2">
<path class="st0" d="M198.1,167c-30.2,0-54.7-24.5-54.7-54.7s24.5-54.7,54.7-54.7s54.7,24.5,54.7,54.7l0,0 C252.8,142.5,228.3,167,198.1,167z M198.1,81.6c-17,0-30.7,13.7-30.7,30.7s13.7,30.7,30.7,30.7s30.7-13.7,30.7-30.7l0,0 C228.8,95.4,215,81.6,198.1,81.6z"/>
<path class="st0" d="M292.2,59.5h-23.6v107.9h23.6V59.5z"/>
<path class="st0" d="M339.5,167.4h-23.8V59.5h23.8v16.2c6.2-12.5,21-18.5,33-18.5c26.1,0,41.1,16.9,41.1,47.3v62.8h-23.8v-60.1 c0-17.1-8.8-26.8-22.6-26.8c-14.1,0-27.7,7.6-27.7,28.9V167.4z"/>
<path class="st1" d="M390.6,8.2h151.7v22.9h-65.9v136.3h-25V31.1h-60.9V8.2H390.6z"/>
<path class="st1" d="M540.3,167.4h-23.8V59.5h23.8V79c7.4-13.5,15.4-19.5,29.6-21.8c7.5-1.2,15.7,1.8,19.2,4.2l-3.9,22 c-4.9-2.5-10.4-3.8-15.9-3.7c-20.3,0-28.9,20.3-28.9,49L540.3,167.4L540.3,167.4z"/>
<path class="st1" d="M680.7,151.9c-7.2,11.8-22.9,17.8-36.3,17.8c-29.1,0-54.8-21.9-54.8-56.4s25.6-56.1,54.8-56.1 c12.9,0,28.9,5.3,36.3,17.5V59.5h23.6v107.9h-23.6V151.9z M647.2,146.6c17.6,0,33.3-12.2,33.3-33.5s-17.1-32.8-33.3-32.8 c-18,0-33,12.9-33,32.8S629.2,146.6,647.2,146.6L647.2,146.6z"/>
<path class="st1" d="M778.4,57.2c17.1,0,32.6,6.7,42.7,18.7l-18.5,14.8c-5.8-6.7-14.8-10.4-24.3-10.4c-18,0-34,12.7-34,32.8 s15.9,33.7,34,33.7c9.5,0,18.5-3.9,24.3-10.6l18.7,14.6c-10.2,12-25.6,18.9-43,18.9c-31,0-57.5-22.4-57.5-56.6 S747.4,57.2,778.4,57.2z"/>
<path class="st1" d="M860.3,117.2v50.1h-23.6V0.8h23.6V95l34.2-35.6h31.9l-46,46.9l56.4,61h-30.5L860.3,117.2z"/>
<path class="st1" d="M967.4,59.5h-23.6v107.9h23.6V59.5z"/>
<path class="st1" d="M1014.7,167.4h-23.8V59.5h23.8v16.2c6.2-12.5,21-18.5,33-18.5c26.1,0,41.1,16.9,41.1,47.3v62.8H1065v-60.1 c0-17.1-8.8-26.8-22.6-26.8c-14.1,0-27.7,7.6-27.7,28.9V167.4z"/>
<path class="st1" d="M1220.2,111.5c0-12.3-4.5-24.2-12.5-33.6l13-17.1l-19.6-13l-11.9,15.7c-8.3-4.1-17.5-6.2-26.8-6.2 c-31.9,0-57.8,24.4-57.8,54.3s25.9,54.3,57.8,54.3c20.2,0,34.2,10.2,34.2,19.3s-14.1,19.3-34.2,19.3s-34.2-10.2-34.2-19.3h-23.6 c0,24,25.4,42.9,57.8,42.9s57.8-18.8,57.8-42.9c0-13.2-7.7-24.8-19.9-32.6C1212.5,142.5,1220.2,127.8,1220.2,111.5z M1128.2,111.5 c0-16.9,15.4-30.7,34.2-30.7s34.2,13.8,34.2,30.7s-15.4,30.7-34.2,30.7S1128.2,128.4,1128.2,111.5L1128.2,111.5z"/>
<path class="st0" d="M81.4,170.5C36.4,170.5,0,134,0,89c0-21.6,8.6-42.3,23.9-57.6c31.8-31.8,83.4-31.8,115.2,0l0,0l-17.7,17.7 C99.3,27,63.6,27,41.5,49.1s-22.1,57.8,0,79.9s57.8,22.1,79.9,0l17.7,17.7C123.8,162,103.1,170.6,81.4,170.5z"/>
<circle class="st0" cx="280.7" cy="15.5" r="15.5"/>
<circle class="st1" cx="954.7" cy="15.5" r="15.5"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,4 @@
<svg width="76" height="28" viewBox="0 0 76 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.6137 0.263554V24.2528C3.6137 24.3057 3.59223 24.3565 3.55413 24.3932L0.140163 27.6896C0.0876965 27.7404 0 27.703 0 27.6301V0.263554C0 0.217915 0.0370442 0.180891 0.0827069 0.180891H3.53099C3.57666 0.180891 3.6137 0.217915 3.6137 0.263554ZM12.9151 7.14572C12.9151 4.77676 14.8577 3.33976 17.4613 3.33976C19.7149 3.33976 21.3857 4.27186 23.173 5.94205C23.445 6.21361 23.5321 6.36292 23.8042 6.05236L25.4188 4.31055C25.6908 4 25.5433 3.92232 25.2713 3.65076C23.3283 1.39816 20.4529 0 17.4223 0C12.9538 0 9.41785 2.91284 9.41785 7.10703C9.41785 15.8838 22.9397 14.0583 22.9397 20.1554C22.9397 22.6408 20.764 24.5827 17.5388 24.5827C14.4361 24.5827 12.8017 23.1551 11.0921 21.524C10.8201 21.2522 10.7614 21.1884 10.5283 21.4216L8.68301 23.1634C8.411 23.3966 8.43746 23.4164 8.63175 23.7269C10.3993 26.1087 13.6923 27.9612 17.539 27.9612C22.3572 27.9612 26.5147 24.7768 26.5147 20.3107C26.5147 11.0679 12.9153 13.1263 12.9153 7.14557L12.9151 7.14572ZM44.5835 3.53395C47.3423 3.53395 49.596 4.58257 51.4999 6.17492C51.5444 6.213 51.6963 6.33632 51.743 6.37576C51.9289 6.53262 51.9644 6.53973 52.1883 6.30851C52.2428 6.25229 52.4023 6.08032 52.4023 6.08032L54.0336 4.29771C54.2087 4.09279 54.1792 4.07768 54.0528 3.94545C54.0011 3.89134 53.9102 3.80702 53.8311 3.72813C51.3835 1.55367 48.2361 0 44.5835 0C36.8514 0 30.8288 6.21361 30.8288 14.0196C30.8288 21.8255 36.8514 28 44.5835 28C48.2361 28 51.3906 26.3504 53.8384 24.1369C54.1104 23.9037 54.2128 23.8197 53.9409 23.5477L52.278 21.729C52.006 21.4571 51.9349 21.5213 51.6629 21.7545C49.759 23.3466 47.3422 24.4659 44.5834 24.4659C39.0271 24.4659 34.5199 19.9612 34.5199 14.0194C34.5199 8.03869 39.0272 3.53395 44.5835 3.53395ZM66.7904 0.0562167C63.2934 0.0562167 60.5212 1.59885 58.8115 3.73463C58.7651 3.78873 58.6609 3.93985 58.6299 3.98821C58.505 4.18286 58.541 4.19736 58.7175 4.39382C59.1585 4.88481 60.5292 6.43666 60.5292 6.43666C60.5868 6.49756 60.6405 6.49998 60.6904 6.45585C60.7448 6.4078 60.863 6.29536 60.9279 6.23174C62.0159 5.10544 63.8762 3.24107 66.7514 3.24107C69.9763 3.24107 71.9191 5.26049 71.9191 8.21187C71.9191 12.3999 69.5179 14.3919 64.1713 18.8858C62.6162 20.1928 59.7455 22.7114 59.029 23.3411C58.9234 23.4338 58.8637 23.5669 58.8637 23.7071V27.4699C58.8637 27.6378 59.0612 27.7277 59.1874 27.6169C60.6628 26.3236 66.7627 20.9799 68.7448 19.2968C73.8769 14.9387 75.2608 11.9788 75.2608 8.17288C75.2608 3.55163 71.9193 0.0563678 66.7902 0.0563678L66.7904 0.0562167Z" fill="black"/>
<path d="M75.4003 24.6003H66.7791C66.6688 24.6003 66.5794 24.6896 66.5794 24.7999V27.3522C66.5794 27.4624 66.6688 27.5518 66.7791 27.5518H75.4003C75.5106 27.5518 75.6 27.4624 75.6 27.3522V24.7999C75.6 24.6896 75.5106 24.6003 75.4003 24.6003Z" fill="#468145"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<svg width="320" height="280" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" version="1.1">
<g class="layer">
<title>Layer 1</title>
<g id="Layer1000">
<g id="Layer1002">
<g id="Layer1003">
<path d="m123.08,34.29c-66.43,0 -120.27,53.85 -120.27,120.27c0,66.43 53.85,120.27 120.27,120.27c66.47,0 120.32,-53.85 120.32,-120.27c0,-66.43 -53.85,-120.27 -120.32,-120.27zm0,215.67c-52.67,0 -95.36,-42.73 -95.36,-95.4c0,-52.67 42.68,-95.4 95.36,-95.4c52.72,0 95.4,42.73 95.4,95.4c0,52.67 -42.68,95.4 -95.4,95.4z" fill="#2a5e00" fill-rule="evenodd" id="path7"/>
<g id="Layer1004">
<g id="Layer1005">
<path d="m138.72,146.29l59.61,-41.47l7.78,33.7l-67.39,7.78z" fill="#2a5e00" fill-rule="evenodd" id="path8"/>
<path d="m110.88,146.29l-59.61,-41.47l-7.78,33.7l67.39,7.78z" fill="#2a5e00" fill-rule="evenodd" id="path9"/>
</g>
<path d="m43.95,192.02l74.62,49.75l87.12,-78.8l-161.75,29.05z" fill="#2a5e00" fill-rule="evenodd" id="path10"/>
</g>
<path d="m94.24,59.29l-30.48,-55.1l54.26,33.24l-23.79,21.86z" fill="#2a5e00" fill-rule="evenodd" id="path11"/>
<path d="m202.64,78.1l30.43,-55.1l-54.22,33.24l23.79,21.86z" fill="#2a5e00" fill-rule="evenodd" id="path12"/>
</g>
<path d="m275.63,274.67l29.35,0l0,-240.76l-29.35,0l0,240.76z" fill="#2a5e00" fill-rule="evenodd" id="path13"/>
<path d="m317.94,125.93c0,15.3 -12.33,27.63 -27.63,27.63c-15.26,0 -27.63,-12.33 -27.63,-27.63c0,-15.26 12.37,-27.63 27.63,-27.63c15.3,0 27.63,12.37 27.63,27.63z" fill="#2a5e00" fill-rule="evenodd" id="path14"/>
<path d="m288.84,33.91l-41.76,0l16.76,45.99l23.58,0l1.42,-45.99z" fill="#2a5e00" fill-rule="evenodd" id="path15"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect x="20" y="10" width="10" height="80" rx="5" fill="#E61E25"/>
<rect x="50" y="10" width="10" height="80" rx="5" fill="#E61E25"/>
</svg>

After

Width:  |  Height:  |  Size: 207 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 557 557" 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;"><rect id="Artboard1" x="0" y="0" width="556.25" height="556.25" style="fill:none;"/><g><path d="M45.455,412.973c-8.755,-1.966 -14.046,-4.401 -21.21,-9.692c-9.88,-7.304 -16.341,-17.418 -19.9,-31.231c-0.655,-2.481 -0.749,-13.157 -0.889,-90.601c-0.141,-62.086 -0.047,-89.102 0.328,-92.333c2.013,-17.746 12.969,-33.384 28.795,-41.251c8.896,-4.401 14.609,-5.478 29.545,-5.478l10.956,0l0,109.096l121.27,0l0,-109.189l12.97,0.187c12.267,0.187 13.297,0.281 17.699,1.451c18.682,4.964 32.963,19.432 37.832,38.348l1.498,5.759l0,180.266l-1.451,5.618c-3.886,14.984 -12.642,26.408 -25.893,33.712c-4.495,2.482 -8.849,4.074 -14.702,5.338c-3.933,0.843 -6.087,0.983 -16.247,0.983l-11.706,0l0,-107.223l-121.27,0l0,107.223l-11.799,-0.046c-9.879,-0.047 -12.501,-0.188 -15.826,-0.937Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/><path d="M272.625,413.956l0,-271.569l118.226,0.094l118.226,0.14l4.449,1.218c8.943,2.481 16.668,6.883 23.177,13.11c8.053,7.726 12.829,16.294 15.17,27.204c0.983,4.541 0.983,4.963 0.983,94.112l0,89.571l-1.123,4.917c-2.342,10.254 -6.275,17.558 -13.485,25.097c-7.679,8.006 -16.294,12.782 -27.157,15.123l-4.589,0.983l-233.877,0Zm215.148,-61.805l0,-147.958l-150.767,0l0,147.958l150.767,0Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/></g><defs><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.66288e-14,271.569,-271.569,1.66288e-14,269.5,142.387)"><stop offset="0" style="stop-color:#decc84;stop-opacity:1"/><stop offset="0.49" style="stop-color:#e1b821;stop-opacity:1"/><stop offset="1" style="stop-color:#e2b201;stop-opacity:1"/></linearGradient><linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.66288e-14,271.569,-271.569,1.66288e-14,272.625,142.387)"><stop offset="0" style="stop-color:#decc84;stop-opacity:1"/><stop offset="0.49" style="stop-color:#e1b821;stop-opacity:1"/><stop offset="1" style="stop-color:#e2b201;stop-opacity:1"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="katman_1" xmlns="http://www.w3.org/2000/svg" baseProfile="tiny" version="1.2" viewBox="0 0 295.13 303">
<!-- Generator: Adobe Illustrator 29.6.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 207) -->
<g id="Logo_2ColorWhite">
<path d="M453,42.76h-59.41v218.34h32.58v-76h26.83c18.81,0,26.83,5.13,26.83,15.81v60.2h32.59v-60.21c0-18.45-8.75-27.41-15.75-31.17,7-3.85,15.75-10.31,15.75-28.75v-52.07c0-21.05-10.31-46.15-59.42-46.15ZM479.83,140.98c0,10.67-8,13.18-26.83,13.18h-26.83v-80.47h26.83c18.81,0,26.83,4.54,26.83,15.22v52.07Z" fill="#fff"/>
<path d="M607.59,39.5c-39.84,0-62.73,18-62.73,49.41v172.19h32.58v-76h60.31v76h32.58V88.91c-.01-31.41-22.88-49.41-62.74-49.41ZM637.75,154.15h-60.3v-65.24c0-13,9-18.54,30.15-18.54s30.15,5.54,30.15,18.54v65.24Z" fill="#fff"/>
<polygon points="702.87 73.69 716.14 73.69 716.14 230.17 702.87 230.17 702.87 261.1 761.99 261.1 761.99 230.17 748.72 230.17 748.72 73.69 761.99 73.69 761.99 42.76 702.87 42.76 702.87 73.69" fill="#fff"/>
<path d="M857.66,42.76h-62.73v218.34h62.73c39.87,0,62.74-18,62.74-49.46v-119.42c0-31.42-22.87-49.46-62.74-49.46ZM887.8,211.64c0,13-9,18.53-30.14,18.53h-30.14V73.69h30.14c21.14,0,30.14,5.54,30.14,18.53v119.42Z" fill="#fff"/>
<path d="M953.52,92.22v119.42c0,31.42,22.87,49.46,62.74,49.46h49.49v-30.93h-49.45c-21.14,0-30.16-5.54-30.16-18.53v-40.65h73v-30.93h-73v-47.84c0-13,9-18.53,30.16-18.53h49.45v-30.93h-49.45c-39.91,0-62.78,18.04-62.78,49.46Z" fill="#fff"/>
<path d="M1158.23,42.81h-59.42v218.34h32.6v-76.36h26.82c18.81,0,26.84,4.55,26.84,15.22v61.14h32.58v-61.14c0-18.44-8.75-26.82-15.74-30.57,7-3.85,15.74-12.35,15.74-30.79v-49.69c0-21.05-10.32-46.15-59.42-46.15ZM1185.07,138.65c0,10.67-8,15.22-26.84,15.22h-26.82v-80.13h26.82c18.81,0,26.84,4.54,26.84,15.22v49.69Z" fill="#fff"/>
<rect x="1250.28" y="201.98" width="32.58" height="59.12" fill="#fff"/>
<polygon points="1315.82 73.69 1329.08 73.69 1329.08 230.17 1315.82 230.17 1315.82 261.1 1374.93 261.1 1374.93 230.17 1361.67 230.17 1361.67 73.69 1374.93 73.69 1374.93 42.76 1315.82 42.76 1315.82 73.69" fill="#fff"/>
<path d="M1470.75,39.5c-39.85,0-62.72,18-62.72,49.46v126c0,31.43,22.87,49.45,62.72,49.45s62.74-18,62.74-49.45v-126c-.03-31.46-22.9-49.46-62.74-49.46ZM1500.9,215.01c0,13-9,18.53-30.15,18.53s-30.14-5.54-30.14-18.53v-126c0-13,9-18.54,30.14-18.54s30.15,5.54,30.15,18.54v126Z" fill="#fff"/>
<path d="M292.75,118.28c1.83-2.01,2.65-4.74,2.23-7.43-.21-.81-.41-1.63-.63-2.44-.97-2.59-3.07-4.58-5.7-5.42l-28-8.45c-6.93-2.1-11.04-9.23-9.39-16.28l6.67-28.47c.56-2.32.21-4.77-1-6.83-.81-1.37-1.96-2.51-3.33-3.32-2.06-1.21-4.5-1.57-6.82-1l-28.47,6.67c-7.05,1.66-14.18-2.46-16.27-9.39l-8.46-28c-.83-2.57-2.76-4.64-5.28-5.63-.91-.25-1.83-.46-2.74-.7-2.63-.37-5.3.45-7.27,2.23l-21.32,20c-5.28,4.96-13.51,4.96-18.79,0L116.86,3.82c-1.97-1.78-4.64-2.6-7.27-2.23-.91.24-1.83.45-2.73.7-2.52.99-4.46,3.05-5.29,5.63l-8.46,28c-2.09,6.94-9.22,11.05-16.27,9.39l-28.47-6.71c-2.32-.56-4.77-.21-6.83,1-1.37.81-2.52,1.95-3.33,3.32-1.21,2.06-1.56,4.51-1,6.83l6.67,28.48c1.65,7.06-2.48,14.19-9.43,16.27l-28,8.45c-2.64.85-4.74,2.86-5.7,5.46-.22.81-.42,1.63-.63,2.44-.42,2.69.4,5.42,2.23,7.43l20,21.32c4.96,5.28,4.96,13.51,0,18.79l-20,21.32c-1.86,2.04-2.69,4.82-2.23,7.55.2.74.38,1.49.58,2.23.96,2.63,3.08,4.67,5.75,5.51l28,8.46c6.93,2.09,11.05,9.22,9.39,16.27l-6.67,28.47c-.6,2.56-.07,5.25,1.46,7.39,2.17,3.13,6.02,4.64,9.74,3.8l47.08-5.1c2.39-.24,4.14-2.36,3.93-4.76-1.57-17.27-9-81.84-11.73-105.94-.66-5.76,1.5-11.49,5.8-15.39l46.11-42c4.53-4.13,11.47-4.13,16,0l46.05,42c4.29,3.89,6.45,9.61,5.79,15.37-2.75,24.08-10.09,88.68-11.65,106-.21,2.39,1.54,4.51,3.93,4.75l47.09,5.1c2.58.61,5.29.06,7.43-1.49.9-.63,1.67-1.4,2.3-2.3,1.53-2.14,2.06-4.84,1.46-7.4l-6.67-28.47c-1.65-7.05,2.46-14.17,9.39-16.26l28-8.46c2.67-.84,4.79-2.88,5.75-5.51.2-.74.38-1.49.58-2.24.45-2.72-.37-5.5-2.23-7.54l-20-21.32c-4.96-5.28-4.96-13.51,0-18.79l19.97-21.36Z" fill="#e5a024"/>
<path d="M152.13,125.06c-2.15-2.52-5.94-2.81-8.46-.66-.24.2-.46.42-.66.66l-15.81,18.18c-3.17,3.64-4.78,8.38-4.49,13.2l8,135.87c.33,4.92,4.32,8.8,9.25,9,2.5.13,5.02.19,7.56.2,2.54,0,5.07-.06,7.6-.2,4.93-.19,8.93-4.07,9.25-9l8.11-135.81c.28-4.83-1.34-9.57-4.51-13.22l-15.84-18.22Z" fill="#808080"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-376.452 18.166 399.284 251.868"><path d="M195.1 220c2.1 0 4.1-.5 6-1.6l21.9-12.6c4.4-2.5 9.5-3.6 14.6-3 26.6 3.1 45.2 8.1 50.7 9.7 1.1.3 2.4-.1 3.1-1 .9-1.1 2-2.9 2.9-5.5.8-2.5.9-4.6.8-6.1-.1-1.2-.9-2.3-2.1-2.6-8.6-2.5-46.7-12.8-97.9-12.8s-89.3 10.3-97.9 12.8c-1.2.3-2 1.4-2.1 2.6-.1 1.4 0 3.5.8 6.1.8 2.6 2 4.4 2.9 5.5.7.9 2 1.3 3.1 1 5.5-1.6 24.2-6.6 50.7-9.7 5.1-.6 10.2.5 14.6 3l21.9 12.6c1.9 1.1 4 1.6 6 1.6zM158.6 149.1c1.2 2.1 3.1 3.5 5.3 4.1 2.2.6 4.5.3 6.6-.9 2.1-1.2 3.5-3.1 4.1-5.3.6-2.2.3-4.5-.9-6.6L154 106.3c-.6-1.1-1.9-1.5-3.1-1.4-1.6.1-3.8.9-6.4 2.4-2.6 1.5-4.4 3-5.3 4.3-.7 1-.9 2.3-.3 3.4l19.7 34.1zM140.6 173.5c2.1 1.2 4.5 1.4 6.6.9 2.2-.6 4.1-2 5.3-4.1 1.2-2.1 1.4-4.5.9-6.6-.5-2.1-2-4.1-4.1-5.3l-34.1-19.7c-1.1-.6-2.4-.4-3.4.3-1.3.9-2.8 2.7-4.3 5.3-1.5 2.6-2.3 4.8-2.4 6.4-.1 1.3.4 2.5 1.4 3.1l34.1 19.7zM203.8 137c0 2.4-1 4.6-2.5 6.2-1.6 1.6-3.7 2.5-6.2 2.5-2.4 0-4.6-1-6.2-2.5-1.6-1.6-2.5-3.7-2.5-6.2V97.7c0-1.3.8-2.3 2-2.8 1.4-.7 3.7-1.1 6.7-1.1s5.3.4 6.7 1.1c1.1.6 2 1.5 2 2.8V137zM231.6 149.1c-1.2 2.1-3.1 3.5-5.3 4.1-2.2.6-4.5.3-6.6-.9-2.1-1.2-3.5-3.1-4.1-5.3-.6-2.2-.3-4.5.9-6.6l19.7-34.1c.6-1.1 1.9-1.5 3.1-1.4 1.6.1 3.8.9 6.4 2.4 2.6 1.5 4.4 3 5.3 4.3.7 1 .9 2.3.3 3.4l-19.7 34.1zM249.6 173.5c-2.1 1.2-4.5 1.4-6.6.9-2.2-.6-4.1-2-5.3-4.1-1.2-2.1-1.4-4.5-.9-6.6.6-2.2 2-4.1 4.1-5.3l34.1-19.7c1.1-.6 2.4-.4 3.4.3 1.3.9 2.8 2.7 4.3 5.3 1.5 2.6 2.3 4.8 2.4 6.4.1 1.3-.4 2.5-1.4 3.1l-34.1 19.7z" class="st0" style="fill:#0770e3" transform="translate(-566.187 -169.038) scale(1.99578)"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,170 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="451.00259" height="507.332" viewBox="0 0 451.00259 507.332" id="svg2">
<defs id="defs4"/>
<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"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-197.35585,-58.696183)" id="layer1">
<g transform="translate(28.601602,6.2831826)" id="g2986">
<g id="g2988">
<g id="g2990">
<path d="m 284.953,425.625 c -41.441,-0.008 -74.219,-15.391 -94.77,-44.48 -23.637,-33.461 -28.066,-83.176 -11.559,-129.75 21.262,-60.016 68.266,-89.355 68.742,-89.641 l 2.801,-1.703 4.555,-14.98 21.422,4.02 14.844,29.734 -0.773,5.273 c -0.738,4.98 -1.48,9.875 -2.215,14.695 l -0.191,1.238 c -5.277,34.695 -9.832,64.66 -6.102,82.488 2.242,10.711 7.199,17.898 15.895,22.906 2.984,-3.594 5.02,-5.305 7.535,-5.305 h 0.812 l 0.98,0.34 c 3.582,1.434 4.047,5.508 3.922,10.246 0.348,0.098 0.703,0.199 1.07,0.289 6.363,1.621 11.062,5.375 13.602,10.852 4.191,9.082 0.234,17.125 -3.254,24.215 -2.578,5.238 -6.379,12.953 -8.754,23.418 3.586,6.008 4.141,11.75 3.934,15.641 -0.297,5.516 -2.406,11.066 -5.996,15.848 1.102,4.875 0.484,9.473 -1.844,13.688 -5.285,9.566 -15.68,10.465 -19.094,10.754 -1.574,0.137 -3.34,0.215 -5.262,0.215 h -0.3 z" id="path2992" style="fill:#260859"/>
</g>
<g id="g2994">
<path d="m 506.766,425.695 c -6.77,0 -12.57,-2.73 -16.773,-7.902 -8.246,-10.133 -6.812,-26.621 -3.918,-41.938 -3.145,-2.297 -7.34,-5.594 -9.633,-10.934 l -5.355,-12.438 11.875,-6.527 c 24.914,-13.723 34.227,-39.723 27.668,-77.289 -2.957,-4.148 -7.086,-11.844 -10.824,-25.562 -2.727,-10.008 -13.16,-72.691 -7.508,-83.227 1.012,-1.898 5.035,-8.109 14.039,-8.109 5.695,0 19.23,3.664 28.004,12.398 0.246,-0.012 0.488,-0.016 0.734,-0.016 5.488,0 9.648,2.668 13.672,5.242 l 0.477,0.301 c 1.07,0.68 2.219,1.41 3.492,2.164 2.246,1.336 6.668,3.961 10.598,9.719 6.301,1.035 11.359,5.949 20.273,15.086 0.207,0.219 0.996,1.027 1.203,1.227 2.219,2.195 3.977,5.051 5.602,9.125 11.438,4.383 18.34,21.609 19.629,27.852 l 0.508,1.938 c 15.383,58.23 11.477,106.727 -11.297,140.25 -18.512,27.266 -48.637,43.574 -89.535,48.465 -1.045,0.117 -1.994,0.175 -2.931,0.175 l 0,0 z" id="path2996" style="fill:#260859"/>
</g>
</g>
<path d="M 382.699,555.371 C 362.824,548.375 188.613,484.344 188.613,390.375 l 0.012,-281.641 c 0,-25.367 21.531,-46.004 47.996,-46.004 16.855,0 32.289,8.32 40.957,21.902 31.453,-3.801 73.332,-11.934 99.66,-23.809 l 2.559,-1.129 15.438,-7.281 16.172,7.629 c 26.121,12.301 69,20.699 101.461,24.602 8.672,-13.59 24.102,-21.914 40.949,-21.914 26.473,0 48.008,20.551 48.008,45.812 l -0.027,281.832 c 0,94.301 -174.176,158.012 -194.039,164.965 l -12.523,4.406 -12.537,-4.374 z" id="path2998" style="fill:#260859"/>
<path d="M 389.637,535.469 C 371.207,528.989 209.688,469.871 209.688,390.375 L 209.7,108.734 c 0,-13.93 12.086,-24.93 26.922,-24.93 14.336,0 26.137,10.309 26.867,23.469 l 0.004,0.012 c 35.363,-3.055 88.648,-12.023 122.41,-27.25 l 2.426,-1.07 6.906,-3.254 7.176,3.387 c 33.441,15.754 87.988,25.031 124.539,28.188 h 0.004 c 0.73,-13.168 12.527,-23.48 26.863,-23.48 14.852,0 26.934,11.098 26.934,24.738 l -0.027,281.832 c 0,79.676 -161.52,138.625 -179.938,145.082 l -5.57,1.961 -5.579,-1.95 z" id="path3000" style="fill:#7c3a00"/>
<path d="m 395.156,112.82 -1.527,0.621 c -37.711,15.406 -92.113,24.406 -127.242,27.43 l -22.969,1.984 -0.008,130.859 H 395.156 V 112.82 z" id="path3002" style="fill:#ffef6f"/>
<path d="m 395.223,75.715 -6.895,3.25 -2.426,1.07 c -33.762,15.227 -87.047,24.195 -122.41,27.25 l -0.004,-0.012 c -0.73,-13.16 -12.531,-23.469 -26.867,-23.469 -14.836,0 -26.922,11 -26.922,24.93 l -0.012,281.641 c 0,79.496 161.52,138.613 179.949,145.094 l 5.578,1.949 0.008,-0.004 V 75.715 z" id="path3004" style="fill:#e8941a"/>
<g id="g3006">
<path d="m 553.816,100.664 c -5.395,0 -9.801,3.312 -10.035,7.539 l -0.941,17.375 -17.34,-1.5 c -38.246,-3.301 -94.871,-13.051 -130.277,-29.734 -0.773,0.363 -1.609,0.707 -2.402,1.062 0.016,-0.004 0.031,-0.012 0.043,-0.016 v 307.098 l 171.008,-126.707 0.02,-167.238 c -0.001,-4.27 -4.615,-7.879 -10.076,-7.879 z" id="path3008" style="fill:#e8941a"/>
</g>
<path d="M 392.863,397.402 V 95.391 c -35.527,16.031 -90.5,25.457 -127.926,28.688 l -17.336,1.5 -0.941,-17.367 c -0.234,-4.234 -4.645,-7.547 -10.039,-7.547 -5.766,0 -10.082,3.891 -10.09,7.219 l 0.027,0.852 -0.004,152.738 166.309,135.928 z" id="path3010" style="fill:#ffef6f"/>
<path d="m 525.5,124.078 c -38.246,-3.301 -94.871,-13.051 -130.277,-29.734 -0.492,0.23 -1.031,0.449 -1.527,0.676 v 41.531 l 30.055,-1.555 113.195,21.496 10.082,-13.633 -4.188,-17.281 -17.34,-1.5 z" id="path3012" style="fill:#e8941a"/>
<path d="m 393.695,95.02 c -35.492,16.262 -91.043,25.805 -128.758,29.059 l -17.336,1.5 -4.184,17.277 19.438,6.918 102.445,-11.754 28.395,-1.469 V 95.02 z" id="path3014" style="fill:#ffffff"/>
<path d="m 226.555,243.211 -0.008,147.652 c 0,55.215 105.336,106.918 168.656,129.176 63.324,-22.238 168.66,-73.918 168.66,-129.176 l 0.016,-147.652 H 226.555 z" id="path3016" style="fill:#ffd26c"/>
<path d="M 393.746,508.047 C 318.914,480.473 243.406,435.543 243.406,397.313 l 0.012,-254.457 22.969,-1.984 c 35.129,-3.023 89.531,-12.023 127.242,-27.43 l 1.594,-0.648 1.59,0.648 c 37.711,15.406 92.109,24.406 127.242,27.43 l 22.973,1.988 -0.023,254.453 c 0,38.266 -75.508,83.188 -150.344,110.734 l -1.457,0.535 -1.458,-0.535 z" id="path3018" style="fill:#ffffff"/>
<path d="m 524.055,140.871 c -35.133,-3.023 -89.531,-12.023 -127.242,-27.43 l -1.59,-0.648 -1.594,0.648 1.527,-0.621 v 160.895 h 151.859 l 0.012,-130.855 -22.972,-1.989 z" id="path3020" style="fill:#ffd26c"/>
<path d="m 395.156,112.82 -1.527,0.621 c -37.711,15.406 -92.113,24.406 -127.242,27.43 l -22.969,1.984 -0.008,130.859 H 395.156 V 112.82 z" id="path3022" style="fill:#ffef6f"/>
<linearGradient x1="395.21631" y1="132.92529" x2="395.21631" y2="491.23761" id="SVGID_1_" gradientUnits="userSpaceOnUse">
<stop id="stop3025" style="stop-color:#e8941a;stop-opacity:1" offset="0"/>
<stop id="stop3027" style="stop-color:#ffef6f;stop-opacity:1" offset="1"/>
</linearGradient>
<path d="M 395.203,494.371 C 315.765,464.609 256.051,422.691 256.051,396.586 l 0.012,-242.137 11.41,-0.984 c 34.82,-2.996 88.879,-11.863 127.75,-27.043 38.859,15.18 92.914,24.047 127.742,27.043 l 11.418,0.988 -0.023,242.133 c -10e-4,26.133 -59.715,68.051 -139.157,97.785 l 0,0 z" id="path3029" style="fill:url(#SVGID_1_)"/>
<path d="m 534.359,377.328 c 0,26.133 -59.715,68.051 -139.156,97.785 C 315.777,445.355 256.07,403.449 256.051,377.34 v 23.805 c 0,26.102 59.715,68.02 139.152,97.785 79.441,-29.734 139.156,-71.652 139.156,-97.785 l 0.023,-246.691 0,0 -0.023,222.874 z" id="path3031" style="fill:#260859"/>
<path d="m 395.156,126.445 c -38.867,15.164 -92.883,24.023 -127.684,27.02 l -11.41,0.984 v 16.746 l 10.133,-0.867 c 35.152,-2.996 89.707,-11.855 128.961,-27.02 v -16.863 z" id="path3033" style="fill:#a84d10"/>
<path d="m 522.965,153.465 c -34.828,-2.996 -88.883,-11.863 -127.742,-27.043 -0.223,0.086 -0.457,0.164 -0.68,0.25 0.199,-0.074 0.41,-0.148 0.613,-0.227 v 16.863 c 0.02,-0.008 0.043,-0.016 0.066,-0.023 39.25,15.18 93.844,24.047 129.023,27.043 l 10.137,0.871 v -16.746 l -11.417,-0.988 z" id="path3035" style="fill:#a84d10"/>
<path d="m 256.062,158.086 -0.012,238.5 c 0,7.613 5.105,16.57 14.262,26.176 1.164,0.109 2.312,0.242 3.492,0.328 0.074,1.215 0.168,2.344 0.277,3.438 23.133,22.137 66.586,47.148 118.852,66.977 l -0.059,-1.766 c -0.59,-18.352 -2.348,-35.594 -4.691,-46.121 -5.438,-24.406 -22.613,-48.82 -37.359,-62.367 -6.184,-15.457 -1.742,-25.371 4.391,-39.07 1.871,-4.168 3.992,-8.887 5.699,-13.855 5.145,-14.93 4.266,-38.211 -1.984,-53.98 -2.898,-9.637 -9.184,-16.973 -16.832,-19.625 -2.328,-0.777 -5.027,-1.312 -8.23,-1.625 -3.215,-10.938 -1.609,-22.059 -1.598,-22.148 l 1.754,-10.398 -9.758,-3.961 c -0.977,-0.398 -9.941,-3.902 -23.02,-3.902 -6.027,0 -12.105,0.785 -18.117,2.34 0.82,-5.617 1.695,-11.391 2.598,-17.309 0,0 1.664,-10.949 2.402,-15.922 l 0.676,-4.617 -15.496,-26.328 c 0,0 -3.242,0.398 -5.836,0.617 l -11.411,4.618 z" id="path3037" style="fill:#260859"/>
<path d="m 514.695,428.105 c 0.016,-1.758 0.035,-3.516 -0.082,-5.402 2.242,-0.328 4.438,-0.699 6.609,-1.102 8.461,-9.164 13.137,-17.707 13.137,-25.016 l -1.562,-226.52 c 0,0 2.516,-0.133 2.234,-0.102 -3.75,-10.566 -23.34,-16.086 -28.695,-16.086 -7.617,0 -11.059,4.895 -12.184,6.996 -5.09,9.496 4.488,69.965 7.688,81.676 0.309,1.141 0.621,2.191 0.938,3.234 l -1.672,8.418 c -14.316,-13.652 -32.395,-28.645 -42.766,-28.645 -0.656,0 -1.289,0.055 -1.898,0.156 -2.648,0.461 -4.789,1.961 -6.016,4.215 -1.777,3.258 -1.703,7.801 0.27,14.133 -5.043,-1.027 -11.129,-1.98 -16.34,-1.98 -6.387,0 -10.586,1.453 -12.836,4.434 -4.473,5.934 -2.328,15.238 6.367,27.66 2.562,3.668 5.789,7.285 8.969,10.848 0.66,0.746 1.328,1.492 1.992,2.242 -9.152,14.402 -11.535,36.027 -6.352,58.285 2.27,9.738 5.41,16.656 8.188,22.77 1.766,3.883 3.203,7.047 4.09,10.273 -21.77,18.578 -37.285,42.938 -42.648,67.016 -2.184,9.785 -3.836,25.16 -4.547,42.199 l -0.23,5.742 c 51.096,-19.35 93.811,-43.674 117.346,-65.444 z" id="path3039" style="fill:#260859"/>
<g id="g3041">
<path d="m 321.699,323.621 c -1.984,-4.289 -5.723,-7.242 -10.809,-8.539 -19.477,-4.91 -29.746,-14.688 -33.309,-31.699 -3.887,-18.574 0.723,-48.887 6.062,-83.988 l 0.188,-1.234 c 0.734,-4.816 1.477,-9.707 2.211,-14.672 l 0.582,-3.965 -13.316,-26.676 -15.652,-2.938 -3.922,12.906 -4.168,2.527 c -0.457,0.281 -46.105,28.566 -66.969,87.457 -16.059,45.312 -11.832,93.551 11.023,125.91 19.73,27.922 51.32,42.691 91.348,42.699 1.902,0.008 3.645,-0.066 5.184,-0.195 4.969,-0.43 12.004,-1.789 15.77,-8.598 2.121,-3.844 2.418,-7.98 0.891,-12.609 3.871,-4.461 6.141,-9.797 6.426,-15.113 0.195,-3.613 -0.395,-9.031 -4.211,-14.613 2.449,-11.852 6.652,-20.379 9.449,-26.062 3.375,-6.86 6.57,-13.344 3.222,-20.598 z" id="path3043" style="fill:#260859"/>
<g id="g3045">
<path d="m 199.93,259.562 c 14.34,-66.531 55.953,-77.508 55.953,-77.508 l -1.012,36.066 0.816,76.336 c 0,0 -2.602,60.848 30.262,73.891 32.863,13.039 6.941,42.215 -36.23,31.109 C 208.5,389.602 184.465,330.16 199.93,259.562 z" id="path3047" style="fill:#ffffff"/>
<g id="g3049">
<path d="m 228.879,317.406 c -10.066,-45.742 11.844,-91.457 22.941,-105.285 l 13.945,-45.91 7.914,15.453 c -4.523,30.586 -9.375,58.598 -9.957,80.766 -0.121,4.418 0.922,20.125 1.629,23.516 3.336,15.93 11.039,27.066 24.359,34.395 2.242,1.234 13.094,-16.984 15.656,-15.965 3.352,1.344 -1.461,21.836 2.469,22.828 9.133,2.305 -6.898,13.684 -11.938,45.445 -21.198,1.91 -56.975,-9.61 -67.018,-55.243 z" id="path3051" style="fill:#f26531"/>
</g>
<path d="m 194.371,256.984 c 19.648,-55.469 61.68,-80.957 61.68,-80.957 l -0.434,15.422 c -15.742,12.766 -62.27,71.184 -44.375,141.27 13.469,48.656 52.797,63.223 80.523,57.949 -4.102,9.059 14.18,18.254 -6.789,18.254 -91.675,-0.02 -114.8,-83.645 -90.605,-151.938 z" id="path3053" style="fill:#7ac143"/>
</g>
<polygon points="213.434,210.594 205.309,222.129 239.594,232.855 " id="polygon3055" style="fill:#260859"/>
<polygon points="191.312,240.535 186.168,257.379 230.988,256.758 " id="polygon3057" style="fill:#260859"/>
<polygon points="183.648,279.039 183.082,296.645 226.18,284.332 " id="polygon3059" style="fill:#260859"/>
<polygon points="180.789,326.434 186,346.004 229.383,318.148 " id="polygon3061" style="fill:#260859"/>
<polygon points="201.324,373.969 214.367,389.453 241.773,345.785 " id="polygon3063" style="fill:#260859"/>
<polygon points="241.258,405.695 259.137,409.742 267.953,367.039 " id="polygon3065" style="fill:#260859"/>
</g>
<path d="m 324.59,268.086 c 0.148,0.016 0.281,0.008 0.438,0.023 -9.18,-17.043 -5.715,-37.352 -5.715,-37.352 0,0 -16.691,-6.77 -37.332,0.254 -24.391,8.301 -27.098,26.691 -24.246,32.094 2.688,5.09 9.637,6.027 15.934,2.34 3.547,9.219 8,15.848 18.32,24.191 l 34.66,-20.137 c -10e-4,10e-4 -0.837,-0.394 -2.059,-1.413 z" id="path3067" style="fill:#fff200"/>
<path d="m 274.98,347.574 c -5.398,0 -8.523,-1.82 -9.355,-2.379 l -9.891,-6.449 12.168,-6.41 c 5.203,-1.285 10.617,-7.621 15.832,-14.719 -1.098,0.18 -2.164,0.363 -3.195,0.535 -6.023,1.031 -11.086,1.895 -14.895,1.895 -0.688,0 -1.328,-0.031 -1.918,-0.082 -0.203,-0.02 -0.395,-0.027 -0.59,-0.027 -4.445,0 -10.258,3.727 -12.125,5.164 l -6.609,5.445 -4.531,-8.77 c -0.234,-0.688 -2.207,-6.969 1.93,-14.664 3.105,-5.758 12.41,-13.875 23.41,-13.875 1.82,0 3.633,0.219 5.387,0.652 0.594,0.148 1.184,0.223 1.734,0.223 2.828,0 5.781,-1.98 8.781,-5.883 0.738,-1.004 1.242,-1.891 1.648,-2.598 0.473,-0.82 0.875,-1.5 1.395,-2.191 1.762,-2.109 4.008,-3.098 6.93,-3.098 5.004,0 11.262,2.648 13.82,10.074 l 0,0 c 0.008,0 0.719,1.465 4.141,4.703 3.637,0.766 6.613,2.043 8.863,3.809 3.297,2.598 5.059,6.297 4.953,10.43 -0.207,8.285 -7.871,17.668 -23.434,28.684 -11.148,7.875 -19.449,9.531 -24.449,9.531 l 0,0 z" id="path3069" style="fill:#260859"/>
<path d="m 285.051,298.215 c -8.113,-6.562 -13.383,-12.48 -17.387,-19.559 -0.559,0.035 -1.121,0.059 -1.676,0.059 -7.941,0 -14.508,-3.812 -18.008,-10.461 -2.953,-5.582 -2.887,-13.828 0.176,-21.527 2.715,-6.844 10.266,-19.348 30.266,-26.16 7.363,-2.504 15.043,-3.773 22.824,-3.773 12.699,0 21.285,3.363 22.227,3.746 l 8.191,3.324 -1.473,8.734 c -0.02,0.137 -2.246,15.293 3.441,28.035 l 16.324,8.004 -17.734,10.391 -41.266,23.961 -5.905,-4.774 z" id="path3071" style="fill:#260859"/>
<path d="m 313.297,327.484 c -4.66,0 -5.777,-4.406 -6.758,-8.293 -0.754,-2.98 -1.535,-6.062 -3.594,-8.117 -7.707,-7.703 -18.688,-12.191 -18.801,-12.238 l -1.008,-0.406 -0.25,-1.062 c -1.91,-8.031 -0.074,-15.875 5.312,-22.695 8.305,-10.508 25,-17.848 40.602,-17.848 4.613,0 8.863,0.637 12.629,1.895 11.438,3.969 18.797,19.078 16.785,34.398 -2.59,19.672 -19.195,32.516 -44.418,34.352 l -0.499,0.014 z" id="path3073" style="fill:#260859"/>
<path d="m 390.77,491.805 c -0.586,-18.211 -2.32,-35.305 -4.645,-45.73 -5.391,-24.207 -22.441,-48.285 -37.074,-61.586 -6.785,-16.547 -1.922,-27.41 4.227,-41.141 1.859,-4.137 3.961,-8.82 5.645,-13.711 6.371,-18.496 3.301,-52.016 -9.367,-64.766 l -0.875,-0.883 -17.277,4.875 -0.285,1.207 c -3.629,15.34 -12.52,35.328 -19.969,40.625 l -5.223,3.711 0.672,6.355 c 1.371,13.16 -5.613,28.898 -23.094,64.328 -6.949,14.074 -9.164,28.023 -7.043,43.664 23.328,21.27 64.762,44.902 114.336,63.93 l -0.028,-0.878 z" id="path3075" style="fill:#260859"/>
<path d="m 286.379,296.578 c -8.293,-6.707 -13.605,-12.801 -17.535,-20.16 -0.957,0.125 -1.914,0.188 -2.855,0.188 -7.129,0 -13.016,-3.398 -16.145,-9.336 -2.672,-5.051 -2.57,-12.621 0.27,-19.766 2.586,-6.512 9.793,-18.406 28.988,-24.941 7.148,-2.434 14.594,-3.664 22.145,-3.664 12.223,0 20.52,3.219 21.426,3.59 l 6.637,2.691 -1.195,7.066 c -0.023,0.141 -2.43,16.492 3.918,29.945 l 13.477,6.609 -14.352,8.406 -40,23.23 -4.779,-3.858 z" id="path3077" style="fill:#260859"/>
<path d="m 324.59,268.086 c 0.148,0.016 0.281,0.008 0.438,0.023 -9.18,-17.043 -5.715,-37.352 -5.715,-37.352 0,0 -16.691,-6.77 -37.332,0.254 -24.391,8.301 -27.098,26.691 -24.246,32.094 2.688,5.09 9.637,6.027 15.934,2.34 3.547,9.219 8,15.848 18.32,24.191 l 34.66,-20.137 c -10e-4,10e-4 -0.837,-0.394 -2.059,-1.413 z" id="path3079" style="fill:#fff200"/>
<path d="m 291.426,228.664 c -3.023,0.5 -6.176,1.234 -9.445,2.348 -1.793,0.609 -3.449,1.281 -5.012,1.988 0.133,0.762 0.27,1.52 0.402,2.305 2.273,13.105 5.395,30.973 23.766,49.016 l 3.77,-2.191 4.488,-4.691 c -0.477,-0.453 -0.945,-0.914 -1.398,-1.371 -15.052,-15.072 -17.841,-27.463 -16.571,-47.404 z" id="path3081" style="fill:#f26531"/>
<path d="m 319.312,230.758 c 0,0 -4.73,-1.898 -12.234,-2.641 -2.945,19.641 0.68,32.223 5.871,43.66 2.867,-2.016 6.352,-4.246 12.078,-3.668 -9.179,-17.043 -5.715,-37.351 -5.715,-37.351 z" id="path3083" style="fill:#f26531"/>
<path d="m 340.762,260.719 c -22.492,-7.508 -62.18,9.445 -55.824,36.164 0,0 11.375,4.582 19.496,12.699 5.488,5.477 3.191,16.223 9.211,15.781 55.078,-4.008 48.554,-57.203 27.117,-64.644 z" id="path3085" style="fill:#260859"/>
<path d="m 384.066,446.531 c -5.324,-23.91 -22.367,-47.836 -36.781,-60.797 -7.402,-17.637 -2.094,-29.484 4.07,-43.25 1.84,-4.102 3.926,-8.746 5.574,-13.535 6.051,-17.562 3.086,-50.559 -8.871,-62.594 l -14.891,4.199 c -3.703,15.652 -12.715,36.105 -20.797,41.855 l -4.219,3 0.543,5.133 c 1.426,13.711 -5.629,29.66 -23.301,65.484 -7.051,14.281 -9.199,28.594 -6.531,44.879 23.355,20.395 62.828,42.727 109.797,60.965 -0.671,-20.983 -2.706,-36.886 -4.593,-45.339 z" id="path3087" style="fill:#260859"/>
<path d="m 375.43,448.457 c -4.688,-21.027 -20.555,-44.578 -35.52,-57.488 -0.02,-0.051 -0.031,-0.094 -0.059,-0.145 -12.793,-28.352 1.895,-44.961 8.711,-64.754 5.188,-15.062 2.301,-44.332 -6.785,-53.473 -2.863,12.109 -12.199,38.438 -24.281,47.027 1.711,16.387 -6.383,34.281 -24.168,70.316 -7.707,15.625 -8.574,31.184 -3.348,49.906 22.02,16.477 53.324,33.613 89.688,48.441 -0.727,-17.475 -2.406,-31.607 -4.238,-39.83 z" id="path3089" style="fill:#f26531"/>
<path d="m 336.758,268.195 c -10.891,-5.066 -39.801,0.785 -49.402,24.723 0,0 8.891,5.105 14.688,12.75 3.91,5.168 3.672,14.082 8.707,14.211 42.866,1.105 42.554,-43.981 26.007,-51.684 z" id="path3091" style="fill:#f26531"/>
<path d="m 272.738,340.402 c -1.93,0 -3.652,-0.895 -4.738,-2.457 -1.965,-2.816 -0.754,-6.086 -0.109,-7.84 3.441,-9.297 12.891,-18.176 21.5,-20.219 l 16.016,-4.246 1.781,0.863 c 4.453,2.152 2.496,-3.094 5.336,-1.969 11.52,4.566 5.867,13.898 4.336,16.051 -3.465,4.875 -7.785,4.871 -10.066,5.266 -9.285,1.57 -14.492,4.105 -18.293,5.965 -1.504,0.734 -2.801,1.367 -4.184,1.898 -0.977,0.379 -3.066,2.02 -4.32,3 -2.829,2.224 -4.7,3.688 -7.259,3.688 l 0,0 z" id="path3093" style="fill:#260859"/>
<path d="m 304.859,311.324 -14.234,3.773 c -6.875,1.625 -14.824,9.062 -17.707,16.859 -2.891,7.805 4.785,-1.43 9.469,-3.234 4.668,-1.812 10.121,-5.887 23.5,-8.156 13.379,-2.265 -1.028,-9.242 -1.028,-9.242 z" id="path3095" style="fill:#f26531"/>
<path d="m 290.859,310.074 c 0,0 -11.062,22.945 -25.168,28.18 l 10.75,1.375 c 0,0 15.59,-9.383 18.441,-19.707 2.852,-10.312 2.551,-15.832 2.551,-15.832 l -6.574,5.984 z" id="path3097" style="fill:#260859"/>
<path d="m 313.492,304.547 c -6.148,-4.84 -21.82,-2.699 -21.82,-2.699 l 8.758,5.172 c -8.391,9.762 -18.191,29.141 -30.828,32.25 0,0 8.082,5.398 25.703,-7.062 17.621,-12.46 24.347,-22.825 18.187,-27.661 z" id="path3099" style="fill:#fff200"/>
<path d="m 289.879,287.703 c -0.773,1.035 -1.34,2.477 -3.102,4.871 -2.613,3.402 -8.828,10.496 -17.902,8.246 -9.074,-2.25 -18.012,4.523 -20.785,9.676 -2.77,5.152 -1.465,8.965 -1.465,8.965 0,0 9.391,-7.359 17.73,-6.609 8.348,0.758 32.059,-6.914 50.258,-4.016 0,0 -14.355,-10.16 -16.457,-16.086 -2.011,-5.848 -7.902,-5.488 -8.277,-5.047 z" id="path3101" style="fill:#fff200"/>
<g id="g3103">
<path d="m 318.129,275.305 c -8.238,10.934 -12.203,12.973 -19.973,17.445 18.227,33.57 52.637,-9.355 19.973,-17.445 z" id="path3105" style="fill:#260859"/>
</g>
<g id="g3107">
<path d="m 315.082,300.051 c -3.988,0 -7.168,-2.73 -9.383,-5.508 5.203,-3.199 9.039,-6.363 14.363,-13.004 4.559,1.859 6.637,4.664 6.188,8.344 -0.574,4.703 -5.578,10.168 -11.168,10.168 l 0,0 z" id="path3109" style="fill:#ffffff"/>
</g>
<path d="m 317.875,282.395 c -2.621,1.168 -5.152,2.633 -7.699,3.727 -1.414,0.609 -3.875,2.562 -3.633,3.16 1.148,2.824 3.023,5.551 6.082,6.75 0.297,0.117 0.602,0.211 0.906,0.289 0.695,-1.246 1.336,-2.582 1.898,-4.008 1.118,-2.86 2.009,-6.751 2.446,-9.918 z" id="path3111" style="fill:#260859"/>
<path d="m 313.707,296.379 c 0,-2.535 -0.289,-4.934 -0.781,-7.129 -2.305,2.059 -4.594,3.672 -7.227,5.293 1.91,2.398 4.551,4.75 7.801,5.352 0.125,-1.137 0.207,-2.305 0.207,-3.516 z" id="path3113" style="fill:#f37344"/>
<path d="m 280.828,251.062 c 0.438,9.141 4.355,19.59 12.043,29.02 l 4.793,-4.211 c -11.609,-7.101 -16.836,-24.809 -16.836,-24.809 z" id="path3115" style="fill:#260859"/>
<path d="m 291.141,238.789 c -1.156,10.66 1.484,23.461 8.672,35.766 l 6.305,-4 c -12.141,-10.336 -14.977,-31.766 -14.977,-31.766 z" id="path3117" style="fill:#260859"/>
<path d="m 306.738,231.996 c -2.785,10.348 -2.152,23.402 3.047,36.672 l 6.844,-2.973 c -10.399,-12.082 -9.891,-33.699 -9.891,-33.699 z" id="path3119" style="fill:#260859"/>
<path d="m 334.832,367.363 c 0.266,-6.996 2.133,-13.312 4.527,-19.387 0.395,-1.004 -7.34,5.734 -15.191,7.973 -7.262,2.07 -14.66,-0.41 -14.953,0.293 -2.434,5.727 -5.387,12.094 -8.852,19.297 19.012,1.656 27.176,-2.223 34.469,-8.176 z" id="path3121" style="fill:#7ac143"/>
<path d="m 337.445,353.391 c 1.25,-3.918 2.812,-7.699 4.465,-11.438 -12.93,7.711 -20.523,10.559 -30.961,10.07 -1.262,3.164 -2.719,6.547 -4.34,10.152 13.114,1.403 24.301,-3.511 30.836,-8.784 z" id="path3123" style="fill:#ffffff"/>
<path d="m 293.305,389.996 c -7.684,15.605 -8.547,31.148 -3.324,49.852 12.047,9.012 26.852,18.227 43.773,27.152 12.125,-36.82 -2.57,-65.309 -8.16,-75.688 -8.168,2.25 -33.199,11.153 -32.289,-1.316 z" id="path3125" style="fill:#ffffff"/>
<g id="g3127">
<path d="m 426.086,226.523 c -3.566,0 -6.266,-1.336 -7.719,-2.051 -0.879,-0.445 -2,-1.012 -7.145,-4.84 -5.227,1.496 -10.617,2.254 -16.043,2.254 -5.52,0 -10.984,-0.777 -16.266,-2.309 -5.227,3.891 -6.375,4.465 -7.148,4.855 -1.371,0.684 -4.199,2.09 -7.797,2.09 -4.008,0 -7.691,-1.621 -10.949,-4.805 -4.895,-4.824 -6.535,-9.34 -5.664,-15.602 0.137,-0.996 0.441,-2.527 1.691,-6.785 -1.613,-2.074 -3.102,-4.285 -4.441,-6.59 -9.844,-3.238 -12.664,-4.578 -14.113,-5.461 -4.582,-2.82 -6.859,-8.195 -6.98,-16.441 -0.117,-8.219 1.965,-13.617 6.363,-16.496 0.707,-0.461 1.859,-1.211 8.289,-4.105 0.246,-1.074 0.527,-2.141 0.832,-3.195 -5.164,-7.422 -5.906,-9.02 -6.309,-9.887 -1.41,-3.07 -2.191,-8.109 2.059,-14.746 1.551,-2.414 7.227,-10.281 15.102,-10.281 h 0.797 l 1.406,0.211 c 0.941,0.184 2.262,0.449 9.582,3.125 4.242,-2.965 8.844,-5.352 13.707,-7.109 2.277,-5.695 3.047,-6.969 3.422,-7.594 2.812,-4.617 8.301,-6.957 16.328,-6.957 8.25,0 13.824,2.352 16.57,6.988 0.398,0.676 1.055,1.781 3.363,7.566 4.855,1.758 9.449,4.141 13.676,7.098 7.227,-2.648 8.523,-2.91 9.391,-3.09 l 0.734,-0.148 1.395,-0.086 c 7.91,0 13.363,7.188 15.348,10.277 4.25,6.629 3.473,11.66 2.07,14.715 -0.418,0.906 -1.176,2.527 -6.289,9.871 0.312,1.074 0.594,2.156 0.844,3.246 6.473,2.906 7.566,3.625 8.297,4.105 4.398,2.875 6.48,8.273 6.359,16.496 -0.113,8.125 -2.453,13.648 -6.957,16.414 -1.016,0.625 -2.891,1.785 -14.141,5.484 -1.391,2.406 -2.957,4.711 -4.656,6.879 1.348,4.625 1.508,5.785 1.605,6.496 0.871,6.266 -0.762,10.777 -5.645,15.582 -3.269,3.201 -6.956,4.826 -10.968,4.826 l 0,0 z" id="path3129" style="fill:#260859"/>
<path d="m 426.086,224.414 c -3.094,0 -5.512,-1.203 -6.812,-1.844 -0.746,-0.379 -1.895,-0.953 -7.633,-5.262 -5.348,1.641 -10.875,2.473 -16.461,2.473 -5.676,0 -11.273,-0.848 -16.676,-2.527 -5.824,4.367 -6.977,4.941 -7.691,5.301 -1.324,0.656 -3.75,1.859 -6.844,1.859 -3.438,0 -6.621,-1.41 -9.477,-4.203 -4.41,-4.344 -5.828,-8.211 -5.051,-13.801 0.137,-1 0.48,-2.645 1.938,-7.531 -1.992,-2.461 -3.781,-5.105 -5.344,-7.887 -10.289,-3.363 -13.133,-4.711 -14.441,-5.512 -3.922,-2.41 -5.867,-7.207 -5.973,-14.668 -0.109,-7.441 1.664,-12.254 5.41,-14.707 0.672,-0.438 1.848,-1.199 8.965,-4.375 0.359,-1.711 0.801,-3.402 1.309,-5.059 -5.598,-8.008 -6.336,-9.613 -6.707,-10.41 -1.188,-2.582 -1.816,-6.879 1.922,-12.715 1.41,-2.195 6.527,-9.309 13.328,-9.309 h 0.797 l 1.051,0.18 c 0.832,0.164 2.242,0.457 10.258,3.406 4.551,-3.312 9.668,-5.977 14.992,-7.801 2.492,-6.301 3.273,-7.594 3.621,-8.176 2.402,-3.941 7.281,-5.934 14.523,-5.934 7.453,0 12.418,2.004 14.754,5.953 0.371,0.625 1.039,1.754 3.574,8.16 5.312,1.828 10.418,4.48 14.965,7.789 8.012,-2.953 9.32,-3.219 10.129,-3.383 l 0.738,-0.152 1.047,-0.039 c 7.012,0 12.098,7.125 13.496,9.305 3.738,5.828 3.109,10.125 1.93,12.703 -0.387,0.828 -1.137,2.441 -6.684,10.375 0.52,1.68 0.957,3.387 1.32,5.109 7.172,3.195 8.281,3.922 8.969,4.375 3.746,2.449 5.52,7.262 5.414,14.707 -0.105,7.359 -2.109,12.285 -5.953,14.648 -0.922,0.566 -2.789,1.711 -14.469,5.527 -1.621,2.895 -3.48,5.625 -5.559,8.168 1.59,5.371 1.758,6.566 1.852,7.25 0.777,5.59 -0.633,9.457 -5.035,13.785 -2.863,2.808 -6.055,4.222 -9.492,4.222 l 0,0 z" id="path3131" style="fill:#260859"/>
<path d="m 409.34,122.93 c 0,0 -5.383,-14.453 -6.75,-16.773 -1.375,-2.324 -13.246,-2.52 -14.793,0.031 -1.535,2.566 -6.75,16.742 -6.75,16.742 h 28.293 z" id="path3133" style="fill:#7f3f98"/>
<path d="m 380.41,205.176 c 0,0 -11.297,8.801 -13.367,9.836 -2.066,1.031 -3.934,1.836 -6.656,-0.824 -2.676,-2.637 -2.969,-3.941 -2.598,-6.621 0.371,-2.668 4.875,-16.578 4.875,-16.578 l 17.746,14.187 z" id="path3135" style="fill:#7f3f98"/>
<path d="m 409.645,205.176 c 0,0 11.297,8.801 13.367,9.836 2.066,1.031 3.938,1.836 6.656,-0.824 2.676,-2.637 2.969,-3.941 2.598,-6.621 -0.371,-2.668 -4.875,-16.578 -4.875,-16.578 l -17.746,14.187 z" id="path3137" style="fill:#7f3f98"/>
<path d="m 352.539,155.469 c 0,0 -14.668,6.238 -16.891,7.691 -2.211,1.449 -2.164,13.59 0.336,15.125 2.5,1.531 17.105,6.121 17.105,6.121 l -0.55,-28.937 z" id="path3139" style="fill:#7f3f98"/>
<path d="m 437.82,155.469 c 0,0 14.668,6.238 16.891,7.691 2.215,1.449 2.164,13.59 -0.336,15.125 -2.5,1.531 -17.105,6.121 -17.105,6.121 l 0.55,-28.937 z" id="path3141" style="fill:#7f3f98"/>
<path d="m 348.719,153.543 -7.418,3.023 c -0.465,4.172 0.828,11.812 6.457,16.184 5.629,4.359 0.961,-19.207 0.961,-19.207 z" id="path3143" style="fill:#260859"/>
<path d="m 441.246,153.543 7.418,3.023 c 0.465,4.172 -0.828,11.812 -6.457,16.184 -5.629,4.359 -0.961,-19.207 -0.961,-19.207 z" id="path3145" style="fill:#260859"/>
<path d="m 367.875,129.066 c 0,0 -15.164,-5.836 -17.758,-6.371 -2.598,-0.547 -9.082,7.383 -7.863,10.039 1.223,2.66 10.508,15.508 10.508,15.508 l 15.113,-19.176 z" id="path3147" style="fill:#7f3f98"/>
<path d="m 422.438,129.066 c 0,0 15.164,-5.836 17.754,-6.371 2.598,-0.547 9.086,7.383 7.867,10.039 -1.223,2.66 -10.508,15.508 -10.508,15.508 l -15.113,-19.176 z" id="path3149" style="fill:#7f3f98"/>
<path d="m 359.793,121.949 c -2.27,3.754 -6.828,9.09 -3.359,17.332 2.875,-3.961 11.133,-15.062 11.43,-16.781 l -8.071,-0.551 z" id="path3151" style="fill:#260859"/>
<path d="m 423.164,198.848 10.629,-4.398 3.391,4.844 c -4.156,3.188 -7.762,6.547 -14.637,6.121 -8.692,-0.552 0.617,-6.567 0.617,-6.567 z" id="path3153" style="fill:#260859"/>
<path d="m 366.891,198.848 -10.629,-4.398 -3.391,4.844 c 4.156,3.188 7.762,6.547 14.637,6.121 8.695,-0.552 -0.617,-6.567 -0.617,-6.567 z" id="path3155" style="fill:#260859"/>
<path d="m 430.566,121.949 c 2.266,3.754 6.824,9.09 3.352,17.332 -2.867,-3.961 -11.133,-15.062 -11.43,-16.781 l 8.078,-0.551 z" id="path3157" style="fill:#260859"/>
<path d="m 443.168,163.367 c 0,26.504 -21.488,47.984 -47.988,47.984 -26.508,0 -47.992,-21.48 -47.992,-47.984 0,-26.504 21.484,-47.996 47.992,-47.996 26.5,0 47.988,21.492 47.988,47.996 z" id="path3159" style="fill:#7f3f98"/>
</g>
<path d="m 499.035,379.352 c -24.148,-14.574 -50.754,-40.875 -46.246,-67.043 1.824,-10.57 -6.406,-19.781 -14.363,-28.688 -3.098,-3.477 -6.305,-7.066 -8.812,-10.648 -5.574,-7.969 -11.219,-18.809 -6.41,-25.188 1.828,-2.426 5.477,-3.598 11.152,-3.598 6.438,0 14.301,1.52 19.57,2.734 -2.094,-5.496 -3.824,-12.004 -1.652,-15.984 0.93,-1.707 2.5,-2.793 4.531,-3.148 0.484,-0.082 1,-0.121 1.535,-0.121 10.691,0 31.27,18.254 44.082,30.727 l 2.691,-13.578 1.098,2.488 c 0.855,0.215 21,5.586 31.73,37.02 15.328,14.332 30.715,37.719 28.375,60.863 l -1.391,13.645 -24.707,-4.203 -10.504,-1.258 10.469,12.742 -6.188,10.285 -10.91,2.156 c -4.785,0.953 -10.098,1.809 -15.793,2.543 l -4.441,0.562 -3.816,-2.308 z" id="path3161" style="fill:#260859"/>
<path d="m 499.883,380.711 c -8.453,-18.031 -15.75,-33.605 -11.617,-49.598 5.477,-21.191 4.926,-37.324 -1.633,-47.938 -5.246,-8.492 -12.496,-10.414 -13.895,-10.715 l -2.395,-0.512 -14.07,3.293 -0.402,0.141 c -17.102,5.828 -29.754,33.488 -21.32,69.688 2.219,9.543 5.305,16.332 8.051,22.375 2.02,4.445 3.656,8.047 4.535,11.91 -21.969,18.406 -37.598,42.656 -42.953,66.711 -2.16,9.668 -3.797,24.91 -4.496,41.824 l -0.195,4.844 c 48.699,-18.664 89.555,-41.785 113.125,-62.766 0.469,-12.918 -2.551,-27.004 -8.867,-40.922 -1.278,-2.812 -2.579,-5.585 -3.868,-8.335 z" id="path3163" style="fill:#260859"/>
<path d="m 506.766,421.48 c -5.457,0 -10.125,-2.191 -13.5,-6.348 -7.531,-9.25 -5.598,-25.848 -2.543,-41.09 -0.52,-0.402 -1.082,-0.809 -1.566,-1.16 -2.887,-2.09 -6.832,-4.945 -8.84,-9.621 l -3.844,-8.93 8.52,-4.684 c 26.812,-14.766 36.797,-42.465 29.68,-82.332 -0.055,-0.164 -0.105,-0.328 -0.164,-0.488 -2.809,-3.723 -6.871,-11.012 -10.637,-24.828 -3.523,-12.914 -12.309,-71.832 -7.859,-80.129 0.945,-1.77 3.852,-5.887 10.324,-5.887 4.68,0 18.578,3.645 26.375,12.609 0.766,-0.152 1.562,-0.227 2.363,-0.227 4.25,0 7.562,2.121 11.398,4.578 1.246,0.789 2.582,1.645 4.094,2.543 2.199,1.305 6.66,3.945 10.301,10.102 5.594,0.066 9.668,3.734 19.703,14.016 0.09,0.102 1.055,1.09 1.293,1.32 2.059,2.035 3.676,4.914 5.316,9.516 10.035,2.156 17.312,18.496 18.711,25.281 0.051,0.262 0.152,0.633 0.289,1.145 l 0.273,1.02 c 15.062,57.008 11.363,104.316 -10.707,136.801 -17.801,26.219 -46.922,41.906 -86.551,46.645 -0.859,0.102 -1.648,0.148 -2.429,0.148 l 0,0 z" id="path3165" style="fill:#260859"/>
<path d="m 595.402,237.887 c -1.785,-8.676 -10.664,-20.074 -11.051,-16.191 -0.199,2.031 1.609,13.535 2.16,20.777 -0.961,-0.691 -2.066,-1.449 -2.703,-1.969 -2.98,-14.074 -6.547,-29.066 -9.473,-31.961 -2.211,-2.176 -14.605,-15.398 -13.977,-11.551 2.879,17.59 7.48,30.176 11.324,39.035 -3.078,-2.262 -4.473,-3.328 -6.055,-4.422 -6.062,-4.195 -8.738,-30.359 -13.359,-39.422 -2.363,-4.652 -5.629,-6.57 -7.172,-7.484 -9.922,-5.895 -12.629,-9.863 -10.863,2.387 1.348,9.336 2.344,21.816 14.742,47.855 l -8.207,-6.227 c -6.785,-5.465 -11.07,-36.008 -13.523,-48.082 -2.031,-10.043 -21.027,-15.141 -21.797,-13.699 -1.18,2.203 3.742,53.883 8.754,72.25 5.008,18.359 10.426,24.254 10.836,25.301 3.816,20.711 5.387,47.844 -8.359,70.012 -2.25,3.625 -31.09,-18.539 -34.219,-15.227 -3.129,3.312 19.469,32.105 15.348,34.992 -2.375,1.672 -4.922,3.262 -7.656,4.766 1.898,4.414 10.406,6.801 11.91,12.598 0.566,0 -11.004,41.09 5.863,39.07 136.755,-16.336 89.27,-164.133 87.477,-172.808 z" id="path3167" style="fill:#ffffff"/>
<path d="m 519.477,379.414 c -7.062,-21.422 -20.711,-50.16 -20.711,-50.16 l -28.637,-11.207 19.031,63.051 -6.086,-5.641 -1.121,4.543 10.562,19.551 c 0,0 27.895,4.254 31.422,-6.102 -1.546,-5.48 -2.132,-6.969 -4.46,-14.035 z" id="path3169" style="fill:#aaa4c4"/>
<path d="m 506.004,389.176 c -3.055,0.156 -3.531,-6.988 -5.977,-6.602 -1.98,12.016 -3.234,29.453 7.898,28.121 105.012,-12.539 101.387,-102.594 93.238,-147.656 -1.339,28.816 1.314,121.039 -95.159,126.137 z" id="path3171" style="fill:#aaa4c4"/>
<path d="m 499.363,403.242 c 1.051,4.82 3.543,8.055 8.562,7.453 48.184,-5.754 73.453,-27.84 85.957,-54.395 -20.577,34.462 -64.964,42.055 -94.519,46.942 z" id="path3173" style="fill:#f2f1f8"/>
<path d="m 536.113,285.504 c -10.438,-31.156 -30.414,-36.156 -30.414,-36.156 l -1.723,13.531 c -1.992,-1.926 -34.645,-35.117 -46.812,-33.012 -8.293,1.434 -0.457,18.242 0.266,20.086 -6.105,-1.598 -28.066,-6.832 -32.543,-0.898 -4.473,5.93 2.891,17.617 6.457,22.711 8.84,12.648 26.277,24.93 23.523,40.898 -4.41,25.586 22.328,51.047 45.258,64.883 l 3.191,1.93 3.703,-0.469 c 5.539,-0.715 10.805,-1.555 15.66,-2.52 l 9.992,-1.977 4.938,-8.211 -12.848,-15.648 15.812,1.898 22.48,3.824 1.168,-11.398 c 2.088,-20.64 -11.045,-43.691 -28.108,-59.472 z" id="path3175" style="fill:#260859"/>
<path d="m 511.441,262.371 0.492,25.715 20.984,8.66 C 522.91,277.422 511.441,262.371 511.441,262.371 z" id="path3177" style="fill:#6b5f91"/>
<path d="m 497.977,381.613 c -8.625,-18.406 -16.074,-34.297 -11.754,-51.027 5.328,-20.621 4.859,-36.199 -1.383,-46.305 -4.797,-7.758 -11.289,-9.492 -12.543,-9.758 l -1.934,-0.414 -13.398,3.125 -0.414,0.145 c -16.215,5.523 -28.109,32.18 -19.945,67.215 2.172,9.352 5.219,16.047 7.902,21.953 2.297,5.055 4.102,9.027 4.949,13.617 -21.887,18.016 -37.902,42.508 -43.219,66.363 -2.129,9.539 -3.754,24.648 -4.445,41.449 l -0.16,3.938 c 46.297,-17.949 85.312,-39.887 108.82,-60.047 0.855,-12.961 -2.055,-27.484 -8.621,-41.949 -1.273,-2.801 -2.57,-5.566 -3.855,-8.305 z" id="path3179" style="fill:#260859"/>
<path d="m 414.879,448.457 c -1.84,8.227 -3.52,22.379 -4.238,39.879 36.367,-14.809 67.703,-31.938 89.738,-48.418 3.441,-14 0.355,-31.008 -6.609,-46.34 -10.18,-22.418 -21.957,-42.605 -16.117,-65.207 10.691,-41.363 -7.207,-45.191 -7.207,-45.191 l -11.039,2.574 c -11.812,4.027 -21.172,26.828 -14.184,56.836 4.383,18.836 12.867,26.305 13.566,41.469 -24.969,19.054 -39.453,44.386 -43.91,64.398 z" id="path3181" style="fill:#ffffff"/>
<polygon points="524.949,339.023 553.559,343.895 540.949,327.73 497.863,316.172 478.828,322.18 505.211,341.258 515.43,341.129 518.512,346.129 " id="polygon3183" style="fill:#42316f"/>
<path d="m 512.535,370.281 c -0.336,-0.113 -1.629,-0.211 -2.324,-0.262 -3.934,-0.297 -11.246,-0.84 -16.621,-8.176 -9.293,-12.676 -18.852,-30.539 -18.945,-30.719 l -1.918,-3.586 16.203,-15.387 3.598,2.605 c 10.914,7.887 31.23,22.578 27.18,51.25 l -0.93,6.586 -6.243,-2.311 z" id="path3185" style="fill:#260859"/>
<path d="m 507.996,273.875 c -8.719,-4.91 -1.633,8.113 -1.633,8.113 l 17.391,8.082 c 0,0 -7.035,-11.285 -15.758,-16.195 z" id="path3187" style="fill:#260859"/>
<path d="m 497.902,358.684 c 5.445,7.418 12.918,5.246 16.504,6.578 3.41,-24.145 -12.492,-37.109 -25.016,-46.168 l -10.02,9.52 c 10e-4,-10e-4 9.341,17.515 18.532,30.07 z" id="path3189" style="fill:#f6a0a6"/>
<polygon points="494.504,330.309 504.152,329.352 500.211,320.141 490.449,320.98 " id="polygon3191" style="fill:#260859"/>
<path d="m 477.652,328.371 c 0.344,-1.586 0.645,-3.094 0.914,-4.574 l -0.824,-32.625 -7.129,-5.695 -4.527,-1.277 -6.68,1.555 c -3.07,1.051 -5.98,3.387 -8.48,6.777 4.602,7.199 9.676,10.191 8.43,22.199 -1.32,12.793 10.867,25.336 16.84,28.691 -0.165,-4.742 0.284,-9.649 1.456,-15.051 z" id="path3193" style="fill:#aaa4c4"/>
<path d="m 515.441,362.789 c 2.875,-0.449 5.562,-0.922 8.031,-1.41 -11.984,-10.055 -24.457,-25.418 -30.348,-40.766 1.129,-0.16 2.285,-0.285 3.461,-0.387 l -12.074,-9.066 -1.441,17.137 20.973,26.426 11.398,8.066 z" id="path3195" style="fill:#260859"/>
<g id="g3197">
<path d="m 520.594,365.984 c -11.988,-10.059 -24.457,-25.414 -30.348,-40.773 14.125,-2 31.789,-0.09 63.312,18.684 2.402,-23.664 -8.188,-64.223 -120.211,-88.75 19.531,31.617 35.305,33.953 32.133,58.875 -2.477,19.504 17.742,40.82 40.18,54.359 5.613,-0.715 10.582,-1.535 14.934,-2.395 z" id="path3199" style="fill:#ffffff"/>
</g>
<polygon points="502.367,321.293 514.109,336.367 528.445,325.293 " id="polygon3201" style="fill:#ffffff"/>
<polygon points="474.906,256.566 459.891,260.328 490.523,302.746 " id="polygon3203" style="fill:#260859"/>
<polygon points="519.023,350.121 506.781,357.129 514.066,363.012 " id="polygon3205" style="fill:#ffffff"/>
<polygon points="515.023,361.746 520.594,365.984 523.348,358.102 " id="polygon3207" style="fill:#ffffff"/>
<g id="g3209">
<path d="m 462.426,239.809 c 11.012,28.695 21.609,50.254 24.316,56.68 3.309,7.875 6.352,11.246 16.789,16.836 6.863,3.676 19.824,10.402 31.555,10.422 -8.766,-21.824 -16.195,-32.91 -38.211,-53.188 -11.328,-10.43 -24.145,-21.758 -34.449,-30.75 z" id="path3211" style="fill:#594c82"/>
</g>
<g id="g3213">
<path d="M 521.926,322.051 C 505.781,318.36 496.391,306.5 495.473,288.668 l -0.387,-7.441 6.039,4.363 c 20.16,14.57 24.406,26.645 25.137,32.543 l 0.633,5.062 -4.969,-1.144 z" id="path3215" style="fill:#260859"/>
</g>
<g id="g3217">
<path d="m 504.73,294.418 c 0.742,14.297 7.789,26.453 23.688,30.094 -0.844,-6.774 -6.383,-17.582 -23.688,-30.094 z" id="path3219" style="fill:#ffffff"/>
</g>
<path d="m 521.02,307.242 -1.926,-0.84 c -0.336,0.574 -0.645,1.184 -0.918,1.844 -1.785,4.355 -1.414,8.625 0.836,9.559 1.629,0.664 3.961,-0.762 5.711,-3.18 l -3.703,-7.383 z" id="path3221" style="fill:#260859"/>
<path d="m 493.77,393.578 c -0.039,-0.094 -0.086,-0.184 -0.125,-0.273 -1.496,2.672 -2.945,5.547 -2.945,5.547 0,0 -19.02,-6.207 -25.148,-7.895 -5.867,10.895 -20.238,38.785 -8.461,75.781 16.672,-8.82 31.375,-17.91 43.289,-26.82 3.44,-14 0.354,-31.008 -6.61,-46.34 z" id="path3223" style="fill:#6b5f91"/>
<path d="m 282.871,437.34 c 22.973,18.836 59.043,39.004 101.59,55.91 v -12.582 c -45.699,-18.512 -81.504,-40.121 -101.59,-58.043 v 14.715 z" id="path3225" style="fill:#260859"/>
<path d="m 406.188,493.156 c 42.293,-16.809 78.164,-36.848 101.102,-55.594 v -14.703 c -19.926,17.703 -55.094,38.953 -99.949,57.25 l -1.153,13.047 z" id="path3227" style="fill:#260859"/>
<path d="m 403.402,148.789 c -0.047,-0.816 0.004,-1.645 0.133,-2.477 1.031,-5.996 6.719,-10.016 12.719,-8.984 5.887,1.008 9.855,6.508 9.039,12.367 -7.613,-1.144 -14.949,-1.629 -21.891,-0.906 z" id="path3229" style="fill:#ffffff"/>
<path d="m 365.43,162.512 c 6.816,9.141 17.707,15.051 29.973,15.051 12.27,0 23.16,-5.91 29.973,-15.051 H 365.43 z" id="path3231" style="fill:#260859"/>
<path d="m 416.684,170.902 c -4.809,-1.645 -12.762,-2.707 -21.766,-2.707 -8.594,0 -16.242,0.969 -21.102,2.484 6.102,4.32 13.543,6.883 21.586,6.883 7.907,0 15.239,-2.472 21.282,-6.66 z" id="path3233" style="fill:#b30838"/>
<path d="m 359.141,162.512 0.438,1.328 c 3.145,9.539 4.848,12.016 8.293,12.043 h 0.027 c 3.363,0 5.168,-2.57 8.371,-11.938 l 0.496,-1.434 h -17.625 z" id="path3235" style="fill:#260859"/>
<g id="g3237">
<path d="m 363.828,162.43 c 0,0 2.953,8.965 4.055,8.973 1.102,0.012 4.156,-8.914 4.156,-8.914 l -8.211,-0.059 z" id="path3239" style="fill:#ffffff"/>
</g>
<path d="m 414.266,162.512 0.438,1.328 c 3.145,9.539 4.848,12.016 8.293,12.043 h 0.027 c 3.363,0 5.168,-2.57 8.375,-11.938 l 0.492,-1.434 h -17.625 z" id="path3241" style="fill:#260859"/>
<g id="g3243">
<path d="m 418.953,162.43 c 0,0 2.953,8.965 4.055,8.973 1.105,0.012 4.156,-8.914 4.156,-8.914 l -8.211,-0.059 z" id="path3245" style="fill:#ffffff"/>
</g>
<path d="m 411.148,196.828 c 0,4.668 -7.133,8.449 -15.926,8.449 -8.797,0 -15.93,-3.781 -15.93,-8.449 0,-4.668 7.133,-8.449 15.93,-8.449 8.794,0 15.926,3.781 15.926,8.449 z" id="path3247" style="fill:#ffef6f"/>
<path d="m 400.66,196.828 c 0,1.594 -2.434,2.883 -5.438,2.883 -3,0 -5.438,-1.289 -5.438,-2.883 0,-1.598 2.438,-2.891 5.438,-2.891 3.005,10e-4 5.438,1.293 5.438,2.891 z" id="path3249" style="fill:#7f3f98"/>
<path d="m 410.676,141.695 c 0.078,2.168 1.301,3.871 2.711,3.816 1.422,-0.066 2.496,-1.863 2.402,-4.031 -0.082,-2.176 -1.309,-3.895 -2.727,-3.832 -1.414,0.059 -2.492,1.868 -2.386,4.047 z" id="path3251" style="fill:#260859"/>
<path d="m 386.906,148.789 c 0.051,-0.816 -0.004,-1.645 -0.133,-2.477 -1.027,-5.996 -6.715,-10.016 -12.715,-8.984 -5.887,1.008 -9.855,6.508 -9.039,12.367 7.614,-1.144 14.95,-1.629 21.887,-0.906 z" id="path3253" style="fill:#ffffff"/>
<path d="m 379.633,141.695 c -0.082,2.168 -1.301,3.871 -2.707,3.816 -1.426,-0.066 -2.504,-1.863 -2.402,-4.031 0.082,-2.176 1.309,-3.895 2.723,-3.832 1.417,0.059 2.495,1.868 2.386,4.047 z" id="path3255" style="fill:#260859"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" width="1024" height="357" viewBox="-1.98252 -1.98252 201.02104 70.04904" id="svg3349">
<defs id="defs3351"/>
<path d="m 0,0 11.76,0 4.455,31.962 0.12,0 L 20.789,0 32.55,0 23.402,42.417 9.147,42.417 0,0" id="path3131" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 34.039,0 11.05,0 0,15.567 6.771,0 0,-15.567 11.05,0 0,42.417 -11.05,0 0,-17.465 -6.771,0 0,17.465 -11.05,0 0,-42.417" id="path3133" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 64.395,0 11.757,0 4.457,31.962 0.121,0 L 85.185,0 96.944,0 87.797,42.417 73.54,42.417 64.395,0" id="path3135" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 97.576,42.414 8.907,0 9.222,-42.41 -8.912,0 -9.217,42.41" id="path3137" style="fill:#f0ab00;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 111.026,42.424 8.908,-0.01 9.218,-42.41 -8.913,0 -9.213,42.42" id="path3139" style="fill:#f0ab00;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 124.564,42.414 8.906,0 9.217,-42.41 -8.906,0 -9.217,42.41" id="path3141" style="fill:#f0ab00;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 4.169,46.784 5.251,0 1.985,14.261 0.05,0 1.99,-14.261 5.247,0 -4.082,18.928 -6.363,0 -4.082,-18.928" id="path3143" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 19.356,46.784 11.216,0 0,4.031 -6.282,0 0,3.234 5.882,0 0,3.87 -5.882,0 0,3.763 6.517,0 0,4.03 -11.451,0 0,-18.928" id="path3145" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 54.93,52.247 0,-0.45 c 0,-1.117 -0.449,-2.043 -1.405,-2.043 -1.06,0 -1.538,0.823 -1.538,1.67 0,3.739 8.059,1.91 8.059,8.828 0,4.027 -2.357,5.832 -6.705,5.832 -4.082,0 -6.362,-1.404 -6.362,-5.331 l 0,-0.663 4.772,0 0,0.453 c 0,1.615 0.663,2.202 1.614,2.202 1.007,0 1.594,-0.798 1.594,-1.831 0,-3.739 -7.743,-1.88 -7.743,-8.586 0,-3.819 2.043,-5.913 6.205,-5.913 4.294,0 6.12,1.775 6.12,5.832 l -4.611,0" id="path3147" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 61.476,65.712 4.932,0 0,-18.928 -4.932,0 0,18.928 z" id="path3149" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 32.477,46.784 7.714,0 c 3.766,0 5.195,2.124 5.195,5.039 0,2.516 -0.979,4.16 -3.232,4.506 2.385,0.265 3.103,1.776 3.103,4.294 l 0,1.616 c 0,0.981 0,2.251 0.237,2.626 0.132,0.209 0.237,0.422 0.558,0.582 l 0,0.265 -5.25,0 C 40.325,64.705 40.325,62.9 40.325,62.109 l 0,-1.275 c 0,-2.147 -0.423,-2.704 -1.619,-2.704 l -1.296,0 0,7.582 -4.933,0 0,-18.928 z m 4.933,8.008 0.98,0 c 1.405,0 2.066,-0.9 2.066,-2.252 0,-1.541 -0.609,-2.202 -2.094,-2.202 l -0.952,0 0,4.454" id="path3151" style="fill:#1e1e1e;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
<path d="m 75.975,52.54 c 0,-2.147 -0.396,-2.786 -1.35,-2.786 -1.513,0 -1.67,1.381 -1.67,6.494 0,5.117 0.157,6.497 1.67,6.497 1.22,0 1.485,-1.063 1.485,-4.64 l 4.771,0 0,1.405 c 0,5.3 -3.101,6.574 -6.256,6.574 -5.54,0 -6.76,-2.784 -6.76,-9.836 0,-7.236 1.642,-9.833 6.76,-9.833 4.451,0 6.12,2.334 6.12,5.992 l 0,1.19 -4.77,0 0,-1.057" id="path3153" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 82.524,46.784 4.928,0 0,6.948 3.02,0 0,-6.948 4.932,0 0,18.928 -4.932,0 0,-7.793 -3.02,0 0,7.793 -4.928,0 0,-18.928" id="path3155" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 97.606,46.784 11.21,0 0,4.031 -6.282,0 0,3.234 5.886,0 0,3.87 -5.886,0 0,3.763 6.522,0 0,4.03 -11.45,0 0,-18.928" id="path3157" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 130.526,46.784 0,13.655 c 0,1.824 0.559,2.306 1.485,2.306 0.928,0 1.485,-0.482 1.485,-2.306 l 0,-13.655 4.929,0 0,12.408 c 0,5.298 -2.28,6.892 -6.414,6.892 -4.135,0 -6.412,-1.594 -6.412,-6.892 l 0,-12.408 4.927,0" id="path3159" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 140.415,46.784 5.51,0 3.185,11.665 0.05,0 0,-11.665 4.614,0 0,18.928 -5.407,0 -3.288,-11.689 -0.05,0 0,11.689 -4.613,0 0,-18.928" id="path3161" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 110.726,46.784 7.716,0 c 3.76,0 5.192,2.124 5.192,5.039 0,2.516 -0.979,4.16 -3.234,4.506 2.383,0.265 3.101,1.776 3.101,4.294 l 0,1.616 c 0,0.981 0,2.251 0.238,2.626 0.131,0.209 0.24,0.422 0.558,0.582 l 0,0.265 -5.251,0 c -0.477,-1.007 -0.477,-2.812 -0.477,-3.603 l 0,-1.275 c 0,-2.147 -0.422,-2.704 -1.612,-2.704 l -1.301,0 0,7.582 -4.93,0 0,-18.928 z m 4.93,8.008 0.979,0 c 1.404,0 2.07,-0.9 2.07,-2.252 0,-1.541 -0.61,-2.202 -2.095,-2.202 l -0.954,0 0,4.454" id="path3163" style="fill:#1e1e1e;fill-opacity:1;fill-rule:evenodd;stroke:none"/>
<path d="m 162.334,55.428 6.361,0 0,10.284 -3.34,0 -0.113,-1.669 -0.05,0 c -0.662,1.617 -2.412,2.041 -4.082,2.041 -5.01,0 -5.459,-3.58 -5.459,-9.836 0,-6.336 1.22,-9.833 7.047,-9.833 3.502,0 5.993,1.775 5.993,6.36 l -4.771,0 c 0,-0.952 -0.07,-1.695 -0.266,-2.198 -0.185,-0.53 -0.554,-0.823 -1.139,-0.823 -1.612,0 -1.774,1.381 -1.774,6.494 0,5.117 0.161,6.497 1.67,6.497 1.034,0 1.639,-0.666 1.669,-3.978 l -1.75,0 0,-3.339" id="path3165" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 170.577,46.784 11.213,0 0,4.031 -6.28,0 0,3.234 5.885,0 0,3.87 -5.885,0 0,3.763 6.519,0 0,4.03 -11.452,0 0,-18.928" id="path3167" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
<path d="m 183.697,46.784 5.514,0 3.18,11.665 0.05,0 0,-11.665 4.615,0 0,18.928 -5.408,0 -3.284,-11.689 -0.05,0 0,11.689 -4.614,0 0,-18.928" id="path3169" style="fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
</svg>
<!-- version: 20110311, original size: 197.056 66.084, border: 3% -->

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="240.000000pt" height="240.000000pt" viewBox="0 0 240.000000 240.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,240.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M765 2069 c-179 -12 -224 -23 -273 -65 -74 -63 -73 -55 -70 -619 l3
-500 34 -70 c61 -125 213 -256 420 -362 110 -56 289 -126 321 -125 14 0 77 21
140 47 313 126 514 275 597 442 l38 77 3 483 c2 341 0 495 -9 525 -7 28 -27
59 -58 89 -56 56 -85 64 -309 79 -178 12 -648 11 -837 -1z m850 -403 c39 -1
99 2 135 7 l65 7 -100 -34 c-95 -33 -103 -38 -167 -105 l-68 -71 0 -73 c0
-100 -22 -138 -128 -222 -116 -93 -137 -142 -167 -390 -9 -71 -18 -141 -21
-154 l-5 -24 -21 20 c-11 12 -27 45 -35 74 -21 80 -27 325 -10 434 9 55 11 97
5 107 -4 10 -36 36 -69 58 -33 23 -92 71 -132 106 -55 51 -102 80 -202 129
l-130 64 183 0 182 1 122 -45 c66 -24 136 -47 154 -51 31 -6 35 -3 63 42 71
118 103 137 211 127 36 -3 97 -6 135 -7z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -6,14 +6,14 @@
"request": "launch",
"type": "dart",
"flutterMode": "debug",
"program": "auth/lib/main.dart",
"program": "mobile/apps/auth/lib/main.dart",
"args": ["--dart-define", "endpoint=http://localhost:8080"]
},
{
"name": "Auth Android Dev",
"request": "launch",
"type": "dart",
"program": "auth/lib/main.dart",
"program": "mobile/apps/auth/lib/main.dart",
"args": [
"--dart-define",
"endpoint=http://192.168.1.3:8080",
@@ -25,21 +25,21 @@
"name": "Auth iOS Dev",
"request": "launch",
"type": "dart",
"program": "auth/lib/main.dart",
"program": "mobile/apps/auth/lib/main.dart",
"args": ["--dart-define", "endpoint=http://192.168.1.30:8080"]
},
{
"name": "Auth iOS Prod",
"request": "launch",
"type": "dart",
"program": "auth/lib/main.dart",
"program": "mobile/apps/auth/lib/main.dart",
"args": ["--target", "lib/main.dart"]
},
{
"name": "Auth Android Prod",
"request": "launch",
"type": "dart",
"program": "auth/lib/main.dart",
"program": "mobile/apps/auth/lib/main.dart",
"args": ["--target", "lib/main.dart", "--flavor", "independent"]
}
]

View File

@@ -1,31 +1,51 @@
ente's Authenticator app helps you generate and store 2 step verification (2FA) tokens on your mobile devices.
Ente Auth is the best and the only 2FA authenticator app you will ever need. It provides secure, end-to-end encrypted backup to your codes, works across devices whether its Android, iOS, Mac, Windows, Linux or Web. It also offers quality of life features like Tap to Copy, Next Code, and even allows you to share your codes securely with others.
Our customers absolutely love it.
FEATURES
- It works everywhere and can either be used in the cloud with end-to-end encryption or on a single device without the need for an account. Entes UI is well thought out and easy to use. Plus it even shows you the next code if the current one is about to expire so you dont have to wait for it to roll over before your start typing. You can even pin, tag, and search your codes which makes it a lot easier to manage a big list compared to Google Authenticator. They call it a labour of love on their Github page, and it really looks like one. - Linus Tech Tips
- 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.
- Underrated but great authenticator app. Free, open source, and offers cloud backup. Very stable, has nice QoL features like the preview for the next code and the search bar. Overall, the best 2FA app I've used yet. - Luna Lometta
- 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.
- Fantastic, fluid, has a dark theme, is open source, and also has a PC program. I switched from Authy to Ente Auth precisely for this reason, and I was surprised since the app as a whole is better and faster. - Daniel Ramos
- Web access
You can access your 2FA code from any web browser by visiting https://auth.ente.io .
- Better than Google Authenticator. - Piaw Piaw Kittens
- Offline Mode
ente generates 2FA tokens offline, so your network connectivity will not get in the way of your workflow.
- Authy's best replacement. Open source, desktop support, synchronization, convenient token export. Huge thanks to the developers, I hope your product will become popular and famous. - Sergey Tverye
- Import and Export Tokens
You can add tokens to ente by one of the following methods:
1. Scanning a QR code
2. Manually entering (copy-pasting) a 2FA secret
3. Bulk importing from a file that contains a list of codes in the following format:
- By far my favourite 2FA app. Over the years I've moved from Google Authenticator to Authy and have now happily "settled" with Ente Auth. - Dan Walsh
otpauth://totp/provider.com:you@email.com?secret=YOUR_SECRET
- The best MFA app I ever used. I will never go back to Google Authenticator. - Pierre-Philippe Lessard
The codes maybe separated by new lines or commas.
Ente Auth is recommended by Linus Tech Tips, CERN, Zerodha and many others.
You can also export the codes you have added to ente, to an **unencrypted** text file, that adheres to the above format.
✨ Features
EASY IMPORT
Add TOTP 2FA Codes to Ente Auth easily. You can either scan a QR code, or import from other authenticator apps to make sure you never lose a code while migrating
CROSS PLATFORM
Ente Auth is available cross platform and supports all major devices and OS - including Android, iOS, Mac, Windows, Linux and Web.
SECURE E2EE BACKUP
Ente 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.
OFFLINE MODE - NO SIGNUP REQUIRED
Ente Auth generates 2FA tokens offline, so your network connectivity will not get in the way of your workflow. You can even use Ente Auth without signing up for backups and use it locally for as long as you want
INTUITIVE SEARCH
Ente Auth allows you to find your 2FA codes through one tap search. No more scrolling through a long list to find the right codes. Just tap on search and start typing.
CUSTOMISE YOUR EXPERIENCE
Customise your experience of Ente Auth to make it like you want. Reorder your 2FA codes so that your most frequently used services are always on top. Change the icons by choosing from our massive icon library. Add tags so that you can filter codes like you want
SEE NEXT CODE
Ever had to pause for the timer to run out on the current code, so you can type in the new 2FA code? Ente Auth makes your workflow extremely fast by displaying the next code prominently. Say goodbye to waiting
SHARE 2FA CODE
We all have sent multiple messages to that colleague who keeps asking for the 2FA code to a shared account. Such a waste of productive time. With Ente Auth, you can securely share your 2FA tokens as a link. You can even set an expiry time for the link as well.
ADD NOTES
Use notes to save any additional information including recovery codes. All notes are backed up with end to end encryption so you dont have to worry about losing them.
SUPPORT

View File

@@ -0,0 +1,81 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_41060_128753)">
<rect width="1024" height="1024" rx="234" fill="url(#paint0_linear_41060_128753)"/>
<g opacity="0.8" filter="url(#filter0_dii_41060_128753)">
<path d="M512.364 162L226 289.273V480.182C226 656.773 348.182 821.909 512.364 862C676.545 821.909 798.727 656.773 798.727 480.182V289.273L512.364 162ZM512.364 352.909C556.909 352.909 601.455 387.909 601.455 432.455V480.182C620.546 480.182 639.636 499.273 639.636 521.545V632.909C639.636 652 620.545 671.091 598.273 671.091H423.273C404.182 671.091 385.091 652 385.091 629.727V518.364C385.091 499.273 404.182 480.182 423.273 480.182V432.455C423.273 387.909 467.818 352.909 512.364 352.909ZM512.364 391.091C486.909 391.091 464.636 407 464.636 432.455V480.182H560.091V432.455C560.091 407 537.818 391.091 512.364 391.091Z" fill="white"/>
</g>
<g opacity="0.8" filter="url(#filter1_dii_41060_128753)">
<path d="M512.364 162L226 289.273V480.182C226 656.773 348.182 821.909 512.364 862C676.545 821.909 798.727 656.773 798.727 480.182V289.273L512.364 162ZM512.364 352.909C556.909 352.909 601.455 387.909 601.455 432.455V480.182C620.546 480.182 639.636 499.273 639.636 521.545V632.909C639.636 652 620.545 671.091 598.273 671.091H423.273C404.182 671.091 385.091 652 385.091 629.727V518.364C385.091 499.273 404.182 480.182 423.273 480.182V432.455C423.273 387.909 467.818 352.909 512.364 352.909ZM512.364 391.091C486.909 391.091 464.636 407 464.636 432.455V480.182H560.091V432.455C560.091 407 537.818 391.091 512.364 391.091Z" fill="white"/>
</g>
<g opacity="0.8" filter="url(#filter2_ii_41060_128753)">
<path d="M512.364 162L226 289.273V480.182C226 656.773 348.182 821.909 512.364 862C676.545 821.909 798.727 656.773 798.727 480.182V289.273L512.364 162ZM512.364 352.909C556.909 352.909 601.455 387.909 601.455 432.455V480.182C620.546 480.182 639.636 499.273 639.636 521.545V632.909C639.636 652 620.545 671.091 598.273 671.091H423.273C404.182 671.091 385.091 652 385.091 629.727V518.364C385.091 499.273 404.182 480.182 423.273 480.182V432.455C423.273 387.909 467.818 352.909 512.364 352.909ZM512.364 391.091C486.909 391.091 464.636 407 464.636 432.455V480.182H560.091V432.455C560.091 407 537.818 391.091 512.364 391.091Z" fill="white"/>
</g>
</g>
<defs>
<filter id="filter0_dii_41060_128753" x="46.613" y="90.2452" width="931.502" height="1058.77" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="107.632"/>
<feGaussianBlur stdDeviation="89.6935"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_41060_128753"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_41060_128753" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="17.9387"/>
<feGaussianBlur stdDeviation="8.96935"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="shape" result="effect2_innerShadow_41060_128753"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-8.96935"/>
<feGaussianBlur stdDeviation="4.48467"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="effect2_innerShadow_41060_128753" result="effect3_innerShadow_41060_128753"/>
</filter>
<filter id="filter1_dii_41060_128753" x="46.613" y="90.2452" width="931.502" height="1058.77" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="107.632"/>
<feGaussianBlur stdDeviation="89.6935"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.12 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_41060_128753"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_41060_128753" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="17.9387"/>
<feGaussianBlur stdDeviation="8.96935"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="shape" result="effect2_innerShadow_41060_128753"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-8.96935"/>
<feGaussianBlur stdDeviation="4.48467"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="effect2_innerShadow_41060_128753" result="effect3_innerShadow_41060_128753"/>
</filter>
<filter id="filter2_ii_41060_128753" x="226" y="153.031" width="572.728" height="726.908" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="17.9387"/>
<feGaussianBlur stdDeviation="8.96935"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_41060_128753"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="-8.96935"/>
<feGaussianBlur stdDeviation="4.48467"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="effect1_innerShadow_41060_128753" result="effect2_innerShadow_41060_128753"/>
</filter>
<linearGradient id="paint0_linear_41060_128753" x1="96.5" y1="71" x2="985" y2="977.5" gradientUnits="userSpaceOnUse">
<stop stop-color="#C373F2"/>
<stop offset="1" stop-color="#9610D6"/>
</linearGradient>
<clipPath id="clip0_41060_128753">
<rect width="1024" height="1024" rx="234" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

View File

@@ -1 +1 @@
ente is an end-to-end encrypted authenticator app
Free, Cross Platform, Private, Open Source Two Factor Authenticator App

View File

@@ -1 +1 @@
Ente Authenticator
Ente Auth - 2FA Authenticator

View File

@@ -0,0 +1,32 @@
#
# Generated file, do not edit.
#
import lldb
def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict):
"""Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages."""
base = frame.register["x0"].GetValueAsAddress()
page_len = frame.register["x1"].GetValueAsUnsigned()
# Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the
# first page to see if handled it correctly. This makes diagnosing
# misconfiguration (e.g. missing breakpoint) easier.
data = bytearray(page_len)
data[0:8] = b'IHELPED!'
error = lldb.SBError()
frame.GetThread().GetProcess().WriteMemory(base, data, error)
if not error.Success():
print(f'Failed to write into {base}[+{page_len}]', error)
return
def __lldb_init_module(debugger: lldb.SBDebugger, _):
target = debugger.GetDummyTarget()
# Caveat: must use BreakpointCreateByRegEx here and not
# BreakpointCreateByName. For some reasons callback function does not
# get carried over from dummy target for the later.
bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$")
bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__))
bp.SetAutoContinue(True)
print("-- LLDB integration loaded --")

View File

@@ -0,0 +1,5 @@
#
# Generated file, do not edit.
#
command script import --relative-to-command-file flutter_lldb_helper.py

View File

@@ -3,7 +3,6 @@ PODS:
- Flutter
- connectivity_plus (0.0.1):
- Flutter
- FlutterMacOS
- cupertino_http (0.0.1):
- Flutter
- FlutterMacOS
@@ -40,6 +39,8 @@ PODS:
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- ente_qr (0.0.1):
- Flutter
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
@@ -61,13 +62,12 @@ PODS:
- Flutter
- flutter_local_notifications (0.0.1):
- Flutter
- flutter_native_splash (0.0.1):
- flutter_native_splash (2.4.3):
- Flutter
- flutter_secure_storage (6.0.0):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
- local_auth_darwin (0.0.1):
- Flutter
- FlutterMacOS
@@ -87,9 +87,9 @@ PODS:
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- SDWebImage (5.21.0):
- SDWebImage/Core (= 5.21.0)
- SDWebImage/Core (5.21.0)
- SDWebImage (5.21.1):
- SDWebImage/Core (= 5.21.1)
- SDWebImage/Core (5.21.1)
- Sentry/HybridSDK (8.46.0)
- sentry_flutter (8.14.2):
- Flutter
@@ -102,37 +102,43 @@ PODS:
- FlutterMacOS
- sodium_libs (2.2.1):
- Flutter
- sqflite (0.0.3):
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- "sqlite3 (3.46.1+1)":
- "sqlite3/common (= 3.46.1+1)"
- "sqlite3/common (3.46.1+1)"
- "sqlite3/dbstatvtab (3.46.1+1)":
- sqlite3 (3.50.2):
- sqlite3/common (= 3.50.2)
- sqlite3/common (3.50.2)
- sqlite3/dbstatvtab (3.50.2):
- sqlite3/common
- "sqlite3/fts5 (3.46.1+1)":
- sqlite3/fts5 (3.50.2):
- sqlite3/common
- "sqlite3/perf-threadsafe (3.46.1+1)":
- sqlite3/math (3.50.2):
- sqlite3/common
- "sqlite3/rtree (3.46.1+1)":
- sqlite3/perf-threadsafe (3.50.2):
- sqlite3/common
- sqlite3/rtree (3.50.2):
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- Flutter
- "sqlite3 (~> 3.46.0+1)"
- FlutterMacOS
- sqlite3 (~> 3.50.1)
- sqlite3/dbstatvtab
- sqlite3/fts5
- sqlite3/math
- sqlite3/perf-threadsafe
- sqlite3/rtree
- SwiftyGif (5.4.5)
- Toast (4.1.1)
- ua_client_hints (1.4.1):
- Flutter
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- app_links (from `.symlinks/plugins/app_links/ios`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- cupertino_http (from `.symlinks/plugins/cupertino_http/darwin`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- ente_qr (from `.symlinks/plugins/ente_qr/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- file_saver (from `.symlinks/plugins/file_saver/ios`)
- fk_user_agent (from `.symlinks/plugins/fk_user_agent/ios`)
@@ -155,8 +161,9 @@ DEPENDENCIES:
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sodium_libs (from `.symlinks/plugins/sodium_libs/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`)
- ua_client_hints (from `.symlinks/plugins/ua_client_hints/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS:
@@ -169,17 +176,18 @@ SPEC REPOS:
- Sentry
- sqlite3
- SwiftyGif
- Toast
EXTERNAL SOURCES:
app_links:
:path: ".symlinks/plugins/app_links/ios"
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/darwin"
:path: ".symlinks/plugins/connectivity_plus/ios"
cupertino_http:
:path: ".symlinks/plugins/cupertino_http/darwin"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
ente_qr:
:path: ".symlinks/plugins/ente_qr/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
file_saver:
@@ -224,51 +232,54 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sodium_libs:
:path: ".symlinks/plugins/sodium_libs/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/darwin"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
sqlite3_flutter_libs:
:path: ".symlinks/plugins/sqlite3_flutter_libs/ios"
:path: ".symlinks/plugins/sqlite3_flutter_libs/darwin"
ua_client_hints:
:path: ".symlinks/plugins/ua_client_hints/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
app_links: e7a6750a915a9e161c58d91bc610e8cd1d4d0ad0
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
app_links: f3e17e4ee5e357b39d8b95290a9b2c299fca71c6
connectivity_plus: 2a701ffec2c0ae28a48cf7540e279787e77c447d
cupertino_http: 947a233f40cfea55167a49f2facc18434ea117ba
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
ente_qr: f39434aa69ea0e71047b49316365b2737f8a20aa
file_picker: b159e0c068aef54932bb15dc9fd1571818edaf49
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
flutter_email_sender: e03bdda7637bcd3539bfe718fddd980e9508efaa
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
flutter_local_notifications: df98d66e515e1ca797af436137b4459b160ad8c9
flutter_native_splash: df59bb2e1421aa0282cb2e95618af4dcb0c56c29
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f
local_auth_darwin: fa4b06454df7df8e97c18d7ee55151c57e7af0de
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
objective_c: 77e887b5ba1827970907e10e832eec1683f3431d
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
SDWebImage: f84b0feeb08d2d11e6a9b843cb06d75ebf5b8868
SDWebImage: f29024626962457f3470184232766516dee8dfea
Sentry: da60d980b197a46db0b35ea12cb8f39af48d8854
sentry_flutter: 2df8b0aab7e4aba81261c230cbea31c82a62dd1b
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
sqlite3_flutter_libs: c00457ebd31e59fa6bb830380ddba24d44fbcd3b
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
sqlite3: 3e82a2daae39ba3b41ae6ee84a130494585460fc
sqlite3_flutter_libs: 2c48c4ee7217fd653251975e43412250d5bcbbe2
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
ua_client_hints: aeabd123262c087f0ce151ef96fa3ab77bfc8b38
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
PODFILE CHECKSUM: 78f002751f1a8f65042b8da97902ba4124271c5a

View File

@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
@@ -43,11 +44,13 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">

View File

@@ -2,20 +2,21 @@ import 'dart:async';
import 'dart:io';
import 'package:adaptive_theme/adaptive_theme.dart';
import 'package:ente_accounts/services/user_service.dart';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/core/event_bus.dart';
import 'package:ente_auth/ente_theme_data.dart';
import 'package:ente_auth/events/signed_in_event.dart';
import 'package:ente_auth/events/signed_out_event.dart';
import "package:ente_auth/l10n/l10n.dart";
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/locale.dart';
import "package:ente_auth/onboarding/view/onboarding_page.dart";
import 'package:ente_auth/services/authenticator_service.dart';
import 'package:ente_auth/services/update_service.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/services/window_listener_service.dart';
import 'package:ente_auth/ui/home_page.dart';
import 'package:ente_auth/ui/settings/app_update_dialog.dart';
import 'package:ente_events/event_bus.dart';
import 'package:ente_events/models/signed_in_event.dart';
import 'package:ente_events/models/signed_out_event.dart';
import 'package:ente_strings/l10n/strings_localizations.dart';
import 'package:flutter/foundation.dart';
import "package:flutter/material.dart";
import 'package:flutter_localizations/flutter_localizations.dart';
@@ -40,7 +41,7 @@ class _AppState extends State<App>
late StreamSubscription<SignedOutEvent> _signedOutEvent;
late StreamSubscription<SignedInEvent> _signedInEvent;
Locale? locale;
setLocale(Locale newLocale) {
void setLocale(Locale newLocale) {
setState(() {
locale = newLocale;
});
@@ -82,7 +83,7 @@ class _AppState extends State<App>
UpdateService.instance.getLatestVersionInfo(),
);
},
barrierColor: Colors.black.withOpacity(0.85),
barrierColor: Colors.black.withValues(alpha: 0.85),
);
});
}
@@ -131,6 +132,7 @@ class _AppState extends State<App>
localeListResolutionCallback: localResolutionCallBack,
localizationsDelegates: const [
AppLocalizations.delegate,
StringsLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
@@ -150,6 +152,7 @@ class _AppState extends State<App>
localeListResolutionCallback: localResolutionCallBack,
localizationsDelegates: const [
AppLocalizations.delegate,
StringsLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
@@ -199,9 +202,11 @@ class _AppState extends State<App>
switch (menuItem.key) {
case 'hide_window':
windowManager.hide();
windowManager.setSkipTaskbar(true);
break;
case 'show_window':
windowManager.show();
windowManager.setSkipTaskbar(false);
break;
case 'exit_app':
windowManager.destroy();

View File

@@ -27,10 +27,8 @@ Future<void> bootstrap(FutureOr<Widget> Function() builder) async {
await runZonedGuarded(
() async {
await BlocOverrides.runZoned(
() async => runApp(await builder()),
blocObserver: AppBlocObserver(),
);
Bloc.observer = AppBlocObserver();
runApp(await builder());
},
(error, stackTrace) => log(error.toString(), stackTrace: stackTrace),
);

View File

@@ -1,95 +1,36 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io' as io;
import 'dart:typed_data';
import 'package:bip39/bip39.dart' as bip39;
import 'package:ente_auth/core/constants.dart';
import 'package:ente_auth/core/event_bus.dart';
import 'package:ente_auth/events/endpoint_updated_event.dart';
import 'package:ente_auth/events/signed_in_event.dart';
import 'package:ente_auth/events/signed_out_event.dart';
import 'package:ente_auth/models/key_attributes.dart';
import 'package:ente_auth/models/key_gen_result.dart';
import 'package:ente_auth/models/private_key_attributes.dart';
import 'package:ente_auth/store/authenticator_db.dart';
import 'package:ente_auth/utils/directory_utils.dart';
import 'package:ente_base/models/database.dart';
import 'package:ente_configuration/base_configuration.dart';
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logging/logging.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:tuple/tuple.dart';
class Configuration {
class Configuration extends BaseConfiguration {
Configuration._privateConstructor();
static final Configuration instance = Configuration._privateConstructor();
static const endpoint = String.fromEnvironment(
"endpoint",
defaultValue: kDefaultProductionEndpoint,
);
static const emailKey = "email";
static const keyAttributesKey = "key_attributes";
static const lastTempFolderClearTimeKey = "last_temp_folder_clear_time";
static const keyKey = "key";
static const secretKeyKey = "secret_key";
static const authSecretKeyKey = "auth_secret_key";
static const offlineAuthSecretKey = "offline_auth_secret_key";
static const tokenKey = "token";
static const encryptedTokenKey = "encrypted_token";
static const userIDKey = "user_id";
static const hasMigratedSecureStorageKey = "has_migrated_secure_storage";
static const hasOptedForOfflineModeKey = "has_opted_for_offline_mode";
static const endPointKey = "endpoint";
final List<String> onlineSecureKeys = [
keyKey,
secretKeyKey,
authSecretKeyKey,
];
final kTempFolderDeletionTimeBuffer = const Duration(days: 1).inMicroseconds;
static final _logger = Logger("Configuration");
String? _cachedToken;
late SharedPreferences _preferences;
String? _key;
String? _secretKey;
String? _authSecretKey;
String? _offlineAuthKey;
late FlutterSecureStorage _secureStorage;
late String _tempDirectory;
String? _volatilePassword;
Future<void> init() async {
@override
Future<void> init(List<EnteBaseDatabase> dbs) async {
await super.init(dbs);
_preferences = await SharedPreferences.getInstance();
sqfliteFfiInit();
_secureStorage = const FlutterSecureStorage(
iOptions: IOSOptions(
accessibility: KeychainAccessibility.first_unlock_this_device,
),
);
_tempDirectory = (await DirectoryUtils.getDirectoryForInit()).path;
final tempDirectory = io.Directory(_tempDirectory);
try {
final currentTime = DateTime.now().microsecondsSinceEpoch;
if (tempDirectory.existsSync() &&
(_preferences.getInt(lastTempFolderClearTimeKey) ?? 0) <
(currentTime - kTempFolderDeletionTimeBuffer)) {
await tempDirectory.delete(recursive: true);
await _preferences.setInt(lastTempFolderClearTimeKey, currentTime);
_logger.info("Cleared temp folder");
} else {
_logger.info("Skipping temp folder clear");
}
} catch (e) {
_logger.warning(e);
}
tempDirectory.createSync(recursive: true);
await _initOnlineAccount();
sqfliteFfiInit();
await _initOfflineAccount();
}
@@ -99,303 +40,10 @@ class Configuration {
);
}
Future<void> _initOnlineAccount() async {
if (!_preferences.containsKey(tokenKey)) {
for (final key in onlineSecureKeys) {
unawaited(
_secureStorage.delete(
key: key,
),
);
}
} else {
_key = await _secureStorage.read(
key: keyKey,
);
_secretKey = await _secureStorage.read(
key: secretKeyKey,
);
_authSecretKey = await _secureStorage.read(
key: authSecretKeyKey,
);
if (_key == null) {
await logout(autoLogout: true);
}
}
}
@override
Future<void> logout({bool autoLogout = false}) async {
await _preferences.clear();
for (String key in onlineSecureKeys) {
await _secureStorage.delete(
key: key,
);
}
await AuthenticatorDB.instance.clearTable();
_key = null;
_cachedToken = null;
_secretKey = null;
_authSecretKey = null;
Bus.instance.fire(SignedOutEvent());
}
Future<KeyGenResult> generateKey(String password) async {
// Create a master key
final masterKey = CryptoUtil.generateKey();
// Create a recovery key
final recoveryKey = CryptoUtil.generateKey();
// Encrypt master key and recovery key with each other
final encryptedMasterKey = CryptoUtil.encryptSync(masterKey, recoveryKey);
final encryptedRecoveryKey = CryptoUtil.encryptSync(recoveryKey, masterKey);
// Derive a key from the password that will be used to encrypt and
// decrypt the master key
final kekSalt = CryptoUtil.getSaltToDeriveKey();
final derivedKeyResult = await CryptoUtil.deriveSensitiveKey(
utf8.encode(password),
kekSalt,
);
final loginKey = await CryptoUtil.deriveLoginKey(derivedKeyResult.key);
// Encrypt the key with this derived key
final encryptedKeyData =
CryptoUtil.encryptSync(masterKey, derivedKeyResult.key);
// Generate a public-private keypair and encrypt the latter
final keyPair = CryptoUtil.generateKeyPair();
final encryptedSecretKeyData =
CryptoUtil.encryptSync(keyPair.secretKey.extractBytes(), masterKey);
final attributes = KeyAttributes(
CryptoUtil.bin2base64(kekSalt),
CryptoUtil.bin2base64(encryptedKeyData.encryptedData!),
CryptoUtil.bin2base64(encryptedKeyData.nonce!),
CryptoUtil.bin2base64(keyPair.publicKey),
CryptoUtil.bin2base64(encryptedSecretKeyData.encryptedData!),
CryptoUtil.bin2base64(encryptedSecretKeyData.nonce!),
derivedKeyResult.memLimit,
derivedKeyResult.opsLimit,
CryptoUtil.bin2base64(encryptedMasterKey.encryptedData!),
CryptoUtil.bin2base64(encryptedMasterKey.nonce!),
CryptoUtil.bin2base64(encryptedRecoveryKey.encryptedData!),
CryptoUtil.bin2base64(encryptedRecoveryKey.nonce!),
);
final privateAttributes = PrivateKeyAttributes(
CryptoUtil.bin2base64(masterKey),
CryptoUtil.bin2hex(recoveryKey),
CryptoUtil.bin2base64(keyPair.secretKey.extractBytes()),
);
return KeyGenResult(attributes, privateAttributes, loginKey);
}
Future<Tuple2<KeyAttributes, Uint8List>> getAttributesForNewPassword(
String password,
) async {
// Get master key
final masterKey = getKey();
// Derive a key from the password that will be used to encrypt and
// decrypt the master key
final kekSalt = CryptoUtil.getSaltToDeriveKey();
final derivedKeyResult = await CryptoUtil.deriveSensitiveKey(
utf8.encode(password),
kekSalt,
);
final loginKey = await CryptoUtil.deriveLoginKey(derivedKeyResult.key);
// Encrypt the key with this derived key
final encryptedKeyData =
CryptoUtil.encryptSync(masterKey!, derivedKeyResult.key);
final existingAttributes = getKeyAttributes();
final updatedAttributes = existingAttributes!.copyWith(
kekSalt: CryptoUtil.bin2base64(kekSalt),
encryptedKey: CryptoUtil.bin2base64(encryptedKeyData.encryptedData!),
keyDecryptionNonce: CryptoUtil.bin2base64(encryptedKeyData.nonce!),
memLimit: derivedKeyResult.memLimit,
opsLimit: derivedKeyResult.opsLimit,
);
return Tuple2(updatedAttributes, loginKey);
}
// decryptSecretsAndGetLoginKey decrypts the master key and recovery key
// with the given password and save them in local secure storage.
// This method also returns the keyEncKey that can be used for performing
// SRP setup for existing users.
Future<Uint8List> decryptSecretsAndGetKeyEncKey(
String password,
KeyAttributes attributes, {
Uint8List? keyEncryptionKey,
}) async {
_logger.info('Start decryptAndSaveSecrets');
keyEncryptionKey ??= await CryptoUtil.deriveKey(
utf8.encode(password),
CryptoUtil.base642bin(attributes.kekSalt),
attributes.memLimit,
attributes.opsLimit,
);
_logger.info('user-key done');
Uint8List key;
try {
key = CryptoUtil.decryptSync(
CryptoUtil.base642bin(attributes.encryptedKey),
keyEncryptionKey,
CryptoUtil.base642bin(attributes.keyDecryptionNonce),
);
} catch (e) {
_logger.severe('master-key failed, incorrect password?', e);
throw Exception("Incorrect password");
}
_logger.info("master-key done");
await setKey(CryptoUtil.bin2base64(key));
final secretKey = CryptoUtil.decryptSync(
CryptoUtil.base642bin(attributes.encryptedSecretKey),
key,
CryptoUtil.base642bin(attributes.secretKeyDecryptionNonce),
);
_logger.info("secret-key done");
await setSecretKey(CryptoUtil.bin2base64(secretKey));
final token = CryptoUtil.openSealSync(
CryptoUtil.base642bin(getEncryptedToken()!),
CryptoUtil.base642bin(attributes.publicKey),
secretKey,
);
_logger.info('appToken done');
await setToken(
CryptoUtil.bin2base64(token, urlSafe: true),
);
return keyEncryptionKey;
}
Future<void> recover(String recoveryKey) async {
// check if user has entered mnemonic code
if (recoveryKey.contains(' ')) {
final split = recoveryKey.split(' ');
if (split.length != mnemonicKeyWordCount) {
String wordThatIsFollowedByEmptySpaceInSplit = '';
for (int i = 0; i < split.length; i++) {
String word = split[i];
if (word.isEmpty) {
wordThatIsFollowedByEmptySpaceInSplit =
'\n\nExtra space after word at position $i';
break;
}
}
throw AssertionError(
'\nRecovery code should have $mnemonicKeyWordCount words, '
'found ${split.length} words instead.$wordThatIsFollowedByEmptySpaceInSplit',
);
}
recoveryKey = bip39.mnemonicToEntropy(recoveryKey);
}
final attributes = getKeyAttributes();
Uint8List masterKey;
try {
masterKey = await CryptoUtil.decrypt(
CryptoUtil.base642bin(attributes!.masterKeyEncryptedWithRecoveryKey),
CryptoUtil.hex2bin(recoveryKey),
CryptoUtil.base642bin(attributes.masterKeyDecryptionNonce),
);
} catch (e) {
_logger.severe(e);
rethrow;
}
await setKey(CryptoUtil.bin2base64(masterKey));
final secretKey = CryptoUtil.decryptSync(
CryptoUtil.base642bin(attributes.encryptedSecretKey),
masterKey,
CryptoUtil.base642bin(attributes.secretKeyDecryptionNonce),
);
await setSecretKey(CryptoUtil.bin2base64(secretKey));
final token = CryptoUtil.openSealSync(
CryptoUtil.base642bin(getEncryptedToken()!),
CryptoUtil.base642bin(attributes.publicKey),
secretKey,
);
await setToken(
CryptoUtil.bin2base64(token, urlSafe: true),
);
}
String getHttpEndpoint() {
return _preferences.getString(endPointKey) ?? endpoint;
}
Future<void> setHttpEndpoint(String endpoint) async {
await _preferences.setString(endPointKey, endpoint);
Bus.instance.fire(EndpointUpdatedEvent());
}
String? getToken() {
_cachedToken ??= _preferences.getString(tokenKey);
return _cachedToken;
}
bool isLoggedIn() {
return getToken() != null;
}
Future<void> setToken(String token) async {
_cachedToken = token;
await _preferences.setString(tokenKey, token);
Bus.instance.fire(SignedInEvent());
}
Future<void> setEncryptedToken(String encryptedToken) async {
await _preferences.setString(encryptedTokenKey, encryptedToken);
}
String? getEncryptedToken() {
return _preferences.getString(encryptedTokenKey);
}
String? getEmail() {
return _preferences.getString(emailKey);
}
Future<void> setEmail(String email) async {
await _preferences.setString(emailKey, email);
}
int? getUserID() {
return _preferences.getInt(userIDKey);
}
Future<void> setUserID(int userID) async {
await _preferences.setInt(userIDKey, userID);
}
Future<void> setKeyAttributes(KeyAttributes attributes) async {
await _preferences.setString(keyAttributesKey, attributes.toJson());
}
KeyAttributes? getKeyAttributes() {
final jsonValue = _preferences.getString(keyAttributesKey);
if (jsonValue == null) {
return null;
} else {
return KeyAttributes.fromJson(jsonValue);
}
}
Future<void> setKey(String key) async {
_key = key;
await _secureStorage.write(
key: keyKey,
value: key,
);
}
Future<void> setSecretKey(String? secretKey) async {
_secretKey = secretKey;
await _secureStorage.write(
key: secretKeyKey,
value: secretKey,
);
await super.logout();
}
Future<void> setAuthSecretKey(String? authSecretKey) async {
@@ -406,14 +54,6 @@ class Configuration {
);
}
Uint8List? getKey() {
return _key == null ? null : CryptoUtil.base642bin(_key!);
}
Uint8List? getSecretKey() {
return _secretKey == null ? null : CryptoUtil.base642bin(_secretKey!);
}
Uint8List? getAuthSecretKey() {
return _authSecretKey == null
? null
@@ -426,24 +66,6 @@ class Configuration {
: CryptoUtil.base642bin(_offlineAuthKey!);
}
Uint8List getRecoveryKey() {
final keyAttributes = getKeyAttributes()!;
return CryptoUtil.decryptSync(
CryptoUtil.base642bin(keyAttributes.recoveryKeyEncryptedWithMasterKey),
getKey()!,
CryptoUtil.base642bin(keyAttributes.recoveryKeyDecryptionNonce),
);
}
// Caution: This directory is cleared on app start
String getTempDirectory() {
return _tempDirectory;
}
bool hasConfiguredAccount() {
return getToken() != null && _key != null;
}
bool hasOptedForOfflineMode() {
return _preferences.getBool(hasOptedForOfflineModeKey) ?? false;
}
@@ -464,16 +86,4 @@ class Configuration {
}
await _preferences.setBool(hasOptedForOfflineModeKey, true);
}
void setVolatilePassword(String volatilePassword) {
_volatilePassword = volatilePassword;
}
void resetVolatilePassword() {
_volatilePassword = null;
}
String? getVolatilePassword() {
return _volatilePassword;
}
}

View File

@@ -39,7 +39,7 @@ final lightThemeData = ThemeData(
bodyLarge: const TextStyle(color: Colors.orange),
),
cardColor: const Color.fromRGBO(250, 250, 250, 1.0),
dialogTheme: const DialogTheme().copyWith(
dialogTheme: const DialogThemeData().copyWith(
backgroundColor: const Color.fromRGBO(250, 250, 250, 1.0), //
titleTextStyle: const TextStyle(
color: Colors.black,
@@ -150,7 +150,7 @@ final darkThemeData = ThemeData(
elevation: 0,
),
cardColor: const Color.fromRGBO(10, 15, 15, 1.0),
dialogTheme: const DialogTheme().copyWith(
dialogTheme: const DialogThemeData().copyWith(
backgroundColor: const Color.fromRGBO(15, 15, 15, 1.0),
titleTextStyle: const TextStyle(
color: Colors.white,
@@ -275,7 +275,7 @@ TextTheme _buildTextTheme(Color textColor) {
fontWeight: FontWeight.w500,
),
bodySmall: TextStyle(
color: textColor.withOpacity(0.4),
color: textColor.withValues(alpha: 0.4),
fontSize: 10,
fontWeight: FontWeight.w500,
),
@@ -343,7 +343,7 @@ extension CustomColorScheme on ColorScheme {
: const Color.fromRGBO(48, 48, 48, 0.5);
Color get iconColor => brightness == Brightness.light
? const Color.fromRGBO(0, 0, 0, 1).withOpacity(0.75)
? const Color.fromRGBO(0, 0, 0, 1).withValues(alpha: 0.75)
: const Color.fromRGBO(255, 255, 255, 1);
Color get bgColorForQuestions => brightness == Brightness.light
@@ -354,7 +354,7 @@ extension CustomColorScheme on ColorScheme {
Color get cupertinoPickerTopColor => brightness == Brightness.light
? const Color.fromARGB(255, 238, 238, 238)
: const Color.fromRGBO(255, 255, 255, 1).withOpacity(0.1);
: const Color.fromRGBO(255, 255, 255, 1).withValues(alpha: 0.1);
Color get stepProgressUnselectedColor => brightness == Brightness.light
? const Color.fromRGBO(196, 196, 196, 0.6)
@@ -381,20 +381,20 @@ extension CustomColorScheme on ColorScheme {
: const Color.fromRGBO(20, 20, 20, 1);
Color get galleryThumbDrawColor => brightness == Brightness.light
? const Color.fromRGBO(0, 0, 0, 1).withOpacity(0.8)
: const Color.fromRGBO(255, 255, 255, 1).withOpacity(0.5);
? const Color.fromRGBO(0, 0, 0, 1).withValues(alpha: 0.8)
: const Color.fromRGBO(255, 255, 255, 1).withValues(alpha: 0.5);
Color get backupEnabledBgColor => brightness == Brightness.light
? const Color.fromRGBO(230, 230, 230, 0.95)
: const Color.fromRGBO(10, 40, 40, 0.3);
Color get dotsIndicatorActiveColor => brightness == Brightness.light
? const Color.fromRGBO(0, 0, 0, 1).withOpacity(0.5)
: const Color.fromRGBO(255, 255, 255, 1).withOpacity(0.5);
? const Color.fromRGBO(0, 0, 0, 1).withValues(alpha: 0.5)
: const Color.fromRGBO(255, 255, 255, 1).withValues(alpha: 0.5);
Color get dotsIndicatorInactiveColor => brightness == Brightness.light
? const Color.fromRGBO(0, 0, 0, 1).withOpacity(0.12)
: const Color.fromRGBO(255, 255, 255, 1).withOpacity(0.12);
? const Color.fromRGBO(0, 0, 0, 1).withValues(alpha: 0.12)
: const Color.fromRGBO(255, 255, 255, 1).withValues(alpha: 0.12);
Color get toastTextColor => brightness == Brightness.light
? const Color.fromRGBO(255, 255, 255, 1)
@@ -409,8 +409,8 @@ extension CustomColorScheme on ColorScheme {
: const Color.fromRGBO(100, 100, 100, 1);
Color get themeSwitchInactiveIconColor => brightness == Brightness.light
? const Color.fromRGBO(0, 0, 0, 1).withOpacity(0.5)
: const Color.fromRGBO(255, 255, 255, 1).withOpacity(0.5);
? const Color.fromRGBO(0, 0, 0, 1).withValues(alpha: 0.5)
: const Color.fromRGBO(255, 255, 255, 1).withValues(alpha: 0.5);
Color get searchResultsColor => brightness == Brightness.light
? const Color.fromRGBO(245, 245, 245, 1.0)
@@ -421,8 +421,8 @@ extension CustomColorScheme on ColorScheme {
: const Color.fromRGBO(150, 150, 150, 1);
Color get searchResultsBackgroundColor => brightness == Brightness.light
? Colors.black.withOpacity(0.32)
: Colors.black.withOpacity(0.64);
? Colors.black.withValues(alpha: 0.32)
: Colors.black.withValues(alpha: 0.64);
Color get codeCardBackgroundColor => brightness == Brightness.light
? const Color.fromRGBO(246, 246, 246, 1)

View File

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

View File

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

View File

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

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