diff --git a/Makefile b/Makefile
index 18b95bb..a5936dc 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@ help:
#.PHONY: build-push
#build-push:
# docker login ghcr.io
-# docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag ghcr.io/nextcloud/context_chat_backend:5.4.0-beta0 --tag ghcr.io/nextcloud/context_chat_backend:latest .
+# docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag ghcr.io/nextcloud/context_chat_backend:5.4.0 --tag ghcr.io/nextcloud/context_chat_backend:latest .
.PHONY: run
run:
@@ -34,5 +34,5 @@ run:
register:
docker exec master-nextcloud-1 sudo -u www-data php occ app_api:app:unregister context_chat_backend --silent || true
docker exec master-nextcloud-1 sudo -u www-data php occ app_api:app:register context_chat_backend manual_install --json-info \
- "{\"id\":\"context_chat_backend\",\"name\":\"Context Chat Backend\",\"daemon_config_name\":\"manual_install\",\"version\":\"5.4.0-beta0\",\"secret\":\"12345\",\"port\":10034,\"scopes\":[],\"system\":0}" \
+ "{\"id\":\"context_chat_backend\",\"name\":\"Context Chat Backend\",\"daemon_config_name\":\"manual_install\",\"version\":\"5.4.0\",\"secret\":\"12345\",\"port\":10034,\"scopes\":[],\"system\":0}" \
--force-scopes --wait-finish
diff --git a/README.md b/README.md
index 0cc3b45..c956d85 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@ If nextcloud is inside a container, `--add-host` option would be required by you
**2. Register the app using the deploy daemon (be mindful of the port number and the app's version):**
```
occ app_api:app:register context_chat_backend manual_install --json-info \
-"{\"appid\":\"context_chat_backend\",\"name\":\"Context Chat Backend\",\"daemon_config_name\":\"manual_install\",\"version\":\"5.4.0-beta0\",\"secret\":\"12345\",\"port\":10034}" \
+"{\"appid\":\"context_chat_backend\",\"name\":\"Context Chat Backend\",\"daemon_config_name\":\"manual_install\",\"version\":\"5.4.0\",\"secret\":\"12345\",\"port\":10034}" \
--wait-finish
```
The command to unregister is given below (force is used to also remove apps whose container has been removed)
@@ -228,7 +228,7 @@ sudo -u www-data php occ app_api:app:register \
--json-info "{\"appid\":\"context_chat_backend\",\
\"name\":\"Context Chat Backend\",\
\"daemon_config_name\":\"manual_install\",\
- \"version\":\"5.4.0-beta0\",\
+ \"version\":\"5.4.0\",\
\"secret\":\"12345\",\
\"port\":10034}" \
--wait-finish
diff --git a/appinfo/info.xml b/appinfo/info.xml
index b54031e..f70e61d 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -20,7 +20,7 @@ Install the given apps for Context Chat to work as desired **in the given order*
Setup background job workers as described here: https://docs.nextcloud.com/server/latest/admin_manual/ai/overview.html#improve-ai-task-pickup-speed
]]>
- 5.4.0-beta0
+ 5.4.0
agpl
Anupam Kumar
Context Chat
@@ -35,7 +35,7 @@ Setup background job workers as described here: https://docs.nextcloud.com/serve
ghcr.io
nextcloud-releases/context_chat_backend
- 5.4.0-beta0
+ 5.4.0
diff --git a/changelog.md b/changelog.md
index e5e5b06..f87051b 100644
--- a/changelog.md
+++ b/changelog.md
@@ -9,6 +9,36 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
+## 5.4.0 - 2026-06-24
+
+### Highlights
+- The indexing direction has been reversed now. Instead of the context_chat PHP app sending documents to the context_chat_backend ExApp, the ExApp downloads the documents from the server according to a list obtained from the PHP app. This also means that the `occ context_chat:scan` command serves no purpose and has been removed. Indexing should be smoother and run continuously now.
+- Kubernetes support to scale the CPU computation
+- Separate docker images for CPU, CUDA and ROCM (uses Vulkan) instead of one heavy CUDA/CPU image
+- CUDA 12.8 is shipped in the CUDA image so the host drivers should be updated to this at the minimum.
+
+### Added
+- add network embedding batching (#276) @fcharlaix-opendsi
+- add kubernetes support and reverse content/indexing flow (#284) @kyteinsky @marcelklehr
+- add gh workflows for docker builds and do separate cpu, cuda and rocm (vulkan) images (#295) @kyteinsky
+
+### Changed
+- update readme according to the latest changes (#300) @kyteinsky
+- bump llama_cpp_python to 0.3.23 (#301) @kyteinsky
+- move task types to the backend (#321) @kyteinsky
+- adjust comment in Dockerfile regarding RTX5090 support (#316) @kyteinsky
+
+### Fixed
+- improve loadSources error handling (#288) @kyteinsky
+- fix(pgvector): add chunking to prevent long list of args in queries (#290) @kyteinsky
+- fix(pgvector): make doc deletion query faster (#289) @kyteinsky
+- drop latin-1 decode in source title and userIds (#306) @kyteinsky
+- handle validation errors of files and content providers individually (#308) @kyteinsky
+- prevent race condition in vectordb tables creation (#308) @kyteinsky
+- pass actual error in the error object (#308) @kyteinsky
+- add container hostname to /etc/hosts to silence sudo warning (#311) @sanzakicesarr
+
+
## 5.4.0-beta0 - 2026-05-26
### Added
diff --git a/example.env b/example.env
index f5ccfb6..3f4579b 100644
--- a/example.env
+++ b/example.env
@@ -18,7 +18,7 @@ AA_VERSION=3.0.0
APP_SECRET=12345
APP_ID=context_chat_backend
APP_DISPLAY_NAME=Context Chat Backend
-APP_VERSION=5.4.0-beta0
+APP_VERSION=5.4.0
APP_HOST=0.0.0.0
APP_PORT=10034
APP_PERSISTENT_STORAGE=persistent_storage
diff --git a/pyproject.toml b/pyproject.toml
index ad45267..219c3b9 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
[project]
name = "context_chat_backend"
-version = "5.4.0-beta0"
+version = "5.4.0"
requires-python = ">=3.11"
authors = [
{ name = "Anupam Kumar", email = "kyteinsky@gmail.com" }