251130-b3068414c

gildas-lormeau/SingleFile251130-b3068414cDec 1, 2025by lastzero

AI Summary

This major update introduces a Batch Edit dialog for metadata editing, an upgraded face recognition pipeline with a new CNN engine, and direct integration with Ollama and OpenAI for AI-generated captions and labels.

Key Highlights

  • Batch Edit dialog allows editing metadata of multiple pictures at once.
  • Upgraded face recognition pipeline delivers more accurate face matches.
  • Direct integration with Ollama and OpenAI for AI-generated captions and labels.
  • Support for custom TensorFlow models and new scheduling options for vision models.

New Features

  • Batch edit dialog for multiple picture metadata editing
  • Cover image selection for people
  • Support for custom TensorFlow image classification models
  • Direct Ollama integration for captions and labels
  • OpenAI Responses API integration
  • New CNN engine for face detection and embedding
  • Background scheduling options for vision models
  • 2FA activation without recovery code copy
  • Browser capability check warning
  • API metrics endpoint reporting file system and account usage
  • Config option to disable frontend
  • CLI command `vision reset`
  • Ubuntu 25.10 and ExifTool v13.25 upgrade

Full Release Notes

This [major update](https://docs.photoprism.app/release-notes/#november-30-2025) introduces the long-awaited [Batch Edit](https://docs.photoprism.app/user-guide/organize/batch-edit/) dialog, which allows you to [edit the metadata of multiple pictures](https://docs.photoprism.app/user-guide/organize/batch-edit/) in one go. On the AI side, an [upgraded face recognition pipeline](https://docs.photoprism.app/user-guide/ai/face-recognition/) delivers more and better matches. PhotoPrism now integrates directly with [Ollama](https://docs.photoprism.app/user-guide/ai/using-ollama/) and [OpenAI](https://docs.photoprism.app/user-guide/ai/using-openai/) to generate [captions and labels](https://docs.photoprism.app/user-guide/ai/). Support for [custom TensorFlow models](https://docs.photoprism.app/developer-guide/vision/tensorflow/custom-models/), [refined configuration](https://docs.photoprism.app/user-guide/ai/#visionyml-reference), and [new scheduling options](https://docs.photoprism.app/user-guide/ai/#run-modes) offer further flexibility.

You'll also notice many performance and usability enhancements, such as the ability to [change the cover image for a person](https://docs.photoprism.app/user-guide/organize/people/#change-cover-for-a-person), as well as updated dependencies and new translations.

As always, a big thank you to [everyone who contributed](https://docs.photoprism.app/developer-guide/) and [helped with testing](https://github.com/photoprism/photoprism/issues?q=is%3Aissue%20state%3Aopen%20label%3Aplease-test)! We hope you enjoy the new release as much as we do. 🌈💎✨

#### Upgrade Notes

- To benefit from the [facial recognition improvements](https://docs.photoprism.app/user-guide/ai/face-recognition/), we recommend running `photoprism faces audit --fix` and `photoprism faces index` [in a terminal](https://docs.photoprism.app/getting-started/docker-compose/#opening-a-terminal) to resolve any inconsistencies before detecting and matching additional faces. If you want the new engine to re-detect all faces for a clean state, you can do so by executing the commands `photoprism faces reset -f` and then `photoprism faces index` (after that, all detected faces must be reassigned). A [complete rescan](https://docs.photoprism.app/user-guide/library/originals/#when-should-complete-rescan-be-selected) will also detect additional faces, but takes longer since more indexing tasks are performed. 
- PhotoPrism now [supports multiple AI engines](https://docs.photoprism.app/user-guide/ai/#model-engines), so the `PHOTOPRISM_DISABLE_TENSORFLOW` option [has been deprecated](https://github.com/photoprism/photoprism/issues/5310). You can still disable individual AI features using the [`PHOTOPRISM_DISABLE_*` feature flags](https://docs.photoprism.app/getting-started/config-options/#feature-flags) and/or a [custom `vision.yml`](https://docs.photoprism.app/user-guide/ai/#visionyml-reference) configuration.

#### What's new?

- AI: [Support for custom TensorFlow image classification models](https://github.com/photoprism/photoprism/pull/5011) by @raystlin
- AI: [Direct Ollama integration for generating captions](https://github.com/photoprism/photoprism/issues/5123) and [labels](https://github.com/photoprism/photoprism/issues/5232) by @lastzero
- AI: [Generate Captions & Labels using the OpenAI Responses API](https://github.com/photoprism/photoprism/issues/5322) by @lastzero
- AI: [Improved face detection and embedding pipeline with a new CNN engine](https://github.com/photoprism/photoprism/issues/5167)
- AI: [Improved model configuration and `photoprism vision run` command](https://github.com/photoprism/photoprism/commit/4bc9cd6ca23bb65072b766ae16b7966b4e7b3e36)
- AI: [Added scheduling options for running vision models in the background](https://github.com/photoprism/photoprism/issues/5234)
- UX: [Added a batch edit dialog to edit multiple pictures at once](https://github.com/photoprism/photoprism/issues/271) by @AsikNasik
- UX: [Added a menu to select a cover image for people](https://github.com/photoprism/photoprism/issues/4151) by @omerdduran
- UX: ["Add to Album" dialog allows selection of multiple albums](https://github.com/photoprism/photoprism/pull/5177) by @omerdduran
- UX: [Improved people name editing and focus management](https://github.com/photoprism/photoprism/pull/5307) by @omerdduran
- UX: [Improved window scroll position restoration when navigating](https://github.com/photoprism/photoprism/issues/5211)
- UX: [Disabled autofocus on mobile devices to prevent keyboard from opening](https://github.com/photoprism/photoprism/issues/5213)
- UX: [Added a browser capability check displaying a warning if unsupported](https://github.com/photoprism/photoprism/issues/5047)
- UX: [Improved memory and event management in Viewer](https://github.com/photoprism/photoprism/issues/5260) and [Places](https://github.com/photoprism/photoprism/issues/5259)
- Auth: [2FA can be activated, even if the recovery code cannot be copied](https://github.com/photoprism/photoprism/issues/5106)
- Search: [Added escaping for `|` and `&` in filters](https://github.com/photoprism/photoprism/pull/5188) by @keif888
- Search: [Improved Boolean value parsing in filters](https://github.com/photoprism/photoprism/pull/5191) by @keif888
- Index: [Selecting "Complete Rescan" refreshes the detected media types](https://github.com/photoprism/photoprism/issues/5096)
- Index: [Underlying errors are logged when file type detection fails](https://github.com/photoprism/photoprism/issues/5149)
- Index: [Improved error logging when PDF documents cannot be indexed](https://github.com/photoprism/photoprism/issues/5166)
- Index: [Fixed in-memory photo and file lookup tables to prevent file rescans](https://github.com/photoprism/photoprism/issues/5235)
- Thumbs: [Embedding of ICC profiles based on InteropIndex](https://github.com/photoprism/photoprism/pull/5178) by @akdor1154
- Videos: [Fixed issues with non-keyframes when extracting still images](https://github.com/photoprism/photoprism/issues/5189)
- Intel QSV: [`libvpl2` will be installed when `PHOTOPRISM_INIT` includes "intel"](https://github.com/photoprism/photoprism/discussions/5098)
- API: [Added a force flag to the `DELETE /api/v1/albums/UID` endpoint](https://github.com/photoprism/photoprism/issues/5122)
- API: [Corrected handling of CORS preflight requests](https://github.com/photoprism/photoprism/issues/5133) by @techmatt101
- API: [Configured service key can be used for Vision API authentication](https://github.com/photoprism/photoprism/issues/5299)
- API: [`/api/v1/metrics` endpoint reports file system and account usage](https://github.com/photoprism/photoprism/issues/5355)
- Config: [`PHOTOPRISM_DISABLE_FRONTEND` disables the web user interface](https://github.com/photoprism/photoprism/issues/5111)
- CLI: [Added `--json` output format flag to `photoprism show` commands](https://github.com/photoprism/photoprism/issues/5220)
- CLI: [Added `vision reset` command to regenerate captions and labels](https://github.com/photoprism/photoprism/issues/5233)
- CLI: [Improved `photoprism dl` command to support additional flags](https://github.com/photoprism/photoprism/issues/5261)
- Setup: [Added `ollama` service to `compose.yaml` configuration examples](https://dl.photoprism.app/docker/)
- PWA: [Replaced "@lcdp/offline-plugin" with "workbox-webpack-plugin"](https://github.com/photoprism/photoprism/issues/5274)
- Docker: [Upgraded to Ubuntu 25.10](https://github.com/photoprism/photoprism/issues/5276), incl. [ExifTool v13.25](https://github.com/exiftool/exiftool/blob/master/Changes) and [libheif v1.20.2](https://github.com/strukturag/libheif/releases/tag/v1.20.2)
- Docker: [Preinstalled `libmagic-mgc` package for file type detection](https://github.com/photoprism/photoprism/issues/5149)
- Docker: [Improved `cmd.sh` script to terminate child processes](https://github.com/photoprism/photoprism/pull/5172) by @keif888
- Security: [Upgraded Go to v1.25.4, which includes fixes and improvements](https://github.com/golang/go/issues?q=milestone%3AGo1.25.4)
- Translations: [Updated Spanish and Vietnamese](https://docs.photoprism.app/developer-guide/translations-weblate/)

#### Screenshots

##### Batch Edit

Quickly and easily update the metadata, albums, and labels of multiple pictures:

![Batch Edit Dialog](https://github.com/user-attachments/assets/62852e33-27b8-46fc-8eaa-03f65e8cb697)

Entries that are assigned to all selected pictures are listed first. Each entry is shown as a small chip. If a label or album is assigned to only some of the selected pictures, its chip is shown as *partially assigned*.

![Labels and Albums](https://github.com/user-attachments/assets/87f4dd33-9c8e-4e7e-93b2-fba88b224df0)

##### Usability Enhancements

Browse related pictures or set a cover image for a person:

![Change Cover for a Person](https://github.com/user-attachments/assets/0a830951-d341-43f1-9fb3-97fc04c946f1)

Add pictures to multiple albums in one step:

![add-to-album](https://github.com/user-attachments/assets/8868145a-1dc6-4f17-a656-fe03e4f58bfd)

##### Ollama AI Model Integration

Use advanced LLMs like the recently released Qwen3-VL to generate captions and labels for your pictures:

<img width="1180" height="820" alt="ski-captions" src="https://github.com/user-attachments/assets/3787cf19-ce4c-49eb-bff2-f06f9656a311" />

<img width="1180" height="780" alt="ski-labels" src="https://github.com/user-attachments/assets/49ceb6fa-8e96-4024-a873-35f4f54521bc" />

#### Translations

Missing [user interface translations](https://translate.photoprism.app/projects/photoprism/) have been generated with the help of DeepL and Google Translate. Native speakers are [welcome to help us improve them](https://docs.photoprism.app/developer-guide/translations-weblate/) where needed. [Learn more ›](https://docs.photoprism.app/developer-guide/translations-weblate/)

#### Installation Packages

The packages attached to this release are intended for experienced users and maintainers of third-party integrations only, as they [require manual configuration](https://dl.photoprism.app/pkg/linux/README.html#configuration) and [do not include tested system dependencies](https://dl.photoprism.app/pkg/linux/README.html#dependencies). Since we are unable to [provide support](https://www.photoprism.app/kb/getting-support) for custom installations, we recommend [using one of our Docker images](https://docs.photoprism.app/getting-started/docker-compose/) to run PhotoPrism on a private server or NAS device. [Learn more ›](https://dl.photoprism.app/pkg/linux/README.html)