251130-b3068414c

langgenius/dify251130-b3068414cDec 1, 2025by lastzero

AI Summary

This update introduces batch editing capabilities for multiple pictures, upgraded face recognition pipelines, and direct AI integration with Ollama and OpenAI for generating captions and labels.

Key Highlights

  • Introduced Batch Edit dialog for editing metadata of multiple pictures simultaneously.
  • Upgraded face detection and embedding pipeline with a new CNN engine for better matches.
  • Added direct Ollama and OpenAI integration for generating captions and labels.
  • Added support for custom TensorFlow image classification models.
  • Added scheduling options for running vision models in the background.

New Features

  • Batch Edit dialog
  • Upgraded face recognition pipeline
  • Ollama integration
  • OpenAI integration for captions
  • Custom TensorFlow model support
  • Background scheduling for vision models

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)