Highlighted
Deduplication
I want to extend my thanks to @panoti. He has single-handled implemented the deduplication and hash calculation after a long period of investigating and discussing with the internal team. We can now rest assured that no duplicated photos or videos will be in the system simultaneously.
Virtual Scrolling - Web
Test instance of about 15_000 photos and videos - Should behave similarly on 100_000 assets instance
With the increasing number of users, we have many cases that currently have more than 100_000 photos and images combined in their gallery. With the current implementation of naively getting all the photos and video metadata and then painting them on the screen, the browser, of course, will crash, and the initial load time will be a century long. Itchy to solve this scaling problem, and with a nice pointer from the Google UI Designer himself in the article Building the Google Photos Web UI, we now have virtual scrolling on the web.
The implementation is exactly similar to how the article presented it. All of the photos and videos that are not in the viewport are not rendered. This helps reduce the browser's resource usage and reduces the initial load time as in you only have a dozen photos and videos in the database.
I sincerely hope you guys find this feature enjoyable.
PS: Firefox is currently performing better than Chrome for this feature. Other optimization of this feature will be pushed out in the upcoming releases.
Better caching system - Mobile
The web has virtual scrolling. What about the mobile app?
The mobile app has been handling many assets very well with the help of Flutter’s rendering engine, which is somewhat smarter than the web. For this release, we are pushing out a mechanism for you to manage the caching of the assets. The cache thumbnail and assets content will be saved to the local storage to improve the loading time.
We eventually will want to implement some mechanisms that are similar to virtual scrolling on the web in the mobile app as well to reduce initial data load time.
What's Changed
Server
- optimization(server): add asset repository and refactor asset service by @alextran1502 in #540
- fix(server): avoid loading all file content on memory by @panoti in #545
- fix(server): parse all image formats and enrich metadata by @panoti in #547
- feat(server): calculate sha1 checksum by @panoti in #525
- feat(server): generate a checksum for previously uploaded assets by @panoti in #558
- feat(server): support 3gpp format by @panoti in #582
- feat(server): de-duplication by @panoti in #557
- hotfix(server): skip EXIF extraction on duplicate file by @panoti in #590
- fix(server): change the
createdAt
andmodifiedAt
to the correct type in the database by @alextran1502 in #591
Mobile
- feat(mobile): add Korean translation for the mobile app by @hismethod in #549
- feat(mobile): better caching for mobile by @matthinc in #521
- fix(mobile): persist WiFi + charging settings of background backup by @zoodyy in #553
- feat(mobile): ask the user to disable battery optimizations when turning on background backup by @zoodyy in #554
- feat(mobile): Italian language for Mobile App by @badbreze in #559
- feat(mobile): update localizely.yml to include danish locale by @SirBogner in #574
- fix(mobile): fix cache related crash by @matthinc in #593
Web
- fix(web): file uploading error in album page by @panoti in #550
- feat(web): virtual scroll on the web by @alextran1502 in #573
- fix(web): upload assets to an album in asset selection by @alextran1502 in #579
- feat(web): show all albums an asset appears in on the asset viewer page by @matthinc in #575
- feat(web): use the runtime environment variable for login page message to lower web container startup time by @bo0tzz in #577
Support
If you find the project helpful and help you in some ways, you can support the project one time or monthly from Github Sponsor
It is a great way to let me know that you want me to continue developing and working on this project for years to come.
F-Droid
You can get the app on F-droid by clicking the image below.
Android
You can also download the app from Google Play Store here
The App version might be lagging behind the latest release due to the review process.
iOS
You can download the app from Apple AppStore here:
The App version might be lagging behind the latest release due to the review process.
Cheers! 🎉
New Contributors
- @hismethod made their first contribution in #549
- @badbreze made their first contribution in #559
- @SirBogner made their first contribution in #574
Full Changelog: v1.26.0_36-dev...v1.27.0_37-dev