Skip to main content

Synaplan Integration - Releases

← App details

Nextcloud 34

Synaplan Integration 1.5.0
Release Details
UpdatedJuly 12, 2026, 3:11 p.m.
Changelog

Knowledge-file lifecycle + per-file chat, built on Synaplan's file-lifecycle API (CORE-4).

Added

  • Chat about this file — a new Files action opens a focused AI chat about a single file (text / JSON / XML), wiring up the previously unused per-file chat modal.
  • Update / Remove in Knowledge — the "Add to AI Knowledge" dialog now detects when a file is already indexed and switches to Update in Knowledge (re-index in place, no duplicates) and offers Remove from Knowledge.
  • "Changed since indexed" indicator — the dialog shows a warning when the Nextcloud file was modified after it was last indexed, with one-click update.

Changed

  • Knowledge uploads now send the Nextcloud file id (source_id) and etag (source_etag) and use overwrite-by-source, so re-adding a file (or adding a changed one) updates its knowledge entry in place instead of creating a duplicate.

Requires

  • For the update/stale/remove features: a Synaplan backend with the knowledge-file lifecycle API (source_id / source_etag / overwrite, check-stale, mark-stale). Against older backends the dialog degrades to plain "Add to Knowledge".
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureP4xV2Pu3UPZ1FWdWDeuDO1yidDIE9kcFQZS0D/h88mBv8OImLa39VVhSTb3xGq4W
M3q0k4S3F+3HPKd9cbCzBblV3QNuQlSVzeMjIciAhnr0dmyjr4XVuydvQF1E5Gqp
cddLNn8ty5pzk0Q1n+45+yq9EaesiFJqxcNaqlNf5igNIrL9YJ+jv7cufknCDwSl
eLp8msL3pabsVUDVrIuCoGQLIhqRzHpfu4uWOql+WoM5bICjQeLh68iCzw+6c+0f
9hyrYJFLzaEShObh07Yox2zdAyjFGEM+c8hqWUoKc5epsnBZqz5T5epPrKSzajiM
6FYidSxJ8swXWfCM6OubqgMMPq+deEME+sGttEGoKzjHRakMC9G+tOrFHgyuU+JS
Uu085NrS3zxLt8l2qO91ZsqrN5pCCddmdJL8gNJ0sJ1RtI4m/BERXsUnfj4idMZ+
jBKZ3s+f1AbRRvis7AO6iR5N33sm1VIYWHj/nh6Vxd0GBt11764lK70g6yhJggRu
b52Y4lJNaz3cXg7Hlf/4zOgZ60CcFTlptLoxMRpLxO/3Oo3YDK0/UPVvzcGEGFK0
kZl0vRc8URCVfOpHm5ZxTmohhVUqA4GIRq1kuvEEsGzfSFG6MIV6CKJSPGdADJ21
0IfHCPRjenV8Zbvsdkl7UUHlYFFNq+/eGc/ua/WwiQ4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.4.0
Release Details
UpdatedJune 29, 2026, 7:26 a.m.
Changelog

Added

  • Backend environment switch (Live / Local). Admin settings now keep two separate Synaplan profiles — Live (production) and Local (development) — each with its own URL and API key, plus an Active environment toggle that flips the whole app (chat, media, knowledge, proxy) between them in one click. Makes it easy for any developer to point the app at a local Synaplan dev backend (e.g. http://localhost:8000) and switch back to live without re-entering credentials.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureM/QxVGGaIHtXOex6ZqPcMfcRZdtdJoBooUpsySLA7eqU29cUoAZHMYc7ymZO19vrtgJRsRPaLbxpAghcta5RhLixxQc58LoNz2ZFZapzcHSqiTS3rzu4nkpgk05VQog6grVzWcPjycItXOIfPl4r4QBBqH0cornE7kciuPXAT3yIMqhZa9ATKPAFVcKVjoBrnv4HKo00Hpay2vmm/8VFxRs6CryOw1jkJWfiuUl46lB64zVtB/BWOOnEIjzSeauCvnWip4xKkOrIhYQ122ybMo4n+pnE9m5Ln1Olb249F4yRERyp8MSGpA4+ru6T8dtH1s0VEQ7OkJFVyrdBDj7UMZwyZJ9Z+gxv64ZWykDDVHg5g/XkNLHGlYDjpJCIjuNNw+ds3pkitef1hWfZBkFe9Gii1U/K861yEmbGMI4RfjahCMVOUbLBcSgj9PLVgcINlotOL6jpmgpC1CQ2F1/ImkabNs54aWS83Xc4UtyLTLQze731Un5Rz7ttCz3TLz5i7dzLHk35xv6KMZRad5oIR7TmWNhYs9Mqwk0GuM4yf723pB9O9l+ETZeVEv+49ilszk4UwGfKOq+pPVtHOtdWMfiUWbn1M8QpdxxD85u98XOL03biDZOgKaA/g6jaSlPjEMoCaMR8RbzHcJnJLkXOelDVKh3qXLZ5AGCDCV6xydE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.1
Release Details
UpdatedJune 24, 2026, 8:55 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • App version in the chat tagline — the Research/launcher header now shows the running version (e.g. "Ask anything v1.2.1 — powered by Synaplan"), read dynamically from the installed app version.
  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.
  • Per-chunk CSS injection (relativeCSSInjection) so shared component styles (NcSelect, NcCheckboxRadioSwitch) are injected by every entry that uses them — fixes unstyled dropdowns/switches on the Research page, the in-page launcher, and the file-action dialogs.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureC/Oiw54zI6mkEJnWWVKeOCVXUd/SiHOo7NRiETBIM3XJTqJzRfK06eg4t0NOBdnV
tyYDxXgUfuUGrTTNR2SNyEdotBz9B6AZm18q5WjC37rflLKVSi4P/5PN7Y8Hu+WN
l7ds2UFOV5ZAS5HLCPFAiQwS8n+coYF0qcuAwL6F2b99YY6gA9u5E/QPcEQk/1BB
13tNVea1wAlSzfpI4P0fNgQIATyt5dqb/MZZ9PT+NdL02G46MLMHbXpCjf/ZVZfL
cvXXqsKXxwdmwR696PhwcW2XrrU8UiTdmOmjuAjtMfwwt4MXbQawfEIWm0kYCJeN
t5mAZBAmRtbWvLdvBs+AxnQE3kUoEhay++eg4K7z+f/09xMzoMWj3TJcT0yn+dMW
6Da2D19gl59216PTkv8QLWxfeZj8Z1rayKNG0RAv58h5ZGlAcfE81uIo8fkJ9bhb
66UZ6VPXPvLRDafwDrSRYn8pnSGvg7pxhGWqmjpFmfiZNDJH2+eI6x/dwmFFaLgJ
c3Baqzy/3SjvpCV3YhTYdITrMlmlqf1H/r9PlgoPPu9s+YXmcfRnJ1ZtZdvPujLT
v0J/W2sgzM6mQA/YrQtIIkEi4/8didkDCm+6DwPJsqGyTGHhpGpPg/Xc1hiU3x8z
cmRkDrVzRVW6mji2dM5JZIJdekQHfq47IzaeFtragWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.0
Release Details
UpdatedJune 24, 2026, 8:12 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignaturecIuRWXMw5E51NStOH4j/I5DgiebmK4oGTfCYVR7LCqcr/yUIyvr8tZY0+mG/r405
n8R/0wLAYyIVxJNeqvsh9j7Urdj8KGz8OL/SEYd5DeUSOG9M+Zcxhc244QWk4gVB
LMlIygYCEIexxf75QMkqg5YjTW17IneiXi3kf/8oTf7doKdHOwlp+eBEqTFSonYk
vhftcxU+mS9ubWOnjz2XZx/Kw0ldTMmrI6fEX7xnPBgrFmPnSJfOZLADmvQqvUFV
NGl4KESPqyJ72Bmtj9yQjEGW2wZqxLoU/yhKbpy/QgWPje113B2cJSJWNEbEJ2Pv
yOSVLPU08zTRYMCcFzohr6lz9ybv+tfMn2O8ZXUGvRoRe3han4UWdONX2gvs4iG9
44UkdqVcPPd6M7xzSg8gMx8ikO82E3cKHsVOVvhv9HP6TxOhPa2kSjsqM81/p3h6
GpNpeR0YQWd8t5voL3RBK/Hx53LeKA8q8oLjDp45xm+MDa4FH74kD5d3mX/uck4+
DO2rNf/i+zuYSIREmXtUiOmX5fjQdTjYFLRMP11CmTX4cXMXDIAV3eH59QOenfxB
lptb1+IjISIJ5u0lnd25623+YcFGUrTs0fIx06Gy7hVBknywEU8KqmWdMnX8h5Y6
kzSDUAz4dIQacSI85lHD+IziwtrlQWBJAYX2qb3MYSE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.0.0
Release Details
UpdatedMarch 3, 2026, 11:19 a.m.
Changelog

Added

  • Summarize documents via file context menu (bullet points, paragraph, abstractive; short/medium/long; 12 output languages)
  • Translate documents via file context menu (12 target languages)
  • Add to AI Knowledge — upload files to the Synaplan vector knowledge base with group management
  • Research Chat — full-page AI assistant accessible from top navigation with knowledge group and LLM model selection
  • Support for binary document formats (PDF, DOCX, ODT, XLSX, PPTX) via Synaplan's Tika text extraction
  • Admin settings page with Synaplan URL and API key configuration
  • Connection test functionality in admin settings
  • Top-level "Synaplan" navigation entry with custom bird logo
  • Upload progress spinner with elapsed time counter for long-running knowledge uploads
  • Improved success state with high-contrast SVG checkmark for dark theme compatibility
  • Unit tests for all controllers (42 tests, 114 assertions)
  • CI pipeline with PHP lint (PSR-12), PHPUnit, ESLint, Prettier, and Vite build checks
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureejyVYcZByyn9oDqioAP2ern6IGZhUunDSSAIkbC6zxzV14TjtxYUjs4dLHyK6WhasJdsdC87q9NIiwXtA/pO0yT6Tw9kEKLkfvHyO08xhHCQIKPmgqfERc1ODLcnx1Hseu2xzEVNIHg5gf5o0SYtRsJzPgSgWCScWqzcbWg9YY30KTie9KpoQYfgRHJEjuWy9PWpmdXnK3efZv/b/n85pTPIZ590nVde4rK+5o0ed9ME/j+NLkUS3ZJ88UG/s8l243I0/yWTbu3SOmQJ8ktnWurWoOQYews7g+vFAnn10ePmTp5gFr2wDq1beI0mjbBFRsXJy39Fhi1L2PAA/CYaOW0F3hUEpMPFqDK1YhXHYFaFENxvyACfZ+23qq6SxK4bSpozodVhHIBKToWJMmhACSL/SAWz/0v50tJeDfNELlAwG/YMTjYx60gm4rFQKy+9CbsG8ktGX4T6Q0XDo11UCylsTOdYCowe1h0avbiZ0RHz056soWSoShZRLhhrQEjMZPEbeWpNXxg0TRujGXdx4lMQAfjsPcx9DZGU8HDyp7IwZykKcKAwpF5jg7cZzhlk/n3rloV4mhGcUfDisZ7MmOdzurjsiGIODzch0shA+S1tPvh6ym8pr2BtZ7ZgExvenxtuR2ZT5RvUcuheMhrmmIcDQiKiuSBqz06LrptQhKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 33

Synaplan Integration 1.5.0
Release Details
UpdatedJuly 12, 2026, 3:11 p.m.
Changelog

Knowledge-file lifecycle + per-file chat, built on Synaplan's file-lifecycle API (CORE-4).

Added

  • Chat about this file — a new Files action opens a focused AI chat about a single file (text / JSON / XML), wiring up the previously unused per-file chat modal.
  • Update / Remove in Knowledge — the "Add to AI Knowledge" dialog now detects when a file is already indexed and switches to Update in Knowledge (re-index in place, no duplicates) and offers Remove from Knowledge.
  • "Changed since indexed" indicator — the dialog shows a warning when the Nextcloud file was modified after it was last indexed, with one-click update.

Changed

  • Knowledge uploads now send the Nextcloud file id (source_id) and etag (source_etag) and use overwrite-by-source, so re-adding a file (or adding a changed one) updates its knowledge entry in place instead of creating a duplicate.

Requires

  • For the update/stale/remove features: a Synaplan backend with the knowledge-file lifecycle API (source_id / source_etag / overwrite, check-stale, mark-stale). Against older backends the dialog degrades to plain "Add to Knowledge".
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureP4xV2Pu3UPZ1FWdWDeuDO1yidDIE9kcFQZS0D/h88mBv8OImLa39VVhSTb3xGq4W
M3q0k4S3F+3HPKd9cbCzBblV3QNuQlSVzeMjIciAhnr0dmyjr4XVuydvQF1E5Gqp
cddLNn8ty5pzk0Q1n+45+yq9EaesiFJqxcNaqlNf5igNIrL9YJ+jv7cufknCDwSl
eLp8msL3pabsVUDVrIuCoGQLIhqRzHpfu4uWOql+WoM5bICjQeLh68iCzw+6c+0f
9hyrYJFLzaEShObh07Yox2zdAyjFGEM+c8hqWUoKc5epsnBZqz5T5epPrKSzajiM
6FYidSxJ8swXWfCM6OubqgMMPq+deEME+sGttEGoKzjHRakMC9G+tOrFHgyuU+JS
Uu085NrS3zxLt8l2qO91ZsqrN5pCCddmdJL8gNJ0sJ1RtI4m/BERXsUnfj4idMZ+
jBKZ3s+f1AbRRvis7AO6iR5N33sm1VIYWHj/nh6Vxd0GBt11764lK70g6yhJggRu
b52Y4lJNaz3cXg7Hlf/4zOgZ60CcFTlptLoxMRpLxO/3Oo3YDK0/UPVvzcGEGFK0
kZl0vRc8URCVfOpHm5ZxTmohhVUqA4GIRq1kuvEEsGzfSFG6MIV6CKJSPGdADJ21
0IfHCPRjenV8Zbvsdkl7UUHlYFFNq+/eGc/ua/WwiQ4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.4.0
Release Details
UpdatedJune 29, 2026, 7:26 a.m.
Changelog

Added

  • Backend environment switch (Live / Local). Admin settings now keep two separate Synaplan profiles — Live (production) and Local (development) — each with its own URL and API key, plus an Active environment toggle that flips the whole app (chat, media, knowledge, proxy) between them in one click. Makes it easy for any developer to point the app at a local Synaplan dev backend (e.g. http://localhost:8000) and switch back to live without re-entering credentials.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureM/QxVGGaIHtXOex6ZqPcMfcRZdtdJoBooUpsySLA7eqU29cUoAZHMYc7ymZO19vrtgJRsRPaLbxpAghcta5RhLixxQc58LoNz2ZFZapzcHSqiTS3rzu4nkpgk05VQog6grVzWcPjycItXOIfPl4r4QBBqH0cornE7kciuPXAT3yIMqhZa9ATKPAFVcKVjoBrnv4HKo00Hpay2vmm/8VFxRs6CryOw1jkJWfiuUl46lB64zVtB/BWOOnEIjzSeauCvnWip4xKkOrIhYQ122ybMo4n+pnE9m5Ln1Olb249F4yRERyp8MSGpA4+ru6T8dtH1s0VEQ7OkJFVyrdBDj7UMZwyZJ9Z+gxv64ZWykDDVHg5g/XkNLHGlYDjpJCIjuNNw+ds3pkitef1hWfZBkFe9Gii1U/K861yEmbGMI4RfjahCMVOUbLBcSgj9PLVgcINlotOL6jpmgpC1CQ2F1/ImkabNs54aWS83Xc4UtyLTLQze731Un5Rz7ttCz3TLz5i7dzLHk35xv6KMZRad5oIR7TmWNhYs9Mqwk0GuM4yf723pB9O9l+ETZeVEv+49ilszk4UwGfKOq+pPVtHOtdWMfiUWbn1M8QpdxxD85u98XOL03biDZOgKaA/g6jaSlPjEMoCaMR8RbzHcJnJLkXOelDVKh3qXLZ5AGCDCV6xydE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.1
Release Details
UpdatedJune 24, 2026, 8:55 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • App version in the chat tagline — the Research/launcher header now shows the running version (e.g. "Ask anything v1.2.1 — powered by Synaplan"), read dynamically from the installed app version.
  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.
  • Per-chunk CSS injection (relativeCSSInjection) so shared component styles (NcSelect, NcCheckboxRadioSwitch) are injected by every entry that uses them — fixes unstyled dropdowns/switches on the Research page, the in-page launcher, and the file-action dialogs.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureC/Oiw54zI6mkEJnWWVKeOCVXUd/SiHOo7NRiETBIM3XJTqJzRfK06eg4t0NOBdnV
tyYDxXgUfuUGrTTNR2SNyEdotBz9B6AZm18q5WjC37rflLKVSi4P/5PN7Y8Hu+WN
l7ds2UFOV5ZAS5HLCPFAiQwS8n+coYF0qcuAwL6F2b99YY6gA9u5E/QPcEQk/1BB
13tNVea1wAlSzfpI4P0fNgQIATyt5dqb/MZZ9PT+NdL02G46MLMHbXpCjf/ZVZfL
cvXXqsKXxwdmwR696PhwcW2XrrU8UiTdmOmjuAjtMfwwt4MXbQawfEIWm0kYCJeN
t5mAZBAmRtbWvLdvBs+AxnQE3kUoEhay++eg4K7z+f/09xMzoMWj3TJcT0yn+dMW
6Da2D19gl59216PTkv8QLWxfeZj8Z1rayKNG0RAv58h5ZGlAcfE81uIo8fkJ9bhb
66UZ6VPXPvLRDafwDrSRYn8pnSGvg7pxhGWqmjpFmfiZNDJH2+eI6x/dwmFFaLgJ
c3Baqzy/3SjvpCV3YhTYdITrMlmlqf1H/r9PlgoPPu9s+YXmcfRnJ1ZtZdvPujLT
v0J/W2sgzM6mQA/YrQtIIkEi4/8didkDCm+6DwPJsqGyTGHhpGpPg/Xc1hiU3x8z
cmRkDrVzRVW6mji2dM5JZIJdekQHfq47IzaeFtragWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.0
Release Details
UpdatedJune 24, 2026, 8:12 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignaturecIuRWXMw5E51NStOH4j/I5DgiebmK4oGTfCYVR7LCqcr/yUIyvr8tZY0+mG/r405
n8R/0wLAYyIVxJNeqvsh9j7Urdj8KGz8OL/SEYd5DeUSOG9M+Zcxhc244QWk4gVB
LMlIygYCEIexxf75QMkqg5YjTW17IneiXi3kf/8oTf7doKdHOwlp+eBEqTFSonYk
vhftcxU+mS9ubWOnjz2XZx/Kw0ldTMmrI6fEX7xnPBgrFmPnSJfOZLADmvQqvUFV
NGl4KESPqyJ72Bmtj9yQjEGW2wZqxLoU/yhKbpy/QgWPje113B2cJSJWNEbEJ2Pv
yOSVLPU08zTRYMCcFzohr6lz9ybv+tfMn2O8ZXUGvRoRe3han4UWdONX2gvs4iG9
44UkdqVcPPd6M7xzSg8gMx8ikO82E3cKHsVOVvhv9HP6TxOhPa2kSjsqM81/p3h6
GpNpeR0YQWd8t5voL3RBK/Hx53LeKA8q8oLjDp45xm+MDa4FH74kD5d3mX/uck4+
DO2rNf/i+zuYSIREmXtUiOmX5fjQdTjYFLRMP11CmTX4cXMXDIAV3eH59QOenfxB
lptb1+IjISIJ5u0lnd25623+YcFGUrTs0fIx06Gy7hVBknywEU8KqmWdMnX8h5Y6
kzSDUAz4dIQacSI85lHD+IziwtrlQWBJAYX2qb3MYSE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.0.0
Release Details
UpdatedMarch 3, 2026, 11:19 a.m.
Changelog

Added

  • Summarize documents via file context menu (bullet points, paragraph, abstractive; short/medium/long; 12 output languages)
  • Translate documents via file context menu (12 target languages)
  • Add to AI Knowledge — upload files to the Synaplan vector knowledge base with group management
  • Research Chat — full-page AI assistant accessible from top navigation with knowledge group and LLM model selection
  • Support for binary document formats (PDF, DOCX, ODT, XLSX, PPTX) via Synaplan's Tika text extraction
  • Admin settings page with Synaplan URL and API key configuration
  • Connection test functionality in admin settings
  • Top-level "Synaplan" navigation entry with custom bird logo
  • Upload progress spinner with elapsed time counter for long-running knowledge uploads
  • Improved success state with high-contrast SVG checkmark for dark theme compatibility
  • Unit tests for all controllers (42 tests, 114 assertions)
  • CI pipeline with PHP lint (PSR-12), PHPUnit, ESLint, Prettier, and Vite build checks
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureejyVYcZByyn9oDqioAP2ern6IGZhUunDSSAIkbC6zxzV14TjtxYUjs4dLHyK6WhasJdsdC87q9NIiwXtA/pO0yT6Tw9kEKLkfvHyO08xhHCQIKPmgqfERc1ODLcnx1Hseu2xzEVNIHg5gf5o0SYtRsJzPgSgWCScWqzcbWg9YY30KTie9KpoQYfgRHJEjuWy9PWpmdXnK3efZv/b/n85pTPIZ590nVde4rK+5o0ed9ME/j+NLkUS3ZJ88UG/s8l243I0/yWTbu3SOmQJ8ktnWurWoOQYews7g+vFAnn10ePmTp5gFr2wDq1beI0mjbBFRsXJy39Fhi1L2PAA/CYaOW0F3hUEpMPFqDK1YhXHYFaFENxvyACfZ+23qq6SxK4bSpozodVhHIBKToWJMmhACSL/SAWz/0v50tJeDfNELlAwG/YMTjYx60gm4rFQKy+9CbsG8ktGX4T6Q0XDo11UCylsTOdYCowe1h0avbiZ0RHz056soWSoShZRLhhrQEjMZPEbeWpNXxg0TRujGXdx4lMQAfjsPcx9DZGU8HDyp7IwZykKcKAwpF5jg7cZzhlk/n3rloV4mhGcUfDisZ7MmOdzurjsiGIODzch0shA+S1tPvh6ym8pr2BtZ7ZgExvenxtuR2ZT5RvUcuheMhrmmIcDQiKiuSBqz06LrptQhKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 32

Synaplan Integration 1.5.0
Release Details
UpdatedJuly 12, 2026, 3:11 p.m.
Changelog

Knowledge-file lifecycle + per-file chat, built on Synaplan's file-lifecycle API (CORE-4).

Added

  • Chat about this file — a new Files action opens a focused AI chat about a single file (text / JSON / XML), wiring up the previously unused per-file chat modal.
  • Update / Remove in Knowledge — the "Add to AI Knowledge" dialog now detects when a file is already indexed and switches to Update in Knowledge (re-index in place, no duplicates) and offers Remove from Knowledge.
  • "Changed since indexed" indicator — the dialog shows a warning when the Nextcloud file was modified after it was last indexed, with one-click update.

Changed

  • Knowledge uploads now send the Nextcloud file id (source_id) and etag (source_etag) and use overwrite-by-source, so re-adding a file (or adding a changed one) updates its knowledge entry in place instead of creating a duplicate.

Requires

  • For the update/stale/remove features: a Synaplan backend with the knowledge-file lifecycle API (source_id / source_etag / overwrite, check-stale, mark-stale). Against older backends the dialog degrades to plain "Add to Knowledge".
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureP4xV2Pu3UPZ1FWdWDeuDO1yidDIE9kcFQZS0D/h88mBv8OImLa39VVhSTb3xGq4W
M3q0k4S3F+3HPKd9cbCzBblV3QNuQlSVzeMjIciAhnr0dmyjr4XVuydvQF1E5Gqp
cddLNn8ty5pzk0Q1n+45+yq9EaesiFJqxcNaqlNf5igNIrL9YJ+jv7cufknCDwSl
eLp8msL3pabsVUDVrIuCoGQLIhqRzHpfu4uWOql+WoM5bICjQeLh68iCzw+6c+0f
9hyrYJFLzaEShObh07Yox2zdAyjFGEM+c8hqWUoKc5epsnBZqz5T5epPrKSzajiM
6FYidSxJ8swXWfCM6OubqgMMPq+deEME+sGttEGoKzjHRakMC9G+tOrFHgyuU+JS
Uu085NrS3zxLt8l2qO91ZsqrN5pCCddmdJL8gNJ0sJ1RtI4m/BERXsUnfj4idMZ+
jBKZ3s+f1AbRRvis7AO6iR5N33sm1VIYWHj/nh6Vxd0GBt11764lK70g6yhJggRu
b52Y4lJNaz3cXg7Hlf/4zOgZ60CcFTlptLoxMRpLxO/3Oo3YDK0/UPVvzcGEGFK0
kZl0vRc8URCVfOpHm5ZxTmohhVUqA4GIRq1kuvEEsGzfSFG6MIV6CKJSPGdADJ21
0IfHCPRjenV8Zbvsdkl7UUHlYFFNq+/eGc/ua/WwiQ4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.4.0
Release Details
UpdatedJune 29, 2026, 7:26 a.m.
Changelog

Added

  • Backend environment switch (Live / Local). Admin settings now keep two separate Synaplan profiles — Live (production) and Local (development) — each with its own URL and API key, plus an Active environment toggle that flips the whole app (chat, media, knowledge, proxy) between them in one click. Makes it easy for any developer to point the app at a local Synaplan dev backend (e.g. http://localhost:8000) and switch back to live without re-entering credentials.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureM/QxVGGaIHtXOex6ZqPcMfcRZdtdJoBooUpsySLA7eqU29cUoAZHMYc7ymZO19vrtgJRsRPaLbxpAghcta5RhLixxQc58LoNz2ZFZapzcHSqiTS3rzu4nkpgk05VQog6grVzWcPjycItXOIfPl4r4QBBqH0cornE7kciuPXAT3yIMqhZa9ATKPAFVcKVjoBrnv4HKo00Hpay2vmm/8VFxRs6CryOw1jkJWfiuUl46lB64zVtB/BWOOnEIjzSeauCvnWip4xKkOrIhYQ122ybMo4n+pnE9m5Ln1Olb249F4yRERyp8MSGpA4+ru6T8dtH1s0VEQ7OkJFVyrdBDj7UMZwyZJ9Z+gxv64ZWykDDVHg5g/XkNLHGlYDjpJCIjuNNw+ds3pkitef1hWfZBkFe9Gii1U/K861yEmbGMI4RfjahCMVOUbLBcSgj9PLVgcINlotOL6jpmgpC1CQ2F1/ImkabNs54aWS83Xc4UtyLTLQze731Un5Rz7ttCz3TLz5i7dzLHk35xv6KMZRad5oIR7TmWNhYs9Mqwk0GuM4yf723pB9O9l+ETZeVEv+49ilszk4UwGfKOq+pPVtHOtdWMfiUWbn1M8QpdxxD85u98XOL03biDZOgKaA/g6jaSlPjEMoCaMR8RbzHcJnJLkXOelDVKh3qXLZ5AGCDCV6xydE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.1
Release Details
UpdatedJune 24, 2026, 8:55 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • App version in the chat tagline — the Research/launcher header now shows the running version (e.g. "Ask anything v1.2.1 — powered by Synaplan"), read dynamically from the installed app version.
  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.
  • Per-chunk CSS injection (relativeCSSInjection) so shared component styles (NcSelect, NcCheckboxRadioSwitch) are injected by every entry that uses them — fixes unstyled dropdowns/switches on the Research page, the in-page launcher, and the file-action dialogs.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureC/Oiw54zI6mkEJnWWVKeOCVXUd/SiHOo7NRiETBIM3XJTqJzRfK06eg4t0NOBdnV
tyYDxXgUfuUGrTTNR2SNyEdotBz9B6AZm18q5WjC37rflLKVSi4P/5PN7Y8Hu+WN
l7ds2UFOV5ZAS5HLCPFAiQwS8n+coYF0qcuAwL6F2b99YY6gA9u5E/QPcEQk/1BB
13tNVea1wAlSzfpI4P0fNgQIATyt5dqb/MZZ9PT+NdL02G46MLMHbXpCjf/ZVZfL
cvXXqsKXxwdmwR696PhwcW2XrrU8UiTdmOmjuAjtMfwwt4MXbQawfEIWm0kYCJeN
t5mAZBAmRtbWvLdvBs+AxnQE3kUoEhay++eg4K7z+f/09xMzoMWj3TJcT0yn+dMW
6Da2D19gl59216PTkv8QLWxfeZj8Z1rayKNG0RAv58h5ZGlAcfE81uIo8fkJ9bhb
66UZ6VPXPvLRDafwDrSRYn8pnSGvg7pxhGWqmjpFmfiZNDJH2+eI6x/dwmFFaLgJ
c3Baqzy/3SjvpCV3YhTYdITrMlmlqf1H/r9PlgoPPu9s+YXmcfRnJ1ZtZdvPujLT
v0J/W2sgzM6mQA/YrQtIIkEi4/8didkDCm+6DwPJsqGyTGHhpGpPg/Xc1hiU3x8z
cmRkDrVzRVW6mji2dM5JZIJdekQHfq47IzaeFtragWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.0
Release Details
UpdatedJune 24, 2026, 8:12 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignaturecIuRWXMw5E51NStOH4j/I5DgiebmK4oGTfCYVR7LCqcr/yUIyvr8tZY0+mG/r405
n8R/0wLAYyIVxJNeqvsh9j7Urdj8KGz8OL/SEYd5DeUSOG9M+Zcxhc244QWk4gVB
LMlIygYCEIexxf75QMkqg5YjTW17IneiXi3kf/8oTf7doKdHOwlp+eBEqTFSonYk
vhftcxU+mS9ubWOnjz2XZx/Kw0ldTMmrI6fEX7xnPBgrFmPnSJfOZLADmvQqvUFV
NGl4KESPqyJ72Bmtj9yQjEGW2wZqxLoU/yhKbpy/QgWPje113B2cJSJWNEbEJ2Pv
yOSVLPU08zTRYMCcFzohr6lz9ybv+tfMn2O8ZXUGvRoRe3han4UWdONX2gvs4iG9
44UkdqVcPPd6M7xzSg8gMx8ikO82E3cKHsVOVvhv9HP6TxOhPa2kSjsqM81/p3h6
GpNpeR0YQWd8t5voL3RBK/Hx53LeKA8q8oLjDp45xm+MDa4FH74kD5d3mX/uck4+
DO2rNf/i+zuYSIREmXtUiOmX5fjQdTjYFLRMP11CmTX4cXMXDIAV3eH59QOenfxB
lptb1+IjISIJ5u0lnd25623+YcFGUrTs0fIx06Gy7hVBknywEU8KqmWdMnX8h5Y6
kzSDUAz4dIQacSI85lHD+IziwtrlQWBJAYX2qb3MYSE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.0.0
Release Details
UpdatedMarch 3, 2026, 11:19 a.m.
Changelog

Added

  • Summarize documents via file context menu (bullet points, paragraph, abstractive; short/medium/long; 12 output languages)
  • Translate documents via file context menu (12 target languages)
  • Add to AI Knowledge — upload files to the Synaplan vector knowledge base with group management
  • Research Chat — full-page AI assistant accessible from top navigation with knowledge group and LLM model selection
  • Support for binary document formats (PDF, DOCX, ODT, XLSX, PPTX) via Synaplan's Tika text extraction
  • Admin settings page with Synaplan URL and API key configuration
  • Connection test functionality in admin settings
  • Top-level "Synaplan" navigation entry with custom bird logo
  • Upload progress spinner with elapsed time counter for long-running knowledge uploads
  • Improved success state with high-contrast SVG checkmark for dark theme compatibility
  • Unit tests for all controllers (42 tests, 114 assertions)
  • CI pipeline with PHP lint (PSR-12), PHPUnit, ESLint, Prettier, and Vite build checks
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureejyVYcZByyn9oDqioAP2ern6IGZhUunDSSAIkbC6zxzV14TjtxYUjs4dLHyK6WhasJdsdC87q9NIiwXtA/pO0yT6Tw9kEKLkfvHyO08xhHCQIKPmgqfERc1ODLcnx1Hseu2xzEVNIHg5gf5o0SYtRsJzPgSgWCScWqzcbWg9YY30KTie9KpoQYfgRHJEjuWy9PWpmdXnK3efZv/b/n85pTPIZ590nVde4rK+5o0ed9ME/j+NLkUS3ZJ88UG/s8l243I0/yWTbu3SOmQJ8ktnWurWoOQYews7g+vFAnn10ePmTp5gFr2wDq1beI0mjbBFRsXJy39Fhi1L2PAA/CYaOW0F3hUEpMPFqDK1YhXHYFaFENxvyACfZ+23qq6SxK4bSpozodVhHIBKToWJMmhACSL/SAWz/0v50tJeDfNELlAwG/YMTjYx60gm4rFQKy+9CbsG8ktGX4T6Q0XDo11UCylsTOdYCowe1h0avbiZ0RHz056soWSoShZRLhhrQEjMZPEbeWpNXxg0TRujGXdx4lMQAfjsPcx9DZGU8HDyp7IwZykKcKAwpF5jg7cZzhlk/n3rloV4mhGcUfDisZ7MmOdzurjsiGIODzch0shA+S1tPvh6ym8pr2BtZ7ZgExvenxtuR2ZT5RvUcuheMhrmmIcDQiKiuSBqz06LrptQhKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 31

Synaplan Integration 1.5.0
Release Details
UpdatedJuly 12, 2026, 3:11 p.m.
Changelog

Knowledge-file lifecycle + per-file chat, built on Synaplan's file-lifecycle API (CORE-4).

Added

  • Chat about this file — a new Files action opens a focused AI chat about a single file (text / JSON / XML), wiring up the previously unused per-file chat modal.
  • Update / Remove in Knowledge — the "Add to AI Knowledge" dialog now detects when a file is already indexed and switches to Update in Knowledge (re-index in place, no duplicates) and offers Remove from Knowledge.
  • "Changed since indexed" indicator — the dialog shows a warning when the Nextcloud file was modified after it was last indexed, with one-click update.

Changed

  • Knowledge uploads now send the Nextcloud file id (source_id) and etag (source_etag) and use overwrite-by-source, so re-adding a file (or adding a changed one) updates its knowledge entry in place instead of creating a duplicate.

Requires

  • For the update/stale/remove features: a Synaplan backend with the knowledge-file lifecycle API (source_id / source_etag / overwrite, check-stale, mark-stale). Against older backends the dialog degrades to plain "Add to Knowledge".
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureP4xV2Pu3UPZ1FWdWDeuDO1yidDIE9kcFQZS0D/h88mBv8OImLa39VVhSTb3xGq4W
M3q0k4S3F+3HPKd9cbCzBblV3QNuQlSVzeMjIciAhnr0dmyjr4XVuydvQF1E5Gqp
cddLNn8ty5pzk0Q1n+45+yq9EaesiFJqxcNaqlNf5igNIrL9YJ+jv7cufknCDwSl
eLp8msL3pabsVUDVrIuCoGQLIhqRzHpfu4uWOql+WoM5bICjQeLh68iCzw+6c+0f
9hyrYJFLzaEShObh07Yox2zdAyjFGEM+c8hqWUoKc5epsnBZqz5T5epPrKSzajiM
6FYidSxJ8swXWfCM6OubqgMMPq+deEME+sGttEGoKzjHRakMC9G+tOrFHgyuU+JS
Uu085NrS3zxLt8l2qO91ZsqrN5pCCddmdJL8gNJ0sJ1RtI4m/BERXsUnfj4idMZ+
jBKZ3s+f1AbRRvis7AO6iR5N33sm1VIYWHj/nh6Vxd0GBt11764lK70g6yhJggRu
b52Y4lJNaz3cXg7Hlf/4zOgZ60CcFTlptLoxMRpLxO/3Oo3YDK0/UPVvzcGEGFK0
kZl0vRc8URCVfOpHm5ZxTmohhVUqA4GIRq1kuvEEsGzfSFG6MIV6CKJSPGdADJ21
0IfHCPRjenV8Zbvsdkl7UUHlYFFNq+/eGc/ua/WwiQ4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.4.0
Release Details
UpdatedJune 29, 2026, 7:26 a.m.
Changelog

Added

  • Backend environment switch (Live / Local). Admin settings now keep two separate Synaplan profiles — Live (production) and Local (development) — each with its own URL and API key, plus an Active environment toggle that flips the whole app (chat, media, knowledge, proxy) between them in one click. Makes it easy for any developer to point the app at a local Synaplan dev backend (e.g. http://localhost:8000) and switch back to live without re-entering credentials.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureM/QxVGGaIHtXOex6ZqPcMfcRZdtdJoBooUpsySLA7eqU29cUoAZHMYc7ymZO19vrtgJRsRPaLbxpAghcta5RhLixxQc58LoNz2ZFZapzcHSqiTS3rzu4nkpgk05VQog6grVzWcPjycItXOIfPl4r4QBBqH0cornE7kciuPXAT3yIMqhZa9ATKPAFVcKVjoBrnv4HKo00Hpay2vmm/8VFxRs6CryOw1jkJWfiuUl46lB64zVtB/BWOOnEIjzSeauCvnWip4xKkOrIhYQ122ybMo4n+pnE9m5Ln1Olb249F4yRERyp8MSGpA4+ru6T8dtH1s0VEQ7OkJFVyrdBDj7UMZwyZJ9Z+gxv64ZWykDDVHg5g/XkNLHGlYDjpJCIjuNNw+ds3pkitef1hWfZBkFe9Gii1U/K861yEmbGMI4RfjahCMVOUbLBcSgj9PLVgcINlotOL6jpmgpC1CQ2F1/ImkabNs54aWS83Xc4UtyLTLQze731Un5Rz7ttCz3TLz5i7dzLHk35xv6KMZRad5oIR7TmWNhYs9Mqwk0GuM4yf723pB9O9l+ETZeVEv+49ilszk4UwGfKOq+pPVtHOtdWMfiUWbn1M8QpdxxD85u98XOL03biDZOgKaA/g6jaSlPjEMoCaMR8RbzHcJnJLkXOelDVKh3qXLZ5AGCDCV6xydE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.1
Release Details
UpdatedJune 24, 2026, 8:55 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • App version in the chat tagline — the Research/launcher header now shows the running version (e.g. "Ask anything v1.2.1 — powered by Synaplan"), read dynamically from the installed app version.
  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.
  • Per-chunk CSS injection (relativeCSSInjection) so shared component styles (NcSelect, NcCheckboxRadioSwitch) are injected by every entry that uses them — fixes unstyled dropdowns/switches on the Research page, the in-page launcher, and the file-action dialogs.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureC/Oiw54zI6mkEJnWWVKeOCVXUd/SiHOo7NRiETBIM3XJTqJzRfK06eg4t0NOBdnV
tyYDxXgUfuUGrTTNR2SNyEdotBz9B6AZm18q5WjC37rflLKVSi4P/5PN7Y8Hu+WN
l7ds2UFOV5ZAS5HLCPFAiQwS8n+coYF0qcuAwL6F2b99YY6gA9u5E/QPcEQk/1BB
13tNVea1wAlSzfpI4P0fNgQIATyt5dqb/MZZ9PT+NdL02G46MLMHbXpCjf/ZVZfL
cvXXqsKXxwdmwR696PhwcW2XrrU8UiTdmOmjuAjtMfwwt4MXbQawfEIWm0kYCJeN
t5mAZBAmRtbWvLdvBs+AxnQE3kUoEhay++eg4K7z+f/09xMzoMWj3TJcT0yn+dMW
6Da2D19gl59216PTkv8QLWxfeZj8Z1rayKNG0RAv58h5ZGlAcfE81uIo8fkJ9bhb
66UZ6VPXPvLRDafwDrSRYn8pnSGvg7pxhGWqmjpFmfiZNDJH2+eI6x/dwmFFaLgJ
c3Baqzy/3SjvpCV3YhTYdITrMlmlqf1H/r9PlgoPPu9s+YXmcfRnJ1ZtZdvPujLT
v0J/W2sgzM6mQA/YrQtIIkEi4/8didkDCm+6DwPJsqGyTGHhpGpPg/Xc1hiU3x8z
cmRkDrVzRVW6mji2dM5JZIJdekQHfq47IzaeFtragWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.0
Release Details
UpdatedJune 24, 2026, 8:12 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignaturecIuRWXMw5E51NStOH4j/I5DgiebmK4oGTfCYVR7LCqcr/yUIyvr8tZY0+mG/r405
n8R/0wLAYyIVxJNeqvsh9j7Urdj8KGz8OL/SEYd5DeUSOG9M+Zcxhc244QWk4gVB
LMlIygYCEIexxf75QMkqg5YjTW17IneiXi3kf/8oTf7doKdHOwlp+eBEqTFSonYk
vhftcxU+mS9ubWOnjz2XZx/Kw0ldTMmrI6fEX7xnPBgrFmPnSJfOZLADmvQqvUFV
NGl4KESPqyJ72Bmtj9yQjEGW2wZqxLoU/yhKbpy/QgWPje113B2cJSJWNEbEJ2Pv
yOSVLPU08zTRYMCcFzohr6lz9ybv+tfMn2O8ZXUGvRoRe3han4UWdONX2gvs4iG9
44UkdqVcPPd6M7xzSg8gMx8ikO82E3cKHsVOVvhv9HP6TxOhPa2kSjsqM81/p3h6
GpNpeR0YQWd8t5voL3RBK/Hx53LeKA8q8oLjDp45xm+MDa4FH74kD5d3mX/uck4+
DO2rNf/i+zuYSIREmXtUiOmX5fjQdTjYFLRMP11CmTX4cXMXDIAV3eH59QOenfxB
lptb1+IjISIJ5u0lnd25623+YcFGUrTs0fIx06Gy7hVBknywEU8KqmWdMnX8h5Y6
kzSDUAz4dIQacSI85lHD+IziwtrlQWBJAYX2qb3MYSE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.0.0
Release Details
UpdatedMarch 3, 2026, 11:19 a.m.
Changelog

Added

  • Summarize documents via file context menu (bullet points, paragraph, abstractive; short/medium/long; 12 output languages)
  • Translate documents via file context menu (12 target languages)
  • Add to AI Knowledge — upload files to the Synaplan vector knowledge base with group management
  • Research Chat — full-page AI assistant accessible from top navigation with knowledge group and LLM model selection
  • Support for binary document formats (PDF, DOCX, ODT, XLSX, PPTX) via Synaplan's Tika text extraction
  • Admin settings page with Synaplan URL and API key configuration
  • Connection test functionality in admin settings
  • Top-level "Synaplan" navigation entry with custom bird logo
  • Upload progress spinner with elapsed time counter for long-running knowledge uploads
  • Improved success state with high-contrast SVG checkmark for dark theme compatibility
  • Unit tests for all controllers (42 tests, 114 assertions)
  • CI pipeline with PHP lint (PSR-12), PHPUnit, ESLint, Prettier, and Vite build checks
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureejyVYcZByyn9oDqioAP2ern6IGZhUunDSSAIkbC6zxzV14TjtxYUjs4dLHyK6WhasJdsdC87q9NIiwXtA/pO0yT6Tw9kEKLkfvHyO08xhHCQIKPmgqfERc1ODLcnx1Hseu2xzEVNIHg5gf5o0SYtRsJzPgSgWCScWqzcbWg9YY30KTie9KpoQYfgRHJEjuWy9PWpmdXnK3efZv/b/n85pTPIZ590nVde4rK+5o0ed9ME/j+NLkUS3ZJ88UG/s8l243I0/yWTbu3SOmQJ8ktnWurWoOQYews7g+vFAnn10ePmTp5gFr2wDq1beI0mjbBFRsXJy39Fhi1L2PAA/CYaOW0F3hUEpMPFqDK1YhXHYFaFENxvyACfZ+23qq6SxK4bSpozodVhHIBKToWJMmhACSL/SAWz/0v50tJeDfNELlAwG/YMTjYx60gm4rFQKy+9CbsG8ktGX4T6Q0XDo11UCylsTOdYCowe1h0avbiZ0RHz056soWSoShZRLhhrQEjMZPEbeWpNXxg0TRujGXdx4lMQAfjsPcx9DZGU8HDyp7IwZykKcKAwpF5jg7cZzhlk/n3rloV4mhGcUfDisZ7MmOdzurjsiGIODzch0shA+S1tPvh6ym8pr2BtZ7ZgExvenxtuR2ZT5RvUcuheMhrmmIcDQiKiuSBqz06LrptQhKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 30

Synaplan Integration 1.5.0
Release Details
UpdatedJuly 12, 2026, 3:11 p.m.
Changelog

Knowledge-file lifecycle + per-file chat, built on Synaplan's file-lifecycle API (CORE-4).

Added

  • Chat about this file — a new Files action opens a focused AI chat about a single file (text / JSON / XML), wiring up the previously unused per-file chat modal.
  • Update / Remove in Knowledge — the "Add to AI Knowledge" dialog now detects when a file is already indexed and switches to Update in Knowledge (re-index in place, no duplicates) and offers Remove from Knowledge.
  • "Changed since indexed" indicator — the dialog shows a warning when the Nextcloud file was modified after it was last indexed, with one-click update.

Changed

  • Knowledge uploads now send the Nextcloud file id (source_id) and etag (source_etag) and use overwrite-by-source, so re-adding a file (or adding a changed one) updates its knowledge entry in place instead of creating a duplicate.

Requires

  • For the update/stale/remove features: a Synaplan backend with the knowledge-file lifecycle API (source_id / source_etag / overwrite, check-stale, mark-stale). Against older backends the dialog degrades to plain "Add to Knowledge".
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureP4xV2Pu3UPZ1FWdWDeuDO1yidDIE9kcFQZS0D/h88mBv8OImLa39VVhSTb3xGq4W
M3q0k4S3F+3HPKd9cbCzBblV3QNuQlSVzeMjIciAhnr0dmyjr4XVuydvQF1E5Gqp
cddLNn8ty5pzk0Q1n+45+yq9EaesiFJqxcNaqlNf5igNIrL9YJ+jv7cufknCDwSl
eLp8msL3pabsVUDVrIuCoGQLIhqRzHpfu4uWOql+WoM5bICjQeLh68iCzw+6c+0f
9hyrYJFLzaEShObh07Yox2zdAyjFGEM+c8hqWUoKc5epsnBZqz5T5epPrKSzajiM
6FYidSxJ8swXWfCM6OubqgMMPq+deEME+sGttEGoKzjHRakMC9G+tOrFHgyuU+JS
Uu085NrS3zxLt8l2qO91ZsqrN5pCCddmdJL8gNJ0sJ1RtI4m/BERXsUnfj4idMZ+
jBKZ3s+f1AbRRvis7AO6iR5N33sm1VIYWHj/nh6Vxd0GBt11764lK70g6yhJggRu
b52Y4lJNaz3cXg7Hlf/4zOgZ60CcFTlptLoxMRpLxO/3Oo3YDK0/UPVvzcGEGFK0
kZl0vRc8URCVfOpHm5ZxTmohhVUqA4GIRq1kuvEEsGzfSFG6MIV6CKJSPGdADJ21
0IfHCPRjenV8Zbvsdkl7UUHlYFFNq+/eGc/ua/WwiQ4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.4.0
Release Details
UpdatedJune 29, 2026, 7:26 a.m.
Changelog

Added

  • Backend environment switch (Live / Local). Admin settings now keep two separate Synaplan profiles — Live (production) and Local (development) — each with its own URL and API key, plus an Active environment toggle that flips the whole app (chat, media, knowledge, proxy) between them in one click. Makes it easy for any developer to point the app at a local Synaplan dev backend (e.g. http://localhost:8000) and switch back to live without re-entering credentials.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureM/QxVGGaIHtXOex6ZqPcMfcRZdtdJoBooUpsySLA7eqU29cUoAZHMYc7ymZO19vrtgJRsRPaLbxpAghcta5RhLixxQc58LoNz2ZFZapzcHSqiTS3rzu4nkpgk05VQog6grVzWcPjycItXOIfPl4r4QBBqH0cornE7kciuPXAT3yIMqhZa9ATKPAFVcKVjoBrnv4HKo00Hpay2vmm/8VFxRs6CryOw1jkJWfiuUl46lB64zVtB/BWOOnEIjzSeauCvnWip4xKkOrIhYQ122ybMo4n+pnE9m5Ln1Olb249F4yRERyp8MSGpA4+ru6T8dtH1s0VEQ7OkJFVyrdBDj7UMZwyZJ9Z+gxv64ZWykDDVHg5g/XkNLHGlYDjpJCIjuNNw+ds3pkitef1hWfZBkFe9Gii1U/K861yEmbGMI4RfjahCMVOUbLBcSgj9PLVgcINlotOL6jpmgpC1CQ2F1/ImkabNs54aWS83Xc4UtyLTLQze731Un5Rz7ttCz3TLz5i7dzLHk35xv6KMZRad5oIR7TmWNhYs9Mqwk0GuM4yf723pB9O9l+ETZeVEv+49ilszk4UwGfKOq+pPVtHOtdWMfiUWbn1M8QpdxxD85u98XOL03biDZOgKaA/g6jaSlPjEMoCaMR8RbzHcJnJLkXOelDVKh3qXLZ5AGCDCV6xydE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.1
Release Details
UpdatedJune 24, 2026, 8:55 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • App version in the chat tagline — the Research/launcher header now shows the running version (e.g. "Ask anything v1.2.1 — powered by Synaplan"), read dynamically from the installed app version.
  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.
  • Per-chunk CSS injection (relativeCSSInjection) so shared component styles (NcSelect, NcCheckboxRadioSwitch) are injected by every entry that uses them — fixes unstyled dropdowns/switches on the Research page, the in-page launcher, and the file-action dialogs.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureC/Oiw54zI6mkEJnWWVKeOCVXUd/SiHOo7NRiETBIM3XJTqJzRfK06eg4t0NOBdnV
tyYDxXgUfuUGrTTNR2SNyEdotBz9B6AZm18q5WjC37rflLKVSi4P/5PN7Y8Hu+WN
l7ds2UFOV5ZAS5HLCPFAiQwS8n+coYF0qcuAwL6F2b99YY6gA9u5E/QPcEQk/1BB
13tNVea1wAlSzfpI4P0fNgQIATyt5dqb/MZZ9PT+NdL02G46MLMHbXpCjf/ZVZfL
cvXXqsKXxwdmwR696PhwcW2XrrU8UiTdmOmjuAjtMfwwt4MXbQawfEIWm0kYCJeN
t5mAZBAmRtbWvLdvBs+AxnQE3kUoEhay++eg4K7z+f/09xMzoMWj3TJcT0yn+dMW
6Da2D19gl59216PTkv8QLWxfeZj8Z1rayKNG0RAv58h5ZGlAcfE81uIo8fkJ9bhb
66UZ6VPXPvLRDafwDrSRYn8pnSGvg7pxhGWqmjpFmfiZNDJH2+eI6x/dwmFFaLgJ
c3Baqzy/3SjvpCV3YhTYdITrMlmlqf1H/r9PlgoPPu9s+YXmcfRnJ1ZtZdvPujLT
v0J/W2sgzM6mQA/YrQtIIkEi4/8didkDCm+6DwPJsqGyTGHhpGpPg/Xc1hiU3x8z
cmRkDrVzRVW6mji2dM5JZIJdekQHfq47IzaeFtragWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.2.0
Release Details
UpdatedJune 24, 2026, 8:12 a.m.
Changelog

Major upgrade focused on language handling, personalisation, real streaming, and a clearer, better-formatted chat experience.

Added

  • Configurable answer language — a new "Language & AI behaviour" admin section lets you pick a default answer language and toggle "Use each user's Nextcloud interface language when supported". A German user then gets German answers automatically, with the default as the fallback. This replaces the previous behaviour where chat and document tools were effectively always English. The resolved language is injected as a system instruction into the streaming chat and passed through to summaries/translations, and the Summarize/Translate dialogs pre-select it.
  • Personal memories in chat — when Synaplan's memory service (Qdrant) is reachable and the admin has enabled it ("Allow personal memories in chat"), the Research/launcher chat shows a "Use my memories" switch (on by default). Relevant memories are searched per question and injected as context so answers are personalised. The control is hidden entirely when the service is unavailable.
  • Live chat status row — at-a-glance chips show the active model, the answer language, whether image (/pic) and video (/vid) generation are available, the selected knowledge base, and the memory state. Each answer is captioned with the model that actually produced it.
  • Staged progress while waiting — instead of a static "Thinking…", the chat now reports what the backend is doing: Sorting your request → Searching the knowledge base → Recalling your memories → Generating the answer, stopping the moment streaming begins.
  • Markdown rendering for document results — Summarize and Translate results now render Markdown (headings, bold, lists, code, links) via NcRichText, matching the chat, instead of showing raw **/- source.
  • Client-config endpoint (api#clientConfig) exposing the resolved language and memory availability to the frontend.
  • Staged upload progress — the "Add to Knowledge" dialog shows a progress bar and a phase checklist (Uploading → Extracting text → Creating chunks → Generating embeddings) with elapsed time.

Changed

  • Real token-by-token streaming — chat answers now stream live. The SSE relay was rewritten to a direct cURL pass-through (SseProxyResponse) that writes each chunk straight to the browser and defeats PHP/Nextcloud output buffering (disables zlib/output buffering, Accept-Encoding: identity, X-Accel-Buffering: no, connection priming). Previously the answer arrived all at once after a long pause.
  • Higher-contrast status chips — active capabilities use a solid brand fill with guaranteed-contrast text; disabled ones are clearly muted but still legible in both light and dark mode.
  • Single-ring loading spinner — Summarize/Translate dialogs use one clean spinner instead of the twin-circle icon.
  • Tighter Markdown spacing — list items in rendered answers no longer have oversized gaps.

Fixed

  • Answers are no longer "always English" — the chat/streaming path previously sent a hard-coded en output language; it now respects the admin default and/or the user's interface language.
  • Admin toggles are clickable — the language/memory switches (and the chat "Use my memories" switch) used the wrong prop/event binding for @nextcloud/vue v9 and could not be toggled; they now use the correct v-model.
  • Knowledge upload no longer shows a false success — when the server stores 0 chunks (empty/image-only file, or the embedding service is unavailable), the dialog reports a clear error instead of a green "File added" screen with "Chunks created: 0".
  • Removed leftover "this is a demo" text from the knowledge-upload progress hint.

Security / dependencies

  • Updated vite to 7.3.5, fixing a moderate dev-server advisory affecting 7.0.0–7.3.3.
  • Refreshed dependency lockfiles: friendsofphp/php-cs-fixer 3.95.2, prettier 3.8.4, @nextcloud/vue 9.8.2, @nextcloud/axios 2.6.0, @nextcloud/dialogs 7.4.0, vue 3.5.38, and @nextcloud/initial-state 3.0.0.
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignaturecIuRWXMw5E51NStOH4j/I5DgiebmK4oGTfCYVR7LCqcr/yUIyvr8tZY0+mG/r405
n8R/0wLAYyIVxJNeqvsh9j7Urdj8KGz8OL/SEYd5DeUSOG9M+Zcxhc244QWk4gVB
LMlIygYCEIexxf75QMkqg5YjTW17IneiXi3kf/8oTf7doKdHOwlp+eBEqTFSonYk
vhftcxU+mS9ubWOnjz2XZx/Kw0ldTMmrI6fEX7xnPBgrFmPnSJfOZLADmvQqvUFV
NGl4KESPqyJ72Bmtj9yQjEGW2wZqxLoU/yhKbpy/QgWPje113B2cJSJWNEbEJ2Pv
yOSVLPU08zTRYMCcFzohr6lz9ybv+tfMn2O8ZXUGvRoRe3han4UWdONX2gvs4iG9
44UkdqVcPPd6M7xzSg8gMx8ikO82E3cKHsVOVvhv9HP6TxOhPa2kSjsqM81/p3h6
GpNpeR0YQWd8t5voL3RBK/Hx53LeKA8q8oLjDp45xm+MDa4FH74kD5d3mX/uck4+
DO2rNf/i+zuYSIREmXtUiOmX5fjQdTjYFLRMP11CmTX4cXMXDIAV3eH59QOenfxB
lptb1+IjISIJ5u0lnd25623+YcFGUrTs0fIx06Gy7hVBknywEU8KqmWdMnX8h5Y6
kzSDUAz4dIQacSI85lHD+IziwtrlQWBJAYX2qb3MYSE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
Synaplan Integration 1.0.0
Release Details
UpdatedMarch 3, 2026, 11:19 a.m.
Changelog

Added

  • Summarize documents via file context menu (bullet points, paragraph, abstractive; short/medium/long; 12 output languages)
  • Translate documents via file context menu (12 target languages)
  • Add to AI Knowledge — upload files to the Synaplan vector knowledge base with group management
  • Research Chat — full-page AI assistant accessible from top navigation with knowledge group and LLM model selection
  • Support for binary document formats (PDF, DOCX, ODT, XLSX, PPTX) via Synaplan's Tika text extraction
  • Admin settings page with Synaplan URL and API key configuration
  • Connection test functionality in admin settings
  • Top-level "Synaplan" navigation entry with custom bird logo
  • Upload progress spinner with elapsed time counter for long-running knowledge uploads
  • Improved success state with high-contrast SVG checkmark for dark theme compatibility
  • Unit tests for all controllers (42 tests, 114 assertions)
  • CI pipeline with PHP lint (PSR-12), PHPUnit, ESLint, Prettier, and Vite build checks
Licenses Apache License 2.0
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhL0MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMjE5MTE1NDEzWhcNMzYwNTI3MTE1NDEzWjAfMR0wGwYD
VQQDDBRzeW5hcGxhbl9pbnRlZ3JhdGlvbjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAKQr7VKtEGVP7Ee6Mru4NpN8jlgmfXAo03xUrEPvGW4+ts3I6z8C
2ebfvunGrn/Vb1d5zNz9sjedYPSxs2SrXV8D5fV++mU+n35bZ8UNN0AqYYixU6Jj
CDCDN++PyodliT4p7rznATzY9SYe6Dey3T17LdwpeuZKtb/86DV+rAbFLPiKnnoe
leQgeNO2slVGQz1cN74eUdf1KD88Gj4tIEIRDyYiu/0tAPrvynMqPUDlgcU4TUuX
ao+GVkbjCXWaE43ZuL/VlLas4n4+Q2fJrRbjvkFr3yL3Z8Rkanb0Sg/vtcyChrlV
dGDFfougAI+Jmh0wh8KVU4rNQxFIXUt17B/hwjDYP35YjkZvX8EDpL/ZjvgExN0S
FA79V7sZM/BJnS3V8Qn97LY9y94FbtudRJQvks4XRAx4wKoZD/mCHLqD7vg9QxSI
OQwfY72GY9Dw1j2kqARVT3VIcyJXsVnDStXvnAAA5euLDSX6lu8aA930+/A81KP+
H5gtxVvNyE/nCo8sR93AwIgTd1DBQk2MXc5g3+AxDYmhNkM5l4vPfBT30AhO+s+q
OIm4ISUefOLqJk0exxB+Dk7MupIOuG9ImpZeXCMO4GQwlYfkG2K/FLOR+TCBaSs3
eh0r/kghP6AyLBpirZU7pR5YDFXPxIIg8U92X2rjXx59V3uZNslPTQj/AgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAA4OyP+bBYVGalieoYD17eQC1goZG8lLwgs+MDWC
ZnREM+SK12HZUHEa/iJImZMB9JF9HBHv9cSp+5CHzd0GNMiJpJVU/Be+vw59H7Yk
2IuiHhzV7VcLjGGNzFKQPCuXYOfi7rgS9voMyx1oXCL2KpQmi9s+2krYOjqZ9QKD
i/yzQaHNYqrQuAxWvvewRqRr9khcOwvSfhD7YD7SPqmGDeYy4D8aqLYz+6VsHtgh
8YT9rQNiv1u0qKT2JwQY87s6IgNAFn0ZT/lpDZQPikJCVXwseUehjnQlYy5suNdM
ROUbbrGuRedW2it8C/T+l/sZNvq5G4Yave/oZVRQO4VtmhM=
-----END CERTIFICATE-----
SignatureejyVYcZByyn9oDqioAP2ern6IGZhUunDSSAIkbC6zxzV14TjtxYUjs4dLHyK6WhasJdsdC87q9NIiwXtA/pO0yT6Tw9kEKLkfvHyO08xhHCQIKPmgqfERc1ODLcnx1Hseu2xzEVNIHg5gf5o0SYtRsJzPgSgWCScWqzcbWg9YY30KTie9KpoQYfgRHJEjuWy9PWpmdXnK3efZv/b/n85pTPIZ590nVde4rK+5o0ed9ME/j+NLkUS3ZJ88UG/s8l243I0/yWTbu3SOmQJ8ktnWurWoOQYews7g+vFAnn10ePmTp5gFr2wDq1beI0mjbBFRsXJy39Fhi1L2PAA/CYaOW0F3hUEpMPFqDK1YhXHYFaFENxvyACfZ+23qq6SxK4bSpozodVhHIBKToWJMmhACSL/SAWz/0v50tJeDfNELlAwG/YMTjYx60gm4rFQKy+9CbsG8ktGX4T6Q0XDo11UCylsTOdYCowe1h0avbiZ0RHz056soWSoShZRLhhrQEjMZPEbeWpNXxg0TRujGXdx4lMQAfjsPcx9DZGU8HDyp7IwZykKcKAwpF5jg7cZzhlk/n3rloV4mhGcUfDisZ7MmOdzurjsiGIODzch0shA+S1tPvh6ym8pr2BtZ7ZgExvenxtuR2ZT5RvUcuheMhrmmIcDQiKiuSBqz06LrptQhKk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0