Skip to main content

· One min read
Niaz Faridani-Rad

Upstream:

  • 🚀 Docker: Use pgautoupgrade/pgautoupgrade to use latest postgres
  • ✨ LibrePhotos: Remove heavyweight process setting
  • 🔨 LibrePhotos: Fix xss file upload vulnerability (Found and fixed by ii5mai1)
  • 🔨 Docker: Remove postgres setting that can lead to a corrupt db in certain scenarios

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 6 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· 2 min read
Niaz Faridani-Rad

Upstream:

  • 🚀 LibrePhotos: Reintroduce Classification

This change aims to reintroduce classification, while keeping the current clustering intact. Clustering was chosen, because it works well in a cold start scenario, where the user does not have any persons. Common problems with clustering are that there is no way to only match faces to known persons, and that previous input does not improve the clustering results. Classification should solve this problem! Instead of finding all the clusters, classification will match all unknown faces with already known persons instead.

  • ✨ LibrePhotos: Faces are now only soft deleted
  • ✨ LibrePhotos: All cluster and classification probabilities are now saved
  • ✨ Frontend: New Light box for viewing images
  • ✨ Frontend: You can now delete faces from the lightbox
  • ✨ Frontend: Hovering over a name in the sidebar, will outline the face
  • ✨ Frontend: There is now a separate "Unknown" section in the face dashboard
  • ✨ Frontend: Inferred faces are now the first tab, instead of the last
  • ✨ Frontend: New filter for viewing cluster or classifications
  • ✨ Frontend: New filter for label probability
  • ✨ Frontend: Photo details now return, if the face was inferred or labelled and the probability
  • ✨ Frontend: The face of the person and the old name are now visible when renaming
  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 7 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· 2 min read
Niaz Faridani-Rad

Upstream:

  • 🔨 Frontend: Blacklist auth tokens on logout (Found by ZeroPath's Beta Business Logic scanner)
  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community
  • ✨ LibrePhotos: New auth token blacklist endpoint (Found by ZeroPath's Beta Business Logic scanner)
  • ✨ LibrePhotos: Enhanced support for UhuruPhotos by expanding the PhotoSummary endpoints with additional fields. If you're using the UhuruPhotos app, be sure to update your LibrePhotos instance to ensure compatibility, as older versions will not work with the latest app update.

Upcoming:

I know, that not that many things got shipped this month, so here is an overview of things to come next month:

Reintroduce Face Classification

This pull request aims to reintroduce classification, while keeping the current clustering intact. Clustering was chosen, because it works well in a cold start scenario, where the user does not have any persons. Common problems with clustering are that there is no way to only match faces to known persons, and that previous input does not improve the clustering results. Classification should solve this problem for large datasets, where all persons are already known and it respects previous user input. Due to the large scale of this change, this was not ready for shipping yet.

Upgrade to Mantine 7:

As a component library, we use Mantine, which had a big version jump to version 7. This version removes emotion for styles and improves SSR capabilities while adding a lot of new components. However, due to the switch from emotion to native CSS and huge list of things that need to migrated, this took longer then expected.


If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 6 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· One min read
Niaz Faridani-Rad

Upstream:

  • 🔨 LibrePhotos GPU: Fixed build issues
  • 🔨 LibrePhotos: Fixed an issue where it was possible to upload images with authentication
  • 🔨 LibrePhotos: Fix path traversal issue when uploading an image (Fixed by adventure8812)
  • 🔨 Frontend: Fix removing missing photos
  • 🔨 Frontend: Tokens will now be saved in the cookies instead of session storage
  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community
  • ✨ LibrePhotos: Photos are now soft removed in order to improve the last modified query parameter for album date endpoints. Images in trash can now return "in_trashcan=true" and removed images are called "deleted=true"

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 8 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· One min read
Niaz Faridani-Rad

Upstream:

  • 🔨 Mobile: Fixed icons
  • 🔨 Mobile: Fixed uploading
  • 🔨 Frontend: Fixed admin settings
  • 🔨 Frontend: Fixed "Page not found" error in face dashboard
  • ✨ Mobile: Increased the numbers of images fetch from photo roll
  • ✨ Mobile: Build up-to-date version
  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community
  • ✨ LibrePhotos: Add last modified query parameter for album date endpoints

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 8 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· One min read
Niaz Faridani-Rad

Upstream:

  • 🚀 LibrePhotos: Split up scan job in smaller tasks

This is a pretty big change. Instead of doing all the work for each image, we will now prioritize creating a thumbnail and making the image visible in the UI and pushing other tasks like looking for faces or generating tags later.

  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community
  • ✨ LibrePhotos API: Job progress is now reported slightly different
  • ✨ LibrePhotos/Frontend: Merge minor versions automatically
  • ✨ LibrePhotos: Default background worker is now the number of cores of the host system

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 8 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· 2 min read
Niaz Faridani-Rad

Upstream:

  • 🔨 Frontend: Fix GPS issues on map view (Implemented by CodingGhost)
  • 🔨 LibrePhotos: Fix possible auth confusion, because of multiple token types
  • 🔨 LibrePhotos: Ensure that models are downloaded when using multiple workers
  • 🔨 LibrePhotos: Downloading an original image will now have the correct filename
  • 🔨 LibrePhotos: Close and restart services more reliably
  • ✨ LibrePhotos: Updated a bunch of dependencies and updated language strings from the community
  • ✨ LibrePhotos: Add person, file type, lens, camera and path to search caption
  • ✨ LibrePhotos: Added mistral v2 as LLM option
  • ✨ LibrePhotos: Improved API speed by persisting database connections
  • ✨ LibrePhotos: Recycle workers, when they exceed RAM limit
  • ✨ LibrePhotos: Improve RAM usage after scanning by unloading unused services
  • ✨ LibrePhotos: Extract places365 to new service
  • ✨ LibrePhotos: Improved speed, due to new exif service
  • 🚀 Frontend: Migration to redux toolkit is now done (Implemented by sickelap)

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 7 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· One min read
Niaz Faridani-Rad

Upstream:

✨ LibrePhotos: Improved service management The services now get started with Django and there is a cron job, which checks if the service is still running. There are now a bunch of new endpoints for handling services. [GET] /services/: List all services [GET] /services/{id}/: Retrieve the health status of a service [POST] /services/{id}/start/: Start a service [POST] /services/{id}/stop/: Stop a service

  • 🔨 LibrePhotos: Do not download model, if "none" is selected
  • 🔨 LibrePhotos: Chain download and dependents together
  • 🔨 Frontend: Fix updating avatar (Implemented by sickelap)
  • 🔨 Frontend: Always show header, even when there are no images
  • ✨ Docker: Updated to Ubuntu 24.04 and removed build tools
  • ✨ LibrePhotos: Updated a bunch of dependencies and updated language strings from the community

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 7 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal

· One min read
Niaz Faridani-Rad

Upstream:

  • 🚀 LibrePhotos: Show image tag backend version on hover in the sidebar
  • ✨ Frontend: Improved speed when assigning faces to person in FaceDashboard
  • ✨ Frontend: Refactored more endpoints to RTK
  • ✨ Frontend: Improved DX by switching to yarn (Implemented by sickelap)
  • ✨ LibrePhotos: Improved speed of AlbumThings, Person and AlbumDate Queries
  • ✨ LibrePhotos: Uploading images will now process in a better way
  • ✨ LibrePhotos: Updated dependencies and updated language strings from the community
  • 🔨 LibrePhotos: Parsing of Reverse Geocoding fixed for photon and mapbox. Fixed by sickelap
  • 🔨 LibrePhotos: Wrap deduplicate faces in AsyncTask, should work now when selecting all images

If you are interested on how I develop this application, you can watch me develop features live on my channel


Sponsoring development:

My work is sponsored by 8 awesome people!

If you like the work I do, then you can support me via GitHub sponsors or via PayPal