Merge branch 'master' into feat/document-occ-reserved-options
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
51
.github/workflows/command-rebase.yml
vendored
@@ -1,51 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Rebase command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/rebase`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reaction-type: "-1"
|
||||
2
.github/workflows/fixup.yml
vendored
@@ -28,6 +28,6 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
||||
uses: skjnldsv/block-fixup-merge-action@c138ea99e45e186567b64cf065ce90f7158c236a # v2
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
pre-build-command: pip install -r requirements.txt
|
||||
build-command: make gettext
|
||||
|
||||
- uses: peter-evans/create-pull-request@v6
|
||||
- uses: peter-evans/create-pull-request@v7
|
||||
id: cpr
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
6
.github/workflows/sphinxbuild.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
shell: bash
|
||||
run: tar czf /tmp/documentation.tar.gz -C user_manual/_build/html .
|
||||
- name: Upload static documentation
|
||||
uses: actions/upload-artifact@v4.3.4
|
||||
uses: actions/upload-artifact@v4.4.0
|
||||
with:
|
||||
name: User manual.zip
|
||||
path: "/tmp/documentation.tar.gz"
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
shell: bash
|
||||
run: tar czf /tmp/documentation.tar.gz -C developer_manual/_build/html/com .
|
||||
- name: Upload static documentation
|
||||
uses: actions/upload-artifact@v4.3.4
|
||||
uses: actions/upload-artifact@v4.4.0
|
||||
with:
|
||||
name: Developer manual.zip
|
||||
path: "/tmp/documentation.tar.gz"
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
shell: bash
|
||||
run: tar czf /tmp/documentation.tar.gz -C admin_manual/_build/html/com .
|
||||
- name: Upload static documentation
|
||||
uses: actions/upload-artifact@v4.3.4
|
||||
uses: actions/upload-artifact@v4.4.0
|
||||
with:
|
||||
name: Administration manual.zip
|
||||
path: "/tmp/documentation.tar.gz"
|
||||
|
||||
@@ -43,9 +43,8 @@ Machine translation
|
||||
|
||||
In order to make use of machine translation features in the assistant, you will need an app that provides a translation backend:
|
||||
|
||||
* :ref:`translate<ai-app-translate>` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request)
|
||||
* :ref:`translate2 (ExApp)<ai-app-translate2>` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request)
|
||||
* *integration_deepl* - Integrates with the deepl API to provide translation functionality from Deepl.com servers (Only community supported)
|
||||
* *integration_libretranslate* - Integrates with the open source LibreTranslate API to provide translation functionality hosted commercially or on your own hardware (Only community supported)
|
||||
|
||||
Speech-To-Text
|
||||
~~~~~~~~~~~~~~
|
||||
@@ -68,7 +67,7 @@ Text-To-Image
|
||||
|
||||
In order to make use of Text-To-Image features, you will need an app that provides an image generation backend:
|
||||
|
||||
* text2image_stablediffusion2 (Customer support available upon request)
|
||||
* text2image_stablediffusion (Customer support available upon request)
|
||||
* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
* *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
|
||||
|
||||
@@ -11,15 +11,15 @@ Context Chat is an :ref:`assistant<ai-app-assistant>` feature that is implemente
|
||||
|
||||
Together they provide the ContextChat text processing tasks accessible via the :ref:`Nextcloud Assistant app<ai-app-assistant>`.
|
||||
|
||||
The *context_chat* and *context_chat_backend* apps run only open source models and do so entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
|
||||
The *context_chat* and *context_chat_backend* apps will use the Free text to text task processing providers like OpenAI integration, LLM2, etc. and such a provider is required on a fresh install, or it can be configured to run open source models entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
|
||||
|
||||
This app supports input and output in languages other than English if the language model supports the language.
|
||||
This app supports input and output mainly in English, other languages may work if the language model supports the language, but are currently not guaranteed to produce good results.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Minimal Nextcloud version: 28
|
||||
* The *context_chat_backend* app is built as an External App and thus depends on AppAPI v2.3.0 and later
|
||||
* Minimal Nextcloud version: 30
|
||||
* The *context_chat_backend* app is built as an External App and thus depends on AppAPI >= 2.7.0
|
||||
* Nextcloud AIO is supported
|
||||
* We currently support NVIDIA GPUs and x86_64 CPUs
|
||||
* CUDA >= v12.2 on your host system
|
||||
@@ -31,8 +31,7 @@ Requirements
|
||||
* CPU Sizing
|
||||
|
||||
* At least 12GB of system RAM
|
||||
* Below version 3, 10-20 Cores, the more cores (physical cores) the faster the prompt processing will be. Overall performance will increase with an increase in memory bandwidth (more memory sticks and/or higher DDR version)
|
||||
* Since version 3, this app makes use of the configured Text To Text Free prompt provider instead of running its own Language model, you will thus need only 4-8 cores for the embedding model
|
||||
* This app makes use of the configured Text To Text Free prompt provider instead of running its own Language model, you will thus need only 4-8 cores for the embedding model
|
||||
|
||||
* A dedicated machine is recommended
|
||||
|
||||
@@ -55,6 +54,11 @@ Installation
|
||||
|
||||
occ app:enable context_chat
|
||||
|
||||
4. Optionally, run two instances of this occ command for faster processing of requests:
|
||||
|
||||
.. code-block::
|
||||
|
||||
occ background-job:worker 'OC\TaskProcessing\SynchronousBackgroundJob'
|
||||
|
||||
**Note**: Both apps need to be installed and both major version and minor version of the two apps must match for the functionality to work (ie. "v1.3.4" and "v1.3.1"; but not "v1.3.4" and "v2.1.6"; and not "v1.3.4" and "v1.4.5"). Keep this in mind when updating.
|
||||
|
||||
@@ -95,11 +99,8 @@ Nextcloud customers should file bugs directly with our Customer Support.
|
||||
Known Limitations
|
||||
-----------------
|
||||
|
||||
* The underlying language model used by Context Chat cannot be changed
|
||||
* We currently only support the English language
|
||||
* Language models are likely to generate false information and should thus only be used in situations that are not critical. It's recommended to only use AI at the beginning of a creation process and not at the end, so that outputs of AI serve as a draft for example and not as final product. Always check the output of language models before using it.
|
||||
* Context Chat is not integrated into the Chat UI of assistant app, at the moment, but has it's own interface in the assistant modal
|
||||
* Make sure to test this app for whether it meets your use-case's quality requirements
|
||||
* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying model. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI)
|
||||
* Due to technical limitations that we are in the process of mitigating, each task currently incurs a time cost of between 0 and 5 minutes in addition to the actual processing time
|
||||
* Nextcloud usernames can be only 56 characters long. This is a limitation of the vector database we use (Chroma DB) and will be fixed soon.
|
||||
* AI as a service providers like OpenAI integration, LLM2, etc. don't work with this app as of now. We are in process of integrating them.
|
||||
|
||||
@@ -11,12 +11,26 @@ This app uses `ctransformers <https://github.com/marella/ctransformers>`_ under
|
||||
* `Llama3 8b Instruct <https://huggingface.co/QuantFactory/Meta-Llama-3-8B-Instruct-GGUF>`_ (reasonable quality; fast; good acclaim; multilingual output may not be optimal)
|
||||
* `Llama3 70B Instruct <https://huggingface.co/QuantFactory/Meta-Llama-3-70B-Instruct-GGUF>`_ (good quality; good acclaim; good multilingual output)
|
||||
|
||||
Multilinguality
|
||||
---------------
|
||||
|
||||
This app supports input and output in languages other than English if the underlying model supports the language.
|
||||
|
||||
Llama 3.1 `supports the following languages: <https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct#multilingual-benchmarks>`_
|
||||
|
||||
* English
|
||||
* Portuguese
|
||||
* Spanish
|
||||
* Italian
|
||||
* German
|
||||
* French
|
||||
* Hindi
|
||||
* Thai
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* This app is built as an External App and thus depends on AppAPI v2.3.0 or higher
|
||||
* This app is built as an External App and thus depends on AppAPI v3.1.0 or higher
|
||||
* Nextcloud AIO is supported
|
||||
* We currently support NVIDIA GPUs and x86_64 CPUs
|
||||
* CUDA >= v12.2 on your host system
|
||||
@@ -64,10 +78,10 @@ Here is an example config file for Llama 2:
|
||||
|
||||
{
|
||||
"prompt": "<|im_start|> system\n{system_prompt}\n<|im_end|>\n<|im_start|> user\n{user_prompt}\n<|im_end|>\n<|im_start|> assistant\n",
|
||||
"gpt4all_config": {
|
||||
"max_tokens": 4096,
|
||||
"n_predict": 2048,
|
||||
"stop": ["<|im_end|>"]
|
||||
"loader_config": {
|
||||
"n_ctx": 4096,
|
||||
"max_tokens": 2048,
|
||||
"stop": ["<|im_end|>"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,11 +90,12 @@ Here is an example configuration for Llama 3:
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"prompt": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{system_prompt}<|eot_id|><|start_header_id|>user<|end_header_id|>\n\n{user_prompt}<|eot_id|>\n\”<|start_header_id|>assistant<|end_header_id|>\n\n",
|
||||
"gpt4all_config": {
|
||||
"max_tokens": 8000,
|
||||
"n_predict": 4000,
|
||||
"stop": ["<|eot_id|>"]
|
||||
"prompt": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n{system_prompt}<|eot_id|><|start_header_id|>user<|end_header_id|>\n{user_prompt}<|eot_id|>\n<|start_header_id|>assistant<|end_header_id|>\n",
|
||||
"loader_config": {
|
||||
"n_ctx": 8000,
|
||||
"max_tokens": 4000,
|
||||
"stop": ["<|eot_id|>"],
|
||||
"temperature": 0.3
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ This app uses `faster-whisper <https://github.com/SYSTRAN/faster-whisper>`_ unde
|
||||
* OpenAI Whisper large-v2 or v3 (multilingual)
|
||||
* OpenAI Whisper medium.en (English only)
|
||||
|
||||
Whisper large v3 supports about ~100 languages and shows outstanding performance in ~10 of them. For more details see the `OpenAI Whisper paper <https://cdn.openai.com/papers/whisper.pdf>`_
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
|
||||
137
admin_manual/ai/app_summary_bot.rst
Normal file
@@ -0,0 +1,137 @@
|
||||
==========================================
|
||||
App: Summary Bot (Talk chat summarize bot)
|
||||
==========================================
|
||||
|
||||
.. _ai-app-summary-bot:
|
||||
|
||||
The *Summary Bot* app utilizes Large Language Model (LLM) providers in Nextcloud and can be added to a conversation in `Nextcloud Talk` to generate summaries from the chat messages of that room either on-demand or following a schedule.
|
||||
It can run on only open source or proprietary models either on-premises or in the cloud leveraging apps like `Local large language model app <https://apps.nextcloud.com/apps/llm2>`_ or `OpenAI and LocalAI integration app <https://apps.nextcloud.com/apps/integration_openai>`_.
|
||||
|
||||
Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
|
||||
|
||||
The app currently supports the following languages:
|
||||
|
||||
* English (en)
|
||||
|
||||
The quality of summaries depends directly on the quality of the underlying model. It is recommended to test the model for the desired use-case before applying it.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Minimal Nextcloud version: 30
|
||||
* Docker
|
||||
* AppAPI >= 3.0.0
|
||||
* Talk
|
||||
* Task Processing Provider like Local large language model app (llm2) or OpenAI and LocalAI integration app (integration_openai)
|
||||
|
||||
Space usage
|
||||
~~~~~~~~~~~
|
||||
|
||||
* ~100MB
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
0. Make sure the following apps are installed:
|
||||
|
||||
- `Nextcloud AppAPI app <https://apps.nextcloud.com/apps/app_api>`_
|
||||
|
||||
- `Nextcloud Talk app (Spreed) <https://apps.nextcloud.com/apps/spreed>`_
|
||||
|
||||
- One of the following AI model providers:
|
||||
|
||||
- `Nextcloud Local large language model app <https://apps.nextcloud.com/apps/llm2>`_
|
||||
|
||||
- `Nextcloud OpenAI and LocalAI integration app <https://apps.nextcloud.com/apps/integration_openai>`_
|
||||
|
||||
|
||||
Setup (via App Store)
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
1. Install the *Summary Bot* app via the "External Apps" page in Nextcloud
|
||||
|
||||
2. Enable the *Summary Bot* Bot for the selected Chatroom via the three dots menu of the Chatroom (The Bots settings are located inside the *Bots* section)
|
||||
|
||||
Setup (Manual)
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
After cloning this app *manually* (cloned via git to your apps directory) you will need to execute the following steps:
|
||||
|
||||
1. Change to the folder you have cloned the source to:
|
||||
.. code-block::
|
||||
|
||||
cd /path/to/your/nextcloud/webroot/apps/summarai/
|
||||
|
||||
|
||||
2. Build the docker image:
|
||||
.. code-block::
|
||||
|
||||
docker build --no-cache -f Dockerfile -t local_summarai .
|
||||
|
||||
3. Run the docker image:
|
||||
|
||||
*Info:*
|
||||
|
||||
- APP_VERSION environment variable should be equal to the version of the *Summary Bot* you are using
|
||||
|
||||
- NEXTCLOUD_URL environment variable must be set to your Nextcloud instance's URL, ensuring it's reachable by the docker image.
|
||||
|
||||
.. code-block::
|
||||
|
||||
sudo docker run -ti -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro -e APP_ID=summarai -e APP_DISPLAY_NAME="Summary Bot" -e APP_HOST=0.0.0.0 -e APP_PORT=9031 -e APP_SECRET=12345 -e APP_VERSION=1.0.0 -e NEXTCLOUD_URL='<YOUR_NEXTCLOUD_URL_REACHABLE_FROM_INSIDE_DOCKER>' -p 9031:9031 local_summarai
|
||||
|
||||
|
||||
4. Un-register the Summary Bot if its already installed
|
||||
|
||||
.. code-block::
|
||||
|
||||
sudo -u <the_user_the_webserver_is_running_as> php /path/to/your/nextcloud/webroot/occ app_api:app:unregister summarai
|
||||
|
||||
|
||||
5. Register the Summary Bot so that your Nextcloud instance is aware of it
|
||||
|
||||
*Info:* Adjust the host value in the following example to the IP address of the docker container (for added security)
|
||||
|
||||
.. code-block::
|
||||
|
||||
sudo -u <the_user_the_webserver_is_running_as> php ./occ app_api:app:register summarai manual_install --json-info '{ "id": "summarai", "name": "Summary Bot", "daemon_config_name": "manual_install", "version": "1.0.0", "secret": "12345", "host": "0.0.0.0", "port": 9031, "scopes": ["AI_PROVIDERS", "TALK", "TALK_BOT"], "protocol": "http"}' --force-scopes --wait-finish
|
||||
|
||||
|
||||
6. Enable the *Summary Bot* for the selected Chatroom via the three dots menu of the Chatroom (The Bots settings are located inside the *Bots* section)
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
After enabling the *Summary Bot* in a Chatroom, you can test its functionality by simply sending the message below:
|
||||
|
||||
"@summary" or "@summary help"
|
||||
|
||||
App store
|
||||
---------
|
||||
|
||||
You can also find the app in our app store, where you can write a review: `<https://apps.nextcloud.com/apps/summarai>`_
|
||||
|
||||
Repository
|
||||
----------
|
||||
|
||||
You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: `<https://github.com/nextcloud/sumupbot>`_
|
||||
|
||||
Nextcloud customers should file bugs directly with our Customer Support.
|
||||
|
||||
Ethical AI Rating
|
||||
-----------------
|
||||
|
||||
The ethical rating of the *SummarAI Bot*, which utilizes a model for text processing through the Nextcloud Assistant app, is significantly influenced by the choice and implementation of the underlying model.
|
||||
|
||||
Learn more about the Nextcloud Ethical AI Rating `in our blog<https://nextcloud.com/blog/nextcloud-ethical-ai-rating/>`.
|
||||
|
||||
Known Limitations
|
||||
-----------------
|
||||
|
||||
* The Summary Bot cannot access previous conversations, it only recognizes messages from the moment it was enabled in the chatroom.
|
||||
* Summary of maximum 40000 characters is supported. This assumes the underlying model can handle this amount of text (which should be close to 16000 context length).
|
||||
* Languages other than English are not supported. The underlying model may still be able to understand other languages.
|
||||
* AI models may occasionally produce inaccurate information. Therefore, they should be employed with caution in non-critical scenarios. It's essential to verify the accuracy of the bot's output before application.
|
||||
* Be aware that AI models can consume a significant amount of energy. It's advisable to consider this factor in the planning and operation of AI systems if hosted on-premises or sustainability is a concern.
|
||||
* AI models can exhibit extended processing times when run on CPUs. For enhanced efficiency, utilizing GPU support is recommended to expedite request handling.
|
||||
* Customer support is available upon request, however we can't solve false or problematic output (hallucinations), most performance issues, or other problems caused by the underlying models. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI)
|
||||
@@ -1,105 +0,0 @@
|
||||
==========================================
|
||||
App: Local Machine translation (translate)
|
||||
==========================================
|
||||
|
||||
.. _ai-app-translate:
|
||||
|
||||
The *translate* app is one of the apps that provide machine translation functionality in Nextcloud and act as a translation backend for the :ref:`Nextcloud Assistant app<ai-app-assistant>`, the *text* app and :ref:`other apps making use of the core Translation API<mt-consumer-apps>`. The *translate* app specifically runs only open source models and does so entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
|
||||
|
||||
The app currently supports the following languages:
|
||||
|
||||
* English (en)
|
||||
* German (de)
|
||||
* French (fr)
|
||||
* Spanish (es)
|
||||
* Chinese (zh)
|
||||
|
||||
As the models are entirely open source, the quality of translations may not be comparable to commercially available machine translation services.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Minimal Nextcloud version: 26
|
||||
* x86 CPU with 4-8 cores for the app to use (The more cores the faster it will be)
|
||||
* 2GB of RAM for the app should be enough
|
||||
* GNU lib C (musl is not supported)
|
||||
* This app does not support using GPU for processing and may thus not be performing ideally for long texts
|
||||
* The workload will run on the web server workers
|
||||
|
||||
(*Note*: Nextcloud AIO is currently not supported due to it using musl)
|
||||
|
||||
Space usage
|
||||
~~~~~~~~~~~
|
||||
|
||||
* ~1GB per language pair
|
||||
* ~10GB in total
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
0. Make sure the :ref:`Nextcloud Assistant app<ai-app-assistant>` is installed
|
||||
1. Install the *translate* app via the "Apps" page in Nextcloud, or by executing
|
||||
|
||||
occ app:enable translate
|
||||
|
||||
Setup
|
||||
~~~~~
|
||||
|
||||
After installing this app you will need to run:
|
||||
|
||||
.. code-block::
|
||||
|
||||
occ translate:download-models
|
||||
|
||||
You may also download only specific languages by using the following command:
|
||||
|
||||
.. code-block::
|
||||
|
||||
occ translate:download-models <languages>
|
||||
|
||||
For example
|
||||
|
||||
.. code-block::
|
||||
|
||||
occ translate:download-models de en
|
||||
|
||||
will download both en->de and de->en.
|
||||
|
||||
.. code-block::
|
||||
|
||||
occ translate:download-models de en es
|
||||
|
||||
will download en->de, de->en, en->es, es->en, es->de, de->es
|
||||
|
||||
App store
|
||||
---------
|
||||
|
||||
You can also find the app in our app store, where you can write a review: `<https://apps.nextcloud.com/apps/translate>`_
|
||||
|
||||
Repository
|
||||
----------
|
||||
|
||||
You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: `<https://github.com/nextcloud/translate>`_
|
||||
|
||||
Nextcloud customers should file bugs directly with our Customer Support.
|
||||
|
||||
Ethical AI Rating
|
||||
-----------------
|
||||
|
||||
Rating: 🟢
|
||||
~~~~~~~~~~
|
||||
|
||||
Positive:
|
||||
* the software for training and inference of this model is open source
|
||||
* the trained model is freely available, and thus can be run on-premises
|
||||
* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.
|
||||
|
||||
Learn more about the Nextcloud Ethical AI Rating `in our blog<https://nextcloud.com/blog/nextcloud-ethical-ai-rating/>`.
|
||||
|
||||
Known Limitations
|
||||
-----------------
|
||||
|
||||
* Language models are likely to generate false information and should thus only be used in situations that are not critical. It's recommended to only use AI at the beginning of a creation process and not at the end, so that outputs of AI serve as a draft for example and not as final product. Always check the output of language models before using it.
|
||||
* Make sure to test the translation model you are using it for whether it meets the use-case's quality requirements
|
||||
* Language models notoriously have a high energy consumption
|
||||
* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying models. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI)
|
||||
74
admin_manual/ai/app_translate2.rst
Normal file
@@ -0,0 +1,74 @@
|
||||
=============================================
|
||||
App: Local Machine translation 2 (translate2)
|
||||
=============================================
|
||||
|
||||
.. _ai-app-translate2:
|
||||
|
||||
The *translate2* app is one of the apps that provide machine translation functionality in Nextcloud and act as a translation backend for the :ref:`Nextcloud Assistant app<ai-app-assistant>`. The *translate2* app specifically runs only open source models and does so entirely on-premises. Nextcloud can provide customer support upon request, please talk to your account manager for the possibilities.
|
||||
|
||||
The app currently supports 400+ languages. See the complete list here: https://huggingface.co/datasets/allenai/MADLAD-400
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
* Minimal Nextcloud version: 30
|
||||
* This app is built as an External App and thus depends on AppAPI v3.1.0 or higher
|
||||
* Nextcloud AIO is supported
|
||||
* We currently support NVIDIA GPUs and x86_64 CPUs
|
||||
* CUDA >= v12.2.2 on your host system
|
||||
* GPU Sizing
|
||||
|
||||
* A NVIDIA GPU with at least 4 GB VRAM
|
||||
* At least 6 GB of system RAM
|
||||
|
||||
* CPU Sizing
|
||||
|
||||
* x86 CPU with 4-8 cores for the app to use (The more cores the faster it will be)
|
||||
* At least 6 GB of RAM for the app should be enough (includes software+libraries and the model)
|
||||
|
||||
Space usage
|
||||
~~~~~~~~~~~
|
||||
|
||||
* ~ 2.95 GB for the docker container
|
||||
* ~ 2.77 GB for the default model
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
0. Make sure the :ref:`Nextcloud Assistant app<ai-app-assistant>` is installed
|
||||
1. :ref:`Install AppAPI and setup a Deploy Demon<ai-app_api>`
|
||||
2. Install the "Local Machine Translation" (translate2) ExApp via the "External Apps" page in the Nextcloud web admin user interface
|
||||
|
||||
App store
|
||||
---------
|
||||
|
||||
You can also find the app in our app store, where you can write a review: `<https://apps.nextcloud.com/apps/translate2>`_
|
||||
|
||||
Repository
|
||||
----------
|
||||
|
||||
You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: `<https://github.com/nextcloud/translate2>`_
|
||||
|
||||
Nextcloud customers should file bugs directly with our Customer Support.
|
||||
|
||||
Ethical AI Rating
|
||||
-----------------
|
||||
|
||||
Rating: 🟢
|
||||
~~~~~~~~~~
|
||||
|
||||
Positive:
|
||||
* the software for training and inference of this model is open source
|
||||
* the trained model is freely available, and thus can be run on-premises
|
||||
* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.
|
||||
|
||||
Learn more about the Nextcloud Ethical AI Rating `in our blog <https://nextcloud.com/blog/nextcloud-ethical-ai-rating>`_.
|
||||
|
||||
Known Limitations
|
||||
-----------------
|
||||
|
||||
* AI translations are not a replacement for human professional translations and in many cases post-editing is required. AI translations can be used for understanding the main content of a text but not for translations that require special knowledge (such as technical content or legal content), or translations that require specific writing style to convey style, deeper meaning, or emotions (such as marketing content or translating books).
|
||||
* While the quality of the output will be fine for the most common languages (English, French, Spanish) the quality will suffer for languages that have less coverage in the original training set.
|
||||
* Make sure to test the translation model you are using it for whether it meets the use-case's quality requirements
|
||||
* Language models notoriously have a high energy consumption
|
||||
* Customer support is available upon request, however we can't solve false or problematic output, most performance issues, or other problems caused by the underlying models. Support is thus limited only to bugs directly caused by the implementation of the app (connectors, API, front-end, AppAPI)
|
||||
@@ -7,10 +7,11 @@ Artificial Intelligence
|
||||
|
||||
overview
|
||||
app_assistant
|
||||
app_translate
|
||||
app_translate2
|
||||
app_llm2
|
||||
app_stt_whisper2
|
||||
app_recognize
|
||||
app_context_chat
|
||||
app_summary_bot
|
||||
app_api_and_external_apps
|
||||
ai_as_a_service
|
||||
|
||||
@@ -22,12 +22,14 @@ Nextcloud uses modularity to separate raw AI functionality from the Graphical Us
|
||||
"Suspicious login detection","`Suspicious Login <https://apps.nextcloud.com/apps/suspicious_login>`_","Green","Yes","Yes","Yes","Yes"
|
||||
"Related resources","`Related Resources <https://apps.nextcloud.com/apps/related_resources>`_","Green","Yes","Yes","Yes","Yes"
|
||||
"Recommended files","recommended_files","Green","Yes","Yes","Yes","Yes"
|
||||
"Machine translation","`Translate <https://apps.nextcloud.com/apps/translate>`_","Green","Yes","Yes - Opus models by University Helsinki","Yes","Yes"
|
||||
"","`LibreTranslate integration <https://apps.nextcloud.com/apps/integration_libretranslate>`_","Green","Yes","Yes - OpenNMT models","Yes","Yes"
|
||||
"Text processing using LLMs","`llm2 (ExApp) <https://apps.nextcloud.com/apps/llm2>`_","Green","Yes","Yes - Llama 3.1 model by Meta","Yes","Yes"
|
||||
"","`OpenAI and LocalAI integration (via OpenAI API) <https://apps.nextcloud.com/apps/integration_openai>`_","Red","No","No","No","No"
|
||||
"","`OpenAI and LocalAI integration (via LocalAI) <https://apps.nextcloud.com/apps/integration_openai>`_","Yellow","Yes","Yes - e.g. Llama models by Meta", "No","Yes"
|
||||
"Machine translation","`Local Machine Translation 2 (ExApp) <https://apps.nextcloud.com/apps/translate2>`_","Green","Yes","Yes - MADLAD models by Google","Yes","Yes"
|
||||
"","`DeepL integration <https://apps.nextcloud.com/apps/integration_deepl>`_","Red","No","No","No","No"
|
||||
"","`OpenAI and LocalAI integration (via OpenAI API) <https://apps.nextcloud.com/apps/integration_openai>`_","Red","No","No","No","No"
|
||||
"","`OpenAI and LocalAI integration (via LocalAI) <https://apps.nextcloud.com/apps/integration_openai>`_","Green","Yes","Yes","Yes","Yes"
|
||||
"","`Local Whisper Speech-To-Text 2 (ExApp) <https://apps.nextcloud.com/apps/stt_whisper2>`_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes"
|
||||
"Speech to Text","`Local Whisper Speech-To-Text 2 (ExApp) <https://apps.nextcloud.com/apps/stt_whisper2>`_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes"
|
||||
"","`OpenAI and LocalAI integration <https://apps.nextcloud.com/apps/integration_openai>`_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No"
|
||||
"","`Replicate integration <https://apps.nextcloud.com/apps/integration_replicate>`_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No"
|
||||
"Image generation","`Local Stable Diffusion <https://apps.nextcloud.com/apps/text2image_stablediffusion>`_","Yellow","Yes","Yes - StableDiffusion XL model by StabilityAI","No","Yes"
|
||||
@@ -66,6 +68,30 @@ Features used by other apps
|
||||
Some of our AI features are realized as generic APIs that any app can use and any app can provide an implementation for by registering a provider. So far, these are
|
||||
Machine translation, Speech-To-Text, Image generation, Text processing and Context Chat.
|
||||
|
||||
Text processing
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. _tp-consumer-apps:
|
||||
|
||||
As you can see in the table above we have multiple apps offering text processing using Large language models.
|
||||
In downstream apps like Context Chat and assistant, users can use the text processing functionality regardless of which app implements it behind the scenes.
|
||||
|
||||
Frontend apps
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* *Text* for offering an inline graphical UI for the various tasks
|
||||
* `Assistant <https://apps.nextcloud.com/apps/assistant>`_ for offering a graphical UI for the various tasks and a smart picker
|
||||
* `Mail <https://apps.nextcloud.com/apps/mail>`_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs<mail_thread_summary>` for how to enable this)
|
||||
* `Summary Bot <https://apps.nextcloud.com/apps/summarai>`_ for summarizing chat histories in `Talk <https://apps.nextcloud.com/apps/spreed>`_
|
||||
|
||||
|
||||
Backend apps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* :ref:`llm2<ai-app-llm2>` - Runs open source AI LLM models on your own server hardware (Customer support available upon request)
|
||||
* `OpenAI and LocalAI integration (via OpenAI API) <https://apps.nextcloud.com/apps/integration_openai>`_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
|
||||
|
||||
Machine translation
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -84,9 +110,8 @@ Frontend apps
|
||||
Backend apps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* :ref:`translate<ai-app-translate>` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request)
|
||||
* :ref:`translate2 (ExApp)<ai-app-translate2>` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request)
|
||||
* *integration_deepl* - Integrates with the deepl API to provide translation functionality from Deepl.com servers (Only community supported)
|
||||
* *integration_libretranslate* - Integrates with the open source LibreTranslate API to provide translation functionality hosted commercially or on your own hardware (Only community supported)
|
||||
|
||||
Speech-To-Text
|
||||
^^^^^^^^^^^^^^
|
||||
@@ -99,37 +124,15 @@ Frontend apps
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* `Assistant <https://apps.nextcloud.com/apps/assistant>`_ offering a graphical translation UI and a smart picker
|
||||
* `Speech-to-Text Helper <https://apps.nextcloud.com/apps/stt_helper>`_ for providing a Speech-To-Text smart picker (deprecated; was merged into assistant)
|
||||
* `Talk <https://apps.nextcloud.com/apps/spreed>`_ for transcribing calls (see `Nextcloud Talk docs <https://nextcloud-talk.readthedocs.io/en/latest/settings/#app-configuration>`_ for how to enable this)
|
||||
|
||||
Backend apps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* :ref:`stt_whisper2<ai-app-stt_whisper2>` - Runs open source AI Speech-To-Text models on your own server hardware (Customer support available upon request)
|
||||
* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
* `OpenAI and LocalAI integration (via OpenAI API) <https://apps.nextcloud.com/apps/integration_openai>`_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
|
||||
|
||||
Text processing
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. _tp-consumer-apps:
|
||||
|
||||
As you can see in the table above we have multiple apps offering Text processing capabilities. In downstream apps like the Nextcloud Assistant app, users can use the text processing functionality regardless of which app implements it behind the scenes.
|
||||
|
||||
Frontend apps
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* `Assistant <https://apps.nextcloud.com/apps/assistant>`_ for offering a graphical UI for the various tasks and a smart picker
|
||||
* `GPTFreePrompt <https://apps.nextcloud.com/apps/gptfreeprompt>`_ for providing an llm smart picker (deprecated; was merged into assistant)
|
||||
* `Mail <https://apps.nextcloud.com/apps/mail>`_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs<mail_thread_summary>` for how to enable this)
|
||||
* `SummarAI <https://apps.nextcloud.com/apps/summarai>`_ for summarizing chat histories in `Talk <https://apps.nextcloud.com/apps/spreed>`_
|
||||
|
||||
Backend apps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* :ref:`llm2<ai-app-llm2>` - Runs open source AI language models locally on your own server hardware (Customer support available upon request)
|
||||
* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
|
||||
Image generation
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -141,18 +144,17 @@ Frontend apps
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* `Assistant <https://apps.nextcloud.com/apps/assistant>`_ for offering a graphical UI and a smart picker
|
||||
* `Text-to-Image Helper <https://apps.nextcloud.com/apps/stt_helper>`_ for providing a Text-to-Image smart picker (deprecated; was merged into assistant)
|
||||
|
||||
Backend apps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* text2image_stablediffusion2 (Customer support available upon request)
|
||||
* *integration_openai* - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
* text2image_stablediffusion (Customer support available upon request)
|
||||
* `OpenAI and LocalAI integration (via OpenAI API) <https://apps.nextcloud.com/apps/integration_openai>`_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
* *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`AI as a Service<ai-ai_as_a_service>`)
|
||||
|
||||
|
||||
Context Chat (Tech preview)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Context Chat
|
||||
^^^^^^^^^^^^
|
||||
Our Context Chat feature was introduced in Nextcloud Hub 7 (v28). It allows asking questions to the assistant related to your documents in Nextcloud. You will need to install both the context_chat app as well as the context_chat_backend External App. Be prepared that things might break or be a little rough around the edges. We look forward to your feedback!
|
||||
|
||||
Frontend apps
|
||||
@@ -165,6 +167,13 @@ Backend apps
|
||||
|
||||
* :ref:`context_chat + context_chat_backend<ai-app-context_chat>` - (Customer support available upon request)
|
||||
|
||||
Provider apps
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Apps can integrate their content with Context Chat to make it available for querying using Context Chat. The following apps have implemented this integration so far:
|
||||
|
||||
* *files*
|
||||
* `Analytics <https://apps.nextcloud.com/apps/analytics>`_
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
|
||||
@@ -345,7 +345,7 @@ Each block is (by default) AES-256-CTR decrypted with the ``$iv[$position]`` and
|
||||
Sources
|
||||
-------
|
||||
|
||||
- `nextcloud-tools repository on GitHub <https://github.com/syseleven/nextcloud-tools>`_
|
||||
- `encryption-recovery-tools repository on GitHub <https://github.com/nextcloud/encryption-recovery-tools>`_
|
||||
- `Nextcloud Encryption Configuration documentation <https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html>`_
|
||||
- `Nextcloud Help response concerning the usage of version information <https://help.nextcloud.com/t/allow-file-decryption-with-only-the-files-keys-and-passwords/436/12>`_
|
||||
- `Sourcecode: Creation of the Message Authentication Code <https://github.com/nextcloud/server/blob/a374d8837d6de459500e619cf608e0721ea14574/apps/encryption/lib/Crypto/Crypt.php#L504>`_
|
||||
|
||||
@@ -5,6 +5,12 @@ Deleted Items (trash bin)
|
||||
If the trash bin app is enabled (default), this setting defines the policy
|
||||
for when files and folders in the trash bin will be permanently deleted.
|
||||
|
||||
.. note::
|
||||
|
||||
If the user quota limit is exceeded due to deleted files in the trash bin,
|
||||
retention settings will be ignored and files will be cleaned up until
|
||||
the quota requirements are met.
|
||||
|
||||
The app allows for two settings, a minimum time for trash bin retention,
|
||||
and a maximum time for trash bin retention.
|
||||
Minimum time is the number of days a file will be kept, after which it
|
||||
@@ -15,7 +21,7 @@ file and folder deletion. For migration purposes, this setting is installed
|
||||
initially set to "auto", which is equivalent to the default setting in
|
||||
Nextcloud.
|
||||
|
||||
You may alter the default pattern in ``config.php``. The default setting is
|
||||
You may alter the default pattern in ``config.php``. The default setting is
|
||||
``auto``, which sets the default pattern::
|
||||
|
||||
'trashbin_retention_obligation' => 'auto',
|
||||
@@ -41,11 +47,11 @@ Available values:
|
||||
Background job
|
||||
--------------
|
||||
|
||||
To permanently delete files a background jobs runs every 30 minutes.
|
||||
To permanently delete files a background jobs runs every 30 minutes.
|
||||
It's possible to deactivate the background job and setup a (system) cron to expire the versions via occ.
|
||||
|
||||
Deactivate background job: ``occ config:app:set --value=no files_trashbin background_job_expire_trash``
|
||||
|
||||
Activate background job: ``occ config:app:delete files_trashbin background_job_expire_trash``
|
||||
|
||||
Expire versions: ``occ trashbin:expire`` or ``occ trashbin:expire --quiet`` (without the progress bar)
|
||||
Expire versions: ``occ trashbin:expire`` or ``occ trashbin:expire --quiet`` (without the progress bar)
|
||||
|
||||
@@ -121,6 +121,24 @@ Refresh your Nextcloud admin page, and the cache warning should disappear.
|
||||
config file or append ``--define apc.enable_cli=1`` to the cron job call.
|
||||
|
||||
|
||||
Depending on your installation size and the number of users and interactions
|
||||
with the system you may want to adapt the ``apc.shm_size`` setting in your
|
||||
``php.ini``. The default value is 32M which is usually too low for Nextcloud. A
|
||||
good starting point is 128M. If you have a lot of users and/or a lot of apps
|
||||
installed you may want to increase this value further. Keep in mind that this
|
||||
memory needs to be available in your system's memory and kept in mind when
|
||||
sizing the amount of workers on your server.
|
||||
|
||||
A frequenly resetting cache can lead to unexpected slow downs when the cache is
|
||||
being cleared and refilled.
|
||||
|
||||
There is an admin check trying to detect too low memory sizing, but make sure to
|
||||
monitor the APCu cache status to see if the cache is full and if you need to
|
||||
increase the size. `APCu provides a script
|
||||
<https://github.com/krakjoe/apcu/blob/master/apc.php>`_ that can help with this,
|
||||
otherwise the `serverinfo app <https://github.com/nextcloud/serverinfo>`_ in
|
||||
Nextcloud can also show the APCu cache status.
|
||||
|
||||
Redis
|
||||
-----
|
||||
|
||||
|
||||
@@ -788,6 +788,9 @@ mail_smtpdebug
|
||||
|
||||
Enable SMTP class debugging.
|
||||
|
||||
NOTE: ``loglevel`` will likely need to be adjusted too. See docs:
|
||||
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html#enabling-debug-mode
|
||||
|
||||
Defaults to ``false``
|
||||
|
||||
mail_smtpmode
|
||||
@@ -1163,6 +1166,10 @@ trashbin_retention_obligation
|
||||
If the trash bin app is enabled (default), this setting defines the policy
|
||||
for when files and folders in the trash bin will be permanently deleted.
|
||||
|
||||
If the user quota limit is exceeded due to deleted files in the trash bin,
|
||||
retention settings will be ignored and files will be cleaned up until
|
||||
the quota requirements are met.
|
||||
|
||||
The app allows for two settings, a minimum time for trash bin retention,
|
||||
and a maximum time for trash bin retention.
|
||||
|
||||
@@ -1712,6 +1719,8 @@ customclient_desktop
|
||||
'https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8',
|
||||
'customclient_ios_appid' =>
|
||||
'1125420102',
|
||||
'customclient_fdroid' =>
|
||||
'https://f-droid.org/packages/com.nextcloud.client/',
|
||||
|
||||
This section is for configuring the download links for Nextcloud clients, as
|
||||
seen in the first-run wizard and on Personal pages.
|
||||
@@ -1722,6 +1731,7 @@ Defaults to:
|
||||
- Android client: ``https://play.google.com/store/apps/details?id=com.nextcloud.client``
|
||||
- iOS client: ``https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8``
|
||||
- iOS client app id: ``1125420102``
|
||||
- F-Droid client: ``https://f-droid.org/packages/com.nextcloud.client/``
|
||||
|
||||
Apps
|
||||
----
|
||||
@@ -1737,9 +1747,10 @@ defaultapp
|
||||
|
||||
'defaultapp' => 'dashboard,files',
|
||||
|
||||
Set the default app to open on login. Use the app names as they appear in the
|
||||
URL after clicking them in the Apps menu, such as documents, calendar, and
|
||||
gallery. You can use a comma-separated list of app names, so if the first
|
||||
Set the default app to open on login. The entry IDs can be retrieved from
|
||||
the Navigations OCS API endpoint: https://docs.nextcloud.com/server/latest/develper_manual/_static/openapi.html#/operations/core-navigation-get-apps-navigation.
|
||||
|
||||
You can use a comma-separated list of app names, so if the first
|
||||
app is not enabled for a user then Nextcloud will try the second one, and so
|
||||
on. If no enabled apps are found it defaults to the dashboard app.
|
||||
|
||||
@@ -2031,6 +2042,21 @@ Defaults to the following providers:
|
||||
- ``OC\Preview\TXT``
|
||||
- ``OC\Preview\XBitmap``
|
||||
|
||||
metadata_max_filesize
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
::
|
||||
|
||||
'metadata_max_filesize' => 256,
|
||||
|
||||
Maximum file size for metadata generation.
|
||||
|
||||
If a file exceeds this size, metadata generation will be skipped.
|
||||
Note: memory equivalent to this size will be used for metadata generation.
|
||||
|
||||
Default: 256 megabytes.
|
||||
|
||||
LDAP
|
||||
----
|
||||
|
||||
@@ -2877,8 +2903,10 @@ forbidden_filenames
|
||||
|
||||
'forbidden_filenames' => ['.htaccess'],
|
||||
|
||||
Block a specific file or files and disallow the upload of files
|
||||
with this name. ``.htaccess`` is blocked by default.
|
||||
Block a specific file or files and disallow the upload of files with this name.
|
||||
|
||||
This blocks any access to those files (read and write).
|
||||
``.htaccess`` is blocked by default.
|
||||
|
||||
WARNING: USE THIS ONLY IF YOU KNOW WHAT YOU ARE DOING.
|
||||
|
||||
@@ -2896,6 +2924,8 @@ forbidden_filename_basenames
|
||||
|
||||
Disallow the upload of files with specific basenames.
|
||||
|
||||
Matching existing files can no longer be updated and in matching folders no files can be created anymore.
|
||||
|
||||
The basename is the name of the file without the extension,
|
||||
e.g. for "archive.tar.gz" the basename would be "archive".
|
||||
|
||||
@@ -2914,6 +2944,8 @@ forbidden_filename_characters
|
||||
Block characters from being used in filenames. This is useful if you
|
||||
have a filesystem or OS which does not support certain characters like windows.
|
||||
|
||||
Matching existing files can no longer be updated and in matching folders no files can be created anymore.
|
||||
|
||||
The '/' and '\' characters are always forbidden, as well as all characters in the ASCII range [0-31].
|
||||
|
||||
Example for windows systems: ``array('?', '<', '>', ':', '*', '|', '"')``
|
||||
@@ -2931,6 +2963,8 @@ forbidden_filename_extensions
|
||||
|
||||
Deny extensions from being used for filenames.
|
||||
|
||||
Matching existing files can no longer be updated and in matching folders no files can be created anymore.
|
||||
|
||||
The '.part' extension is always forbidden, as this is used internally by Nextcloud.
|
||||
|
||||
Defaults to ``array('.filepart', '.part')``
|
||||
|
||||
@@ -45,6 +45,7 @@ occ command Directory
|
||||
* :ref:`disable_user_label`
|
||||
* :ref:`system_tags_commands_label`
|
||||
* :ref:`antivirus_commands_label`
|
||||
* :ref:`setupchecks_commands_label`
|
||||
* `Debugging`_
|
||||
|
||||
.. _http_user_label:
|
||||
@@ -1141,6 +1142,7 @@ backups and other tasks that require locking users out until you are finished::
|
||||
maintenance:repair repair this installation
|
||||
maintenance:theme:update Apply custom theme changes
|
||||
maintenance:update:htaccess Updates the .htaccess file
|
||||
maintenance:repair-share-owner Fix some shares owner if it felt out of sync
|
||||
|
||||
``maintenance:mode`` locks the sessions of all logged-in users, including
|
||||
administrators, and displays a status screen warning that the server is in
|
||||
@@ -1360,7 +1362,7 @@ report showing how many users you have, and when a user was last logged in::
|
||||
You can create a new user with their display name, login name, and any group
|
||||
memberships with the ``user:add`` command. The syntax is::
|
||||
|
||||
user:add [--password-from-env] [--display-name[="..."]] [-g|--group[="..."]]
|
||||
user:add [--password-from-env] [--generate-password] [--display-name[="..."]] [-g|--group[="..."]] [--email EMAIL]
|
||||
uid
|
||||
|
||||
The ``display-name`` corresponds to the **Full Name** on the Users page in your
|
||||
@@ -1411,6 +1413,26 @@ You may also use ``password-from-env`` to reset passwords::
|
||||
layla'
|
||||
Successfully reset password for layla
|
||||
|
||||
``generate-password`` allows you to set a securely generated password for the user.
|
||||
This is never shown in the output and can be used to create users with temporary
|
||||
passwords. This can be used in conjunction with the ``email`` option to create
|
||||
users with a temporary password and send a welcome email to the user's email
|
||||
address without user interaction::
|
||||
|
||||
sudo -u www-data php occ user:add layla --generate-password --email layla@example.tld
|
||||
The account "layla" was created successfully
|
||||
Welcome email sent to layla@example.tld
|
||||
|
||||
The ``email`` option allows you to set the user's email address when creating
|
||||
the user. A welcome email will be sent to the user's email address if
|
||||
``newUser.sendEmail`` is set to ``yes`` in ``core``'s app config or not set at all::
|
||||
|
||||
sudo -u www-data php occ user:add layla --email layla@example.tld
|
||||
Enter password:
|
||||
Confirm password:
|
||||
The account "layla" was created successfully
|
||||
Welcome email sent to layla@example.tld
|
||||
|
||||
You can delete users::
|
||||
|
||||
sudo -u www-data php occ user:delete fred
|
||||
@@ -1427,8 +1449,8 @@ View a list of all users' most recent login::
|
||||
bob has never logged in.
|
||||
layla's last login: 2024-03-20 17:18
|
||||
stephanie's last login: 2024-01-11 13:26
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Read user settings::
|
||||
|
||||
@@ -1826,6 +1848,25 @@ Mark a file as scanned or unscanned::
|
||||
|
||||
sudo -u www php occ files_antivirus:mark <path> <scanned|unscanned>
|
||||
|
||||
.. _setupchecks_commands_label:
|
||||
|
||||
Setupchecks
|
||||
-----------
|
||||
|
||||
Run the setupchecks via occ::
|
||||
|
||||
sudo -u www php occ setupchecks
|
||||
|
||||
Example output::
|
||||
|
||||
dav:
|
||||
✓ DAV system address book: No outstanding DAV system address book sync.
|
||||
network:
|
||||
✓ WebDAV endpoint: Your web server is properly set up to allow file synchronization over WebDAV.
|
||||
✓ Data directory protected
|
||||
✓ Internet connectivity
|
||||
...
|
||||
|
||||
.. _occ_debugging:
|
||||
|
||||
Debugging
|
||||
|
||||
@@ -32,11 +32,11 @@ Rich text editing can be turned off globally to always open markdown files in th
|
||||
occ config:app:set text rich_editing_enabled --value=0
|
||||
|
||||
|
||||
File encodings
|
||||
--------------
|
||||
File encodings
|
||||
--------------
|
||||
|
||||
Text can automatically detect encodings of files and will convert them to UTF-8 when saving. Due to the variety of encodings, not all of them can be detected, however you can configure a list of encodings and in which priority they should be detected using the php ``mbstring.detect_order`` setting in your php.ini:
|
||||
Text can automatically detect encodings of files and will convert them to UTF-8 when saving. Due to the variety of encodings, not all of them can be detected, however you can configure a list of encodings and in which priority they should be detected using the php ``mbstring.detect_order`` setting in your php.ini:
|
||||
|
||||
::
|
||||
|
||||
mbstring.detect_order = ASCII,JIS,UTF-8,SJIS,EUC-JP
|
||||
mbstring.detect_order = ASCII,JIS,UTF-8,SJIS,EUC-JP
|
||||
|
||||
28
admin_manual/configuration_user/authentication.rst
Normal file
@@ -0,0 +1,28 @@
|
||||
.. _authentication:
|
||||
|
||||
==============
|
||||
Authentication
|
||||
==============
|
||||
|
||||
App passwords
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
App passwords allow users to authenticate multiple client applications against their Nextcloud account without giving the application the login password. App passwords are mandatory for accounts with :ref:`two-factor authentication<two-factor-auth>` enabled.
|
||||
|
||||
Some clients support *remote wipe*, which makes the connected application delete its local data.
|
||||
|
||||
.. _authentication-app-password-clean-up:
|
||||
|
||||
Automated clean-up
|
||||
******************
|
||||
|
||||
.. versionadded:: 30
|
||||
|
||||
Nextcloud will delete unused passwords. Passwords set for *remote wipe* are deleted after 60 days of no usage. App passwords of client applications are deleted after 365 days of no usage.
|
||||
|
||||
The time spans can be overwritten with configuration::
|
||||
|
||||
php occ config:system:set token_auth_wipe_token_retention --type=int --value 2592000 # 60*60*24*30 - 30 days
|
||||
php occ config:system:set token_auth_token_retention --type=int --value 63072000 # 60*60*24*365*2 - 2 years
|
||||
|
||||
Values are set in **seconds**.
|
||||
@@ -9,6 +9,7 @@ User management
|
||||
reset_admin_password
|
||||
reset_user_password
|
||||
user_password_policy
|
||||
authentication
|
||||
two_factor-auth
|
||||
user_auth_ldap
|
||||
user_auth_ldap_cleanup
|
||||
|
||||
@@ -2,6 +2,24 @@
|
||||
Calendar / CalDAV
|
||||
=================
|
||||
|
||||
Calendar server settings
|
||||
------------------------
|
||||
|
||||
The calendar server can be configured on the Groupware admin settings page.
|
||||
You can globally disable sending invitation emails for events, generating the built-in birthday
|
||||
calendar, and sending email notifications about upcoming events.
|
||||
|
||||
.. figure:: images/settings_calendar-server.png
|
||||
:scale: 60%
|
||||
|
||||
.. versionadded:: 30 The section will be hidden if no app makes use of the CalDAV backend.
|
||||
|
||||
Starting from Nextcloud 30, the calendar server settings section will be hidden if no app uses the
|
||||
CalDAV backend.
|
||||
Install and enable an appropriate app to show the section again, e.g.
|
||||
`Calendar <https://apps.nextcloud.com/apps/calendar>`_ or
|
||||
`Tasks <https://apps.nextcloud.com/apps/tasks>`_.
|
||||
|
||||
Events
|
||||
------
|
||||
|
||||
@@ -99,9 +117,10 @@ Refresh rate
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Calendar subscriptions are cached on server and refreshed periodically.
|
||||
The default refresh rate is one week, unless the subscription itself tells otherwise.
|
||||
If the calendar server provides a `refresh interval <https://icalendar.org/New-Properties-for-iCalendar-RFC-7986/5-7-refresh-interval-property.html>`_, it is respected.
|
||||
Otherwise the default refresh rate is one week.
|
||||
|
||||
To set up a different default refresh rate, change the ``calendarSubscriptionRefreshRate`` option::
|
||||
To set up a different default refresh rate for calendars without server side refrsh rates, change the ``calendarSubscriptionRefreshRate`` option::
|
||||
|
||||
php occ config:app:set dav calendarSubscriptionRefreshRate --value "P1D"
|
||||
|
||||
|
||||
@@ -49,3 +49,22 @@ Shared items
|
||||
.. versionadded:: 5.5.0
|
||||
|
||||
For this feature, the shipped `related resources app <https://apps.nextcloud.com/apps/related_resources>`_ needs to be enabled.
|
||||
|
||||
Rate limits
|
||||
-----------
|
||||
|
||||
Nextcloud rate limits the creation of address books and how many can be created in a short period of time. The default is 10 address books per hour. This can be customized as follows::
|
||||
|
||||
# Set limit to 15 items per 30 minutes
|
||||
php occ config:app:set dav rateLimitAddressBookCreation --type=integer --value=15
|
||||
php occ config:app:set dav rateLimitPeriodAddressBookCreation --type=integer --value=1800
|
||||
|
||||
Additionally, the maximum number of address books a user may create is limited to 10 items. This can be customized too::
|
||||
|
||||
# Allow users to create 50 addressbooks
|
||||
php occ config:app:set dav maximumAdressbooks --type=integer --value=50
|
||||
|
||||
or::
|
||||
|
||||
# Allow users to create address books without restriction
|
||||
php occ config:app:set dav maximumAdressbooks --type=integer --value=-1
|
||||
|
||||
BIN
admin_manual/groupware/images/settings_calendar-server.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
@@ -91,7 +91,7 @@ Users can share mailboxes with each other. So far, there is no UI for users to c
|
||||
LLM Processing
|
||||
--------------
|
||||
|
||||
The Mail app can optionally use large language models to process emails and offer assistance features like thread summaries, smart replies and event agendas.
|
||||
The Mail app can optionally use large language models to process emails and offer assistance features like thread summaries, smart replies, event agendas and follow-up reminders.
|
||||
|
||||
.. note:: The supported languages depend on the used large language model.
|
||||
|
||||
@@ -117,3 +117,13 @@ The feature is opt-in, it is disabled by default and can be enabled in mail admi
|
||||
|
||||
Administration settings > Groupware > Mail app > Enable thread summary
|
||||
|
||||
Follow-up reminders
|
||||
-------------------
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
The Mail app will automatically remind users when their outgoing emails remain unanswered for
|
||||
multiple days.
|
||||
Each sent email will be analyzed by an AI to check whether a reply is expected.
|
||||
|
||||
The feature can be enabled through the global :ref:`mail_llm_processing` setting.
|
||||
|
||||
@@ -188,7 +188,7 @@ This can be achieved with this kind of setting, usually using private IP ranges:
|
||||
'127.0.0.1/8',
|
||||
'192.168.0.0/16',
|
||||
'fd00::/8',
|
||||
]
|
||||
],
|
||||
|
||||
All requests originating from IP addresses outside of these ranges will not be able to execute admin actions.
|
||||
|
||||
|
||||
@@ -22,8 +22,12 @@ server {
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
# With NGinx >= 1.25.1 you should use this instead:
|
||||
# listen 443 ssl;
|
||||
# listen [::]:443 ssl;
|
||||
# http2 on;
|
||||
server_name cloud.example.com;
|
||||
|
||||
# Path to the root of your installation
|
||||
|
||||
@@ -26,6 +26,10 @@ server {
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
# With NGinx >= 1.25.1 you should use this instead:
|
||||
# listen 443 ssl;
|
||||
# listen [::]:443 ssl;
|
||||
# http2 on;
|
||||
server_name cloud.example.com;
|
||||
|
||||
# Path to the root of the domain
|
||||
|
||||
@@ -14,6 +14,8 @@ If you prefer an automated installation, you have the option to:
|
||||
|
||||
.. note:: Please note that the community options are not officially supported by Nextcloud GmbH.
|
||||
|
||||
.. tip:: For an enterprise-ready and scalable installation based on Helm Charts (also available for Podman), please `contact Nextcloud GmbH <https://nextcloud.com/enterprise/>`_.
|
||||
|
||||
In case you prefer installing from the source tarball, you can setup Nextcloud
|
||||
from scratch using a classic LAMP stack (Linux, Apache, MySQL/MariaDB, PHP).
|
||||
This document provides a complete walk-through for installing Nextcloud on
|
||||
|
||||
@@ -12,13 +12,11 @@ So it is quite easy, to migrate from one ownCloud version to at least one Nextcl
|
||||
However this does only work with versions that are close enough database and code-wise.
|
||||
See the table below for a version map, where migrating is easily possible:
|
||||
|
||||
+-------------------+------------------------------+
|
||||
| ownCloud | Nextcloud |
|
||||
+===================+==============================+
|
||||
| 10.13.x | 25.0.x (but at least 25.0.2) |
|
||||
+-------------------+------------------------------+
|
||||
| 10.5.x | 20.0.x (but at least 20.0.5) |
|
||||
+-------------------+------------------------------+
|
||||
+-------------------+-------------------------------+
|
||||
| ownCloud | Nextcloud |
|
||||
+===================+===============================+
|
||||
| 10.13.x | 25.0.x (but at least 25.0.13) |
|
||||
+-------------------+-------------------------------+
|
||||
|
||||
.. note:: Since ownCloud does not and will not support PHP 8.0 or higher, you
|
||||
need to migrate from ownCloud 10.13.x to Nextcloud 25 and then
|
||||
|
||||
@@ -14,6 +14,7 @@ These sub pages will cover the most important changes in Nextcloud, as well as s
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
upgrade_to_31.rst
|
||||
upgrade_to_30.rst
|
||||
upgrade_to_28.rst
|
||||
upgrade_to_27.rst
|
||||
|
||||
@@ -30,3 +30,8 @@ Previews for PDF files with Imaginary
|
||||
|
||||
The preview provider ``OC\Preview\Imaginary`` is no longer generating previews for PDF files.
|
||||
Add the new preview provider ``OC\Preview\ImaginaryPDF`` to ``enabledPreviewProviders`` to enable preview generation with Imaginary for PDF files.
|
||||
|
||||
Automated clean-up of app password
|
||||
----------------------------------
|
||||
|
||||
Nextcloud 30 will :ref:`clean-up unused app passwords<authentication-app-password-clean-up>`.
|
||||
|
||||
13
admin_manual/release_notes/upgrade_to_31.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
=======================
|
||||
Upgrade to Nextcloud 31
|
||||
=======================
|
||||
|
||||
System requirements
|
||||
-------------------
|
||||
|
||||
* PHP 8.1 is now deprecated but still supported.
|
||||
|
||||
PHP configuration
|
||||
-----------------
|
||||
|
||||
We have a new setup warning to check if the memory reserved for APCu is high enough. If you see this warning, you should increase the memory reserved for APCu. You can do this by increasing the value of the ``apc.shm_size`` directive in your ``php.ini`` file. It is generally advised to review this value and increase it if necessary depending on your instance size.
|
||||
@@ -11,6 +11,7 @@ These sub pages will cover the most important changes in Nextcloud, as well as s
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
upgrade_to_31.rst
|
||||
upgrade_to_30.rst
|
||||
upgrade_to_29.rst
|
||||
upgrade_to_28.rst
|
||||
|
||||
@@ -31,6 +31,29 @@ Capabilities
|
||||
Front-end changes
|
||||
-----------------
|
||||
|
||||
The overall design was changed to be less round and more compact,
|
||||
as a part of this some CSS variables were added and other deprecated with Nextcloud 30, see :ref:`cssvars`.
|
||||
|
||||
Clickable area
|
||||
^^^^^^^^^^^^^^
|
||||
The size of the CSS variable ``--clickable-area`` variable has shrunk from ``44px`` to ``34px``.
|
||||
This will result in several regressions and paper-cuts in your app that will need to be manually fixed.
|
||||
It's recommended to:
|
||||
|
||||
1) Link the ``@nextcloud/vue`` current master to your app (pull often cause fixes are getting in there too);
|
||||
2) Do a codebase-wide search of `44px` and replace with the variable `--default-clickable-area` if appropriate;
|
||||
3) Check for regressions and visual bugs;
|
||||
4) Report the regression of your app in this issue (you can create a heading with the name of your own app);
|
||||
5) Also report ``@nextlcoud/vue`` library regressions if they're not reported already in their list;
|
||||
6) Fix regression in your app (only the ones that are unrelated to the ``@nextcloud/vue`` components);
|
||||
|
||||
Line height
|
||||
^^^^^^^^^^^
|
||||
The ``--default-line-height`` variable has changed from ``24px``` to ``1.5`` for the ``--default-font-size`` this
|
||||
means that the actual value in pixel will go from 24 to 22.5. Although this is a slight change, it's recommended
|
||||
to check for visual regressions in your app.
|
||||
|
||||
|
||||
Font sizes
|
||||
^^^^^^^^^^
|
||||
|
||||
@@ -38,17 +61,47 @@ Nextcloud now provides meaningful default styles for heading elements.
|
||||
This can cause visual regressions if your code does not explicitly set font size and weight.
|
||||
If you need to use heading elements outside of text content, you might need to adjust their styles.
|
||||
|
||||
Added APIs
|
||||
^^^^^^^^^^
|
||||
Border radius
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
Changed APIs
|
||||
^^^^^^^^^^^^
|
||||
The border radius CSS variables have been refactored:
|
||||
|
||||
Removed APIs
|
||||
^^^^^^^^^^^^
|
||||
- Added
|
||||
|
||||
Removed globals
|
||||
^^^^^^^^^^^^^^^
|
||||
- ``--border-radius-small`` was added for smaller elements like chips.
|
||||
- ``--border-radius-container`` was added for smaller containers like action menus.
|
||||
- ``--border-radius-container-large`` was added for larger containers like body or modals.
|
||||
- ``--border-radius-element`` was added for interactive elements such as buttons, input, navigation and list items.
|
||||
|
||||
- Deprecated
|
||||
|
||||
- ``--border-radius`` is deprecated now in favor of ``--border-radius-small``.
|
||||
- ``--border-radius-large`` is deprecated now in favor of ``--border-radius-element``.
|
||||
- ``--border-radius-pill`` is deprecated now in favor of ``--border-radius-element``.
|
||||
- ``--border-radius-rounded`` is deprecated now in favor of ``--border-radius-container``.
|
||||
|
||||
CSP Nonce
|
||||
^^^^^^^^^
|
||||
|
||||
A bug was fixed that prevented Nextcloud form using the ``CSP_NONCE`` environment variable,
|
||||
this now means that the CSP nonce for JavaScript assets is no longer (guaranteed to be) based on the CSRF token.
|
||||
Instead administrators can choose to use a differently generated token.
|
||||
When using JavaScript modules this does not make a difference, as they are imported and the nonce has only to be set on the root module (done by Nextcloud),
|
||||
but if you are using Webpack or otherwise dynamically load scripts, you now need adjust the CSP nonce handling.
|
||||
|
||||
Get the CSP nonce:
|
||||
|
||||
- Either use ``getCSPNonce`` from the ``@nextcloud/auth`` :ref:`package<js-library_nextcloud-auth>`, which is also backwards compatible.
|
||||
- Or directly read the nonce from the ``<meta name="csp-nonce" />`` tag.
|
||||
|
||||
When using Webpack:
|
||||
|
||||
.. code-block:: diff
|
||||
|
||||
- import { getRequestToken } from '@nextcloud/auth'
|
||||
- __webpack_nonce__ = btoa(getRequestToken())
|
||||
+ import { getCSPNonce } from '@nextcloud/auth'
|
||||
+ __webpack_nonce__ = getCSPNonce()
|
||||
|
||||
Deprecated APIs
|
||||
^^^^^^^^^^^^^^^
|
||||
@@ -131,6 +184,8 @@ Added APIs
|
||||
- ``OCP\AppFramework\Bootstrap\IRegistrationContext::registerTaskProcessingTaskType()`` was added to allow registering task processing task types
|
||||
- ``OCP\Files\IRootFolder::getAppDataDirectoryName()`` was added to allow getting the name of the app data directory
|
||||
- ``OCP\Console\ReservedOptions`` was added and contains constants for options reserved for occ core features. ``--debug-log`` and ``--debug-log-level`` are now reserved by occ as they allow to show debug information to the output on any occ command.
|
||||
- ``OCP\Security\IHasher::validate()`` should return true if the passed string is a valid hash generated by ``OCP\Security\IHasher::hash()``
|
||||
- ``OCP\AppFramework\Http\JSONResponse()`` constructor now supports passing additional ``json_encode`` flags, see https://www.php.net/manual/en/function.json-encode.php for details
|
||||
|
||||
Changed APIs
|
||||
^^^^^^^^^^^^
|
||||
@@ -229,6 +284,3 @@ Removed APIs
|
||||
|
||||
- ``OCP\Util::isValidFileName`` was deprecated in 8.1.0 and is now removed, use either ``OCP\Files\Storage\IStorage::verifyPath`` or the new ``OCP\Files\IFilenameValidator``.
|
||||
- ``OCP\Util::getForbiddenFileNameChars`` was removed, use either ``OCP\Files\Storage\IStorage::verifyPath`` or the new ``OCP\Files\IFilenameValidator`` for filename validation.
|
||||
|
||||
Removed events
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
=======================
|
||||
Upgrade to Nextcloud 31
|
||||
=======================
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
- TBD
|
||||
|
||||
Front-end changes
|
||||
-----------------
|
||||
|
||||
Logical position CSS rules
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
With Nextcloud 31 all server provided styles are migrated to use `logical positioning <https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values>`_
|
||||
instead of physical, this allows the front-end layout to adjust to different language directions (right-to-left).
|
||||
App developers are strongly encouraged to migrate their apps to logical positioning too.
|
||||
|
||||
Examples for logical vs physical positioning:
|
||||
|
||||
- ``margin-inline-start: 4px;`` instead of ``margin-left: 4px;``
|
||||
- ``inset-inline-end: 8px;`` instead of ``right: 8px``
|
||||
|
||||
Files and Files sharing
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
With Nextcloud 28 the Files app front-end was migrated to Vue and the private API ( ``OCA.Files`` ) was removed,
|
||||
but for public shares the legacy frontend-end was still used. With Nextcloud 31 public shares also use the new Vue front-end.
|
||||
This means accessing the legacy private API in ``OCA.Files`` is no longer possible, all existing apps should migrate to the :ref:`public API<js-library_nextcloud-files>`.
|
||||
|
||||
To make migration easier utility functions are provided in the ``@nextcloud/sharing`` :ref:`package<js-library_nextcloud-sharing>`
|
||||
to check whether the current Files app instance is a public share or not, and if so to fetch the share token.
|
||||
|
||||
.. code-block:: JavaScript
|
||||
|
||||
import { isPublicShare, getSharingToken } from '@nextcloud/sharing/public'
|
||||
|
||||
if (isPublicShare()) {
|
||||
console.info('This is a public share with the sharing token: ', getSharingToken())
|
||||
}
|
||||
|
||||
|
||||
Added APIs
|
||||
^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Changed APIs
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Deprecated APIs
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Removed APIs
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- ``OCA.FilesSharingDrop`` removed as part of the Vue migration. Use the Files app API provided by the :ref:`package<js-library_nextcloud-files>` .
|
||||
|
||||
|
||||
Back-end changes
|
||||
----------------
|
||||
|
||||
Added APIs
|
||||
^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Changed APIs
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Deprecated APIs
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
|
||||
Removed APIs
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- TBD
|
||||
@@ -10,6 +10,7 @@ Transforming source files into a deliverable is documented in the :ref:`app-rele
|
||||
maintainer
|
||||
release_process
|
||||
Publishing App on the App Store <https://nextcloudappstore.readthedocs.io/en/latest/developer.html>
|
||||
monetizing
|
||||
publishing
|
||||
code_signing
|
||||
release_automation
|
||||
|
||||
40
developer_manual/app_publishing_maintenance/monetizing.rst
Normal file
@@ -0,0 +1,40 @@
|
||||
.. _app-store-monetizing:
|
||||
|
||||
===================
|
||||
Monetizing your app
|
||||
===================
|
||||
|
||||
.. sectionauthor:: Edward Ly <contact@edward.ly>
|
||||
|
||||
|
||||
The Nextcloud app store offers various features that enable app developers to receive some financial compensation for their work.
|
||||
|
||||
Donations
|
||||
---------
|
||||
|
||||
App developers can add optional donation links/buttons that lead to configurable URLs.
|
||||
This could be done by adding one or more donation tags in the app's ``info.xml`` file::
|
||||
|
||||
<donation title="Donate to the developers with PayPal" type="paypal">https://paypal.com/example</donation>
|
||||
<donation type="stripe">https://stripe.com/example</donation>
|
||||
<donation>https://other.service.com/example</donation>
|
||||
|
||||
The currently supported types include ``paypal`` and ``stripe``.
|
||||
Having a type will display the corresponding service logo next to the donation link (or a generic logo if the type is not specified or is set to ``other``).
|
||||
If a link/button title is not specified, it defaults to ``Donate to support this app``.
|
||||
These buttons will appear in the appstore and in the app settings, and clicking on them will open their links in a new browser tab.
|
||||
|
||||
.. note:: All donations received go directly to the developers. Nextcloud does not keep any commissions.
|
||||
|
||||
Enterprise support
|
||||
------------------
|
||||
|
||||
App developers can also add an optional ``Request quote`` button that will be shown in the appstore and app settings.
|
||||
This button leads to the `Nextcloud sales form <https://nextcloud.com/get-a-quote/>`_ where enterprise support for the app can be requested.
|
||||
If Nextcloud receives an interesting request, the sales team will reach out to the developers to discuss a partnership to provide support together (similar to other apps such as Collabora and OnlyOffice).
|
||||
Enterprise support targets larger Nextcloud installations of 100 users or more.
|
||||
|
||||
To enable or disable the button, head to the **Enterprise support** page in the appstore account settings and click on **Mark as supported/unsupported** as appropriate next to the desired apps.
|
||||
|
||||
.. image:: ../images/enterprise-support-settings.png
|
||||
:alt: enterprise support settings page
|
||||
@@ -6,7 +6,7 @@ OCS TaskProcessing API
|
||||
|
||||
.. versionadded:: 30.0.0
|
||||
|
||||
The OCS Text processing API allows you to run text processing tasks, like prompting large language models implemented by apps using :ref:`the backend Text Processing API<text_processing>`.
|
||||
The OCS Task processing API allows you to run task processing tasks, like prompting large language models implemented by apps using :ref:`the backend Task Processing API<task_processing>`.
|
||||
|
||||
The base URL for all calls to this API is: ``<nextcloud_base_url>/ocs/v2.php/taskprocessing/``
|
||||
|
||||
|
||||
@@ -6,6 +6,9 @@ OCS TextProcessing API
|
||||
|
||||
.. versionadded:: 27.1.0
|
||||
|
||||
.. deprecated:: 30
|
||||
Use the TaskProcessing API instead
|
||||
|
||||
The OCS Text processing API allows you to run text processing tasks, like prompting large language models implemented by apps using :ref:`the backend Text Processing API<text_processing>`.
|
||||
|
||||
The base URL for all calls to this API is: *<nextcloud_base_url>/ocs/v2.php/textprocessing/*
|
||||
|
||||
@@ -252,7 +252,10 @@ Supported properties
|
||||
| | | | ``<nc:type>0</nc:type>`` |
|
||||
| | | | ``</nc:sharee>`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <oc:checksums /> | An array of checksums. | ``<oc:checksum>md5:04c36b75222cd9fd47f2607333029106</oc:checksum>`` |
|
||||
| <oc:checksums /> | An array of checksums stored in the DB by other | ``<oc:checksum>md5:04c36b75222cd9fd47f2607333029106</oc:checksum>`` |
|
||||
| | clients. | |
|
||||
| | Currently used algorithms are ``MD5``, ``SHA1``,| |
|
||||
| | ``SHA256``, ``SHA3-256``, ``Adler32``. | |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:has-preview /> | Whether a preview of the file is available. | ``true`` or ``false`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
@@ -463,6 +466,8 @@ You can set some special headers that Nextcloud will interpret.
|
||||
+-----------------+-----------------------------------------------------------------+------------------------------------------+
|
||||
| OC-Checksum | | A checksum that will be stored in the DB. | ``md5:04c36b75222cd9fd47f2607333029106`` |
|
||||
| | | The server will not do any sort of validation. | |
|
||||
| | | Currently used algorithms are ``MD5``, ``SHA1``, ``SHA256``, | |
|
||||
| | | ``SHA3-256``, ``Adler32``. | |
|
||||
+-----------------+-----------------------------------------------------------------+------------------------------------------+
|
||||
| X-Hash | | Allow to request the file's hash from the server. | ``md5``, ``sha1``, or ``sha256`` |
|
||||
| | | The server will return the hash in a header named either: | |
|
||||
|
||||
@@ -258,7 +258,7 @@ texinfo_documents = [
|
||||
epub_title = u'Nextcloud Developer Manual'
|
||||
epub_author = u'The Nextcloud developers'
|
||||
epub_publisher = u'The Nextcloud developers'
|
||||
epub_copyright = u'2012-2017, The Nextcloud developers'
|
||||
epub_copyright = u'2012-2024, The Nextcloud developers'
|
||||
|
||||
# The language of the text. It defaults to the language option
|
||||
# or en if the language is not set.
|
||||
@@ -318,10 +318,13 @@ highlight_options = {
|
||||
# Redirect old URLs
|
||||
# https://documatt.gitlab.io/sphinx-reredirects/usage.html
|
||||
redirects = {
|
||||
# Removed 2023
|
||||
"core/index": "../server",
|
||||
"core/code-back-end": "../server/code-back-end.html",
|
||||
"core/code-front-end": "../server/code-front-end.html",
|
||||
"core/externalapi": "../server/externalapi.html",
|
||||
"core/static-analysis": "../server/static-analysis.html",
|
||||
"core/unit-testing": "../server/unit-testing.html"
|
||||
"core/unit-testing": "../server/unit-testing.html",
|
||||
# Removed 2024-09
|
||||
"digging_deeper/changelog": "../app_publishing_maintenance/app_upgrade_guide/index.html"
|
||||
}
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
=========
|
||||
Changelog
|
||||
=========
|
||||
|
||||
.. sectionauthor:: Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
|
||||
Deprecations
|
||||
------------
|
||||
|
||||
Deprecations are now documented by Nextcloud major release, not time. See :ref:`app-upgrade-guide`.
|
||||
|
||||
Below is the old deprecation roadmap which lists older deprecations by year.
|
||||
|
||||
.. note:: Deprecations on interfaces also affect the implementing classes!
|
||||
|
||||
2018
|
||||
^^^^
|
||||
|
||||
* **OCP\\App::setActiveNavigationEntry** has been deprecated in favour of **\\OCP\\INavigationManager**
|
||||
* **OCP\\BackgroundJob::registerJob** has been deprecated in favour of **OCP\\BackgroundJob\\IJobList**
|
||||
* **OCP\\Contacts** functions has been deprecated in favour of **\\OCP\\Contacts\\IManager**
|
||||
* **OCP\\DB** functions have been deprecated in favour of the ones in **\\OCP\\IDBConnection**
|
||||
* **OCP\\Files::tmpFile** has been deprecated in favour of **\\OCP\\ITempManager::getTemporaryFile**
|
||||
* **OCP\\Files::tmpFolder** has been deprecated in favour of **\\OCP\\ITempManager::getTemporaryFolder**
|
||||
* **\\OCP\\IServerContainer::getDb** has been deprecated in favour of **\\OCP\\IServerContainer::getDatabaseConnection**
|
||||
* **\\OCP\\IServerContainer::getHTTPHelper** has been deprecated in favour of **\\OCP\\Http\\Client\\IClientService**
|
||||
* Legacy applications not using the AppFramework are now likely to use the deprecated **OCP\\JSON** and **OCP\\Response** code:
|
||||
|
||||
* **\\OCP\\JSON** has been completely deprecated in favour of the AppFramework. Developers shall use the AppFramework instead of using the legacy **OCP\\JSON** code. This allows testable controllers and is highly encouraged.
|
||||
* **\\OCP\\Response** has been completely deprecated in favour of the AppFramework. Developers shall use the AppFramework instead of using the legacy **OCP\\JSON** code. This allows testable controllers and is highly encouraged.
|
||||
|
||||
* Diverse **OCP\\Users** function got deprecated in favour of **OCP\\IUserManager**:
|
||||
|
||||
* **OCP\\Users::getUsers** has been deprecated in favour of **OCP\\IUserManager::search**
|
||||
* **OCP\\Users::getDisplayName** has been deprecated in favour of **OCP\\IUserManager::getDisplayName**
|
||||
* **OCP\\Users::getDisplayNames** has been deprecated in favour of **OCP\\IUserManager::searchDisplayName**
|
||||
* **OCP\\Users::userExists** has been deprecated in favour of **OCP\\IUserManager::userExists**
|
||||
* Various static **OCP\\Util** functions have been deprecated:
|
||||
|
||||
* **OCP\\Util::linkToRoute** has been deprecated in favour of **\\OCP\\IURLGenerator::linkToRoute**
|
||||
* **OCP\\Util::linkTo** has been deprecated in favour of **\\OCP\\IURLGenerator::linkTo**
|
||||
* **OCP\\Util::imagePath** has been deprecated in favour of **\\OCP\\IURLGenerator::imagePath**
|
||||
* **OCP\\Util::isValidPath** has been deprecated in favour of **\\OCP\\IURLGenerator::imagePath**
|
||||
|
||||
* `OCP\\AppFramework\\IAppContainer <https://github.com/nextcloud/server/blob/stable9/lib/public/appframework/iappcontainer.php>`_: methods **getCoreApi** and **log**
|
||||
* `OCP\\AppFramework\\IApi <https://github.com/nextcloud/server/blob/stable9/lib/public/appframework/iapi.php>`_: full class
|
||||
|
||||
|
||||
2017
|
||||
^^^^
|
||||
|
||||
* **OCP\\IDb**: This interface and the implementing classes will be removed in favor of **OCP\\IDbConnection**. Various layers in between have also been removed to be consistent with the PDO classes. This leads to the following changes:
|
||||
|
||||
* Replace all calls on the db using **getInsertId** with **lastInsertId**
|
||||
* Replace all calls on the db using **prepareQuery** with **prepare**
|
||||
* The **__construct** method of **OCP\\AppFramework\\Db\\Mapper** no longer requires an instance of **OCP\\IDb** but an instance of **OCP\\IDbConnection**
|
||||
* The **execute** method on **OCP\\AppFramework\\Db\\Mapper** no longer returns an instance of **OC_DB_StatementWrapper** but an instance of **PDOStatement**
|
||||
|
||||
2016
|
||||
^^^^
|
||||
|
||||
* The following methods have been moved into the **OCP\\Template::<method>** class instead of being namespaced directly:
|
||||
|
||||
* **OCP\\image_path**
|
||||
* **OCP\\mimetype_icon**
|
||||
* **OCP\\preview_icon**
|
||||
* **OCP\\publicPreview_icon**
|
||||
* **OCP\\human_file_size**
|
||||
* **OCP\\relative_modified_date**
|
||||
* **OCP\\html_select_options**
|
||||
|
||||
* **OCP\\simple_file_size** has been deprecated in favour of **OCP\\Template::human_file_size**
|
||||
* The **OCP\\PERMISSION_<permission>** and **OCP\\FILENAME_INVALID_CHARS** have been moved to **OCP\\Constants::<old name>**
|
||||
* The **OC_GROUP_BACKEND_<method>** and **OC_USER_BACKEND_<method>** have been moved to **OC_Group_Backend::<method>** and **OC_User_Backend::<method>** respectively
|
||||
* `OCP\\AppFramework\\Controller <https://github.com/nextcloud/server/blob/stable9/lib/public/appframework/controller.php>`_: methods **params**, **getParams**, **method**, **getUploadedFile**, **env**, **cookie**, **render**
|
||||
|
||||
2015
|
||||
^^^^
|
||||
|
||||
* `\\OC\\Preferences <https://github.com/nextcloud/server/commit/909a53e087b7815ba9cd814eb6c22845ef5b48c7>`_ and `\\OC_Preferences <https://github.com/nextcloud/server/commit/4df7c0a1ed52ed1922116686cb5ad8da2544c997>`_
|
||||
@@ -7,10 +7,22 @@ Classloader
|
||||
|
||||
The classloader is provided by Nextcloud and loads all your classes automatically. See :ref:`the composer section<app-composer>` if you want to include and autoload 3rd party libraries.
|
||||
|
||||
Server autoloading
|
||||
------------------
|
||||
|
||||
Classes of the Nextcloud server use an authoritative class map, and the class map is committed to git.
|
||||
|
||||
When you add, move or delete a class file you have to update the autoloaders for the class to be found. The process is slightly different for classes that belong to the server itself, and apps that are included in the server repository:
|
||||
|
||||
1. Use ``composer dump-autoload`` to update the server class map.
|
||||
2. Use ``composer -d apps/dav/composer dump-autoload`` to update the class map of the dav app. The same applies for all other apps that are part of the server repository.
|
||||
|
||||
.. tip:: Use git's `patch option <https://git-scm.com/docs/git-add#Documentation/git-add.txt---patch>`_ when adding autoloader files. It allows you to pick only the lines relevant to the classes you added, moved or deleted. E.g. ``git add -p apps/dav/composer``.
|
||||
|
||||
.. _app-psr4-autoloader:
|
||||
|
||||
PSR-4 autoloading
|
||||
-----------------
|
||||
App autoloading
|
||||
---------------
|
||||
|
||||
Nextcloud uses a :ref:`PSR-4 autoloader<psr4>`. The namespace **\\OCA\\MyApp**
|
||||
is mapped to :file:`/apps/myapp/lib/`. Afterwards normal PSR-4 rules apply, so
|
||||
@@ -38,7 +50,7 @@ thereby mapped to :file:`/apps/myapp/tests/`.
|
||||
.. _app-custom-classloader:
|
||||
|
||||
Replacing Nextcloud's autoloader
|
||||
--------------------------------
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Nextcloud's autoloader for apps is flexible and robust but not always the fastest. You can improve the loading speed of your app by shipping and optimizing a Composer class loader with the app.
|
||||
|
||||
|
||||
@@ -8,3 +8,4 @@ Groupware integration
|
||||
calendar
|
||||
calendar_provider
|
||||
contacts_menu
|
||||
mail_provider
|
||||
|
||||
242
developer_manual/digging_deeper/groupware/mail_provider.rst
Normal file
@@ -0,0 +1,242 @@
|
||||
|
||||
.. _mail-providers:
|
||||
|
||||
========================================
|
||||
Mail Provider Interface
|
||||
========================================
|
||||
|
||||
Nextcloud apps can use, and register the mail provider interface, to provide or consume mail service functionality to and from other apps.
|
||||
|
||||
Access to mail services from another app is provided by the Mail Manager class. Using this class your app can find available mail providers and services. Please see the appropriate section below for more details.
|
||||
|
||||
The reverse is also possible, one can register an app to supply mail services to other apps. This is accomplished by implementing a custom Mail Provider class and Mail Service class then registering your provider with the system. Please see the appropriate section below for more details.
|
||||
|
||||
.. _mail-provider-terminology:
|
||||
|
||||
Terminology
|
||||
-----------
|
||||
|
||||
For clarification this is a reference of terminology used.
|
||||
|
||||
1. *Provider* - this is the app that provides mail services e.g. "BigHostingApp", this can be an app for a specific protocol
|
||||
2. *Service* - this is a configured mail service account e.g. "Big Email Hosting Co". Each mail provider may have multiple mail services configured for a user.
|
||||
|
||||
.. _mail-provider-consume:
|
||||
|
||||
Consuming a Mail Service
|
||||
------------------------
|
||||
|
||||
To use mail as a service provided by another app, your app needs to instantiate the mail manager class, then use the built in methods to list or find an appropriate provider and service.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
<?php
|
||||
|
||||
use OCP\Mail\Provider\IManager as IMailManager;
|
||||
use OCP\Mail\Provider\Address;
|
||||
use OCP\Mail\Provider\Attachment;
|
||||
|
||||
class MyTestService {
|
||||
|
||||
// Instance the mail manager using dependency injection
|
||||
public function __construct(IMailManager $mailManager) {
|
||||
private IMailManager $mailManager;
|
||||
}
|
||||
|
||||
public function acquireMailProvider(): void {
|
||||
|
||||
// determine if any providers are available
|
||||
if (!$this->mailManager->has()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// retrieve types of providers available (array of id's and labels)
|
||||
$types = $this->mailManager->types();
|
||||
|
||||
// retrieve all providers available (array of provider objects)
|
||||
$providers = $this->mailManager->providers();
|
||||
|
||||
// retrieve a single provider (provider objects)
|
||||
$provider = $this->mailManager->findProviderById('provider1');
|
||||
|
||||
}
|
||||
|
||||
public function acquireMailService(): void {
|
||||
|
||||
// determine if any providers are available
|
||||
if (!$this->mailManager->has()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// retrieve services available for a user (array of service objects)
|
||||
$services = $this->mailManager->services('user1');
|
||||
|
||||
// retrieve a single service with a specific mail address (service objects)
|
||||
$service = $this->mailManager->findServiceByAddress('user@testing.com');
|
||||
|
||||
}
|
||||
|
||||
public function sendMessage(): void {
|
||||
|
||||
// determine if any providers are available
|
||||
if (!$this->mailManager->has()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// retrieve a single service with a specific mail address (service objects)
|
||||
$service = $this->mailManager->findServiceByAddress('user@testing.com');
|
||||
|
||||
// construct mail message and set required parameters
|
||||
$message = $service->initiateMessage();
|
||||
$message->setFrom(new Address('user1@testing.com', 'User One'));
|
||||
$message->setTo(new Address('user2@testing.com', 'User Two'));
|
||||
$message->setSubject('Our Great Plan');
|
||||
$message->setBodyPlain('See the attached itinerary for our great plan');
|
||||
$message->setBodyHtml('<html>See the attached itinerary for our great plan</html>');
|
||||
$message->setAttachments(new Attachment(
|
||||
'Our great plan itinerary',
|
||||
'theplan.txt',
|
||||
'text/plain'
|
||||
));
|
||||
// send message
|
||||
$service->sendMessage($message);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
For more detailed information of methods available, parameters and returns please see the mail providers directory in the server repository. (lib/public/Mail/Provider)
|
||||
|
||||
.. _mail-provider-provide:
|
||||
|
||||
Providing a Mail Service
|
||||
------------------------
|
||||
|
||||
For your app to provide mail service to other apps, your app needs to implement two main interfaces plus interfaces for the supported functionality.
|
||||
|
||||
Step 1: Create a Mail Provider Class
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The mail provider class is the main class that the mail manager uses to retrieve available services from your app. Each mail provider can have multiple mail services configured for a user.
|
||||
|
||||
This class needs to implement the `IProvider` interface and have all the required methods defined.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
namespace OCA\BigHostingApp\Provider;
|
||||
|
||||
use OCP\Mail\Provider\IProvider;
|
||||
use OCP\Mail\Provider\IService;
|
||||
|
||||
class MailProvider implements IProvider {
|
||||
|
||||
public function id(): string {
|
||||
return 'big-hosting-app';
|
||||
}
|
||||
|
||||
public function label(): string {
|
||||
return 'Big Hosting App';
|
||||
}
|
||||
|
||||
public function hasServices(string $userId): bool {
|
||||
// app specific code to check for available services
|
||||
}
|
||||
|
||||
public function listServices(string $userId): array {
|
||||
// app specific code to list all available services
|
||||
}
|
||||
|
||||
public function findServiceById(string $userId, string $serviceId): IService | null {
|
||||
// app specific code to find a specific services
|
||||
}
|
||||
|
||||
public function findServiceByAddress(string $userId, string $address): IService | null {
|
||||
// app specific code to find a service with a specific email address
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Step 2: Create a Mail Service Class
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The mail service class is the main class that other apps use to access mail functionality in your app. This class is also returned by the mail provider class.
|
||||
|
||||
This class needs to implement the `IService` interface and have all the required methods defined. Because functionality varies between protocols this class also needs to be extended with the appropriate supported function interfaces like 'IMessageSend' which provides mail sending capabilities.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
namespace OCA\BigHostingApp\Provider;
|
||||
|
||||
use OCP\Mail\Provider\Address;
|
||||
use OCP\Mail\Provider\IAddress;
|
||||
use OCP\Mail\Provider\IMessage;
|
||||
use OCP\Mail\Provider\IMessageSend;
|
||||
use OCP\Mail\Provider\IService;
|
||||
use OCP\Mail\Provider\Message;
|
||||
|
||||
class MailService implements IService, IMessageSend {
|
||||
|
||||
public function id(): string {
|
||||
return '1 or service1 or anything else';
|
||||
}
|
||||
|
||||
public function capable(string $value): bool {
|
||||
// app specific code to check if a service is capable of perform a specific function e.g. Sending a Message
|
||||
}
|
||||
|
||||
public function capabilities(): array {
|
||||
// app specific code to retrieve a list of capabilities
|
||||
}
|
||||
|
||||
public function getLabel(): string {
|
||||
// app specific code to retrieve the label/description/name of the service
|
||||
}
|
||||
|
||||
public function getPrimaryAddress(): IAddress {
|
||||
// app specific code to retrieve the primary email address of the service
|
||||
}
|
||||
|
||||
public function getSecondaryAddresses(): array {
|
||||
// app specific code to retrieve the secondary email addresses (aliases) of the service
|
||||
}
|
||||
|
||||
public function initiateMessage(): IMessage {
|
||||
// app specific code to create a fresh message e.g message object to send a message or save a message in drafts
|
||||
}
|
||||
|
||||
// this function is the extended capabilities added to this class from IMessageSend
|
||||
public function sendMessage(IMessage $message, array $option = []): void {
|
||||
// app specific code to send a message
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Step 3: Register the Mail Provider
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The registration is performed at the initial stages of your app being loaded by the Nextcloud system, inside the 'AppInfo/Application.php' file
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
namespace OCA\BigHostingApp\AppInfo;
|
||||
|
||||
use OCA\BigHostingApp\Provider\MailProvider;
|
||||
use OCP\AppFramework\App;
|
||||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||
|
||||
class Application extends App {
|
||||
|
||||
public const APP_ID = 'BigHostingApp';
|
||||
|
||||
public function __construct(array $urlParams = []) {
|
||||
parent::__construct(self::APP_ID, $urlParams);
|
||||
}
|
||||
|
||||
public function register(IRegistrationContext $context): void {
|
||||
|
||||
// Tip: If your app spans multiple version of Nextcloud, we recommend to make sure the method exists with 'method_exists()'
|
||||
$context->registerMailProvider(MailProvider::class);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@ Digging deeper
|
||||
:maxdepth: 3
|
||||
|
||||
api
|
||||
changelog
|
||||
config/index
|
||||
debugging
|
||||
classloader
|
||||
|
||||
@@ -35,6 +35,7 @@ Development
|
||||
Most packages are written in TypeScript in order to generate better API docs automatically but also to ensure compatibility with Nextcloud server in a programmatic way. The server is typed in `a dedicated npm package <https://www.npmjs.com/package/@nextcloud/typings>`_ that is used to check type soundness.
|
||||
|
||||
|
||||
|
||||
Packages in detail
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -42,6 +43,8 @@ Packages in detail
|
||||
The rest of this section will cover a rough overview of which packages are provided and what they are used for.
|
||||
|
||||
|
||||
.. _js-library_nextcloud-auth:
|
||||
|
||||
``@nextcloud/auth``
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -64,10 +67,13 @@ This package provides a simple event bus implementation that integrates with ser
|
||||
|
||||
This package provides access to UI dialogs in Nextcloud. Documentation: https://nextcloud-libraries.github.io/nextcloud-dialogs/
|
||||
|
||||
.. _js-library_nextcloud-files:
|
||||
|
||||
``@nextcloud/files``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This package provides helper functions around the Files app. Documentation: https://nextcloud-libraries.github.io/nextcloud-files/
|
||||
This package provides methods to access the public API of the Files app, helper functions to access Nextcloud files using WebDAV,
|
||||
and utility functions to work with files and folders. Documentation: https://nextcloud-libraries.github.io/nextcloud-files/
|
||||
|
||||
``@nextcloud/initial-state``
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -104,6 +110,14 @@ This package provides various helpers for file and folder paths. Documentation:
|
||||
|
||||
This package provides helpers to generate URLs, e.g. to access assets and REST APIs of your app or the Nextcloud server. Documentation: https://nextcloud-libraries.github.io/nextcloud-router/
|
||||
|
||||
.. _js-library_nextcloud-sharing:
|
||||
|
||||
``@nextcloud/sharing``
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This package provides helpers interact with the Files sharing app, e.g. to detect if the current page is a public share and retrieving the sharing token.
|
||||
Documentation: https://nextcloud-libraries.github.io/nextcloud-sharing/
|
||||
|
||||
``@nextcloud/vue``
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ To consume the Task Processing API, you will need to :ref:`inject<dependency-in
|
||||
* ``deleteTask(Task $task)`` This method deletes a task
|
||||
* ``cancelTask(int $id)`` This method cancels a task specified by its id.
|
||||
|
||||
If you would like to use the text processing functionality in a client, there are also OCS endpoints available for this: :ref:`OCS Text Processing API<ocs-taskprocessing-api>`
|
||||
If you would like to use the task processing functionality in a client, there are also OCS endpoints available for this: :ref:`OCS Task Processing API<ocs-taskprocessing-api>`
|
||||
|
||||
Tasks types
|
||||
^^^^^^^^^^^
|
||||
@@ -336,7 +336,7 @@ A **Task processing provider** will usually be a class that implements the inter
|
||||
|
||||
The method ``getName`` returns a string to identify the registered provider in the user interface.
|
||||
|
||||
The method ``process`` implements the text processing step. In case execution fails for some reason, you should throw a ``\OCP\TaskProcessing\Exception\ProcessingException`` with an explanatory error message. Important to note here is that ``Image``, ``Audio``, ``Video`` and ``File`` slots in the input array will be filled with ``\OCP\Files\File`` objects for your convenience. When outputting one of these you should simply return a string, the API will turn the data into a proper file for convenience. The ``$reportProgress`` parameter is a callback that you may use at will to report the task progress as a single float value between 0 and 1. Its return value will indicate if the task is still running (``true``) or if it was cancelled (``false``) and processing should be terminated.
|
||||
The method ``process`` implements the task processing step. In case execution fails for some reason, you should throw a ``\OCP\TaskProcessing\Exception\ProcessingException`` with an explanatory error message. Important to note here is that ``Image``, ``Audio``, ``Video`` and ``File`` slots in the input array will be filled with ``\OCP\Files\File`` objects for your convenience. When outputting one of these you should simply return a string, the API will turn the data into a proper file for convenience. The ``$reportProgress`` parameter is a callback that you may use at will to report the task progress as a single float value between 0 and 1. Its return value will indicate if the task is still running (``true``) or if it was cancelled (``false``) and processing should be terminated.
|
||||
|
||||
This class would typically be saved into a file in ``lib/TaskProcessing`` of your app but you are free to put it elsewhere as long as it's loadable by Nextcloud's :ref:`dependency injection container<dependency-injection>`.
|
||||
|
||||
|
||||
@@ -190,16 +190,14 @@ Element structure variables
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-width-element-focused`` | ``2px`` | Border width for interactive elements when focussed (adjusted for accessibility) |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius`` | ``3px`` | Default border radius |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-large`` | ``10px`` | Larger border radius |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-rounded`` | ``28px`` | Even larger border radius for elements which should be look rounded |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-pill`` | ``calc(var(--default-clickable-area) / 2)`` | Border radius for pill-style elements |
|
||||
| ``--border-radius-small`` | ``4px`` | Border radius used for smaller elements |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-element`` | ``8px`` | Border radius of interactive elements such as buttons, input, navigation and list items. |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-container`` | ``12px`` | For smaller containers like action menus. |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--border-radius-container-large`` | ``16px`` | For larger containers like body or modals. |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--default-clickable-area`` | ``34px`` | Default size (width and height) for interactive elements like buttons |
|
||||
+----------------------------------------------+------------------------------------------------+-----------------------------------------------------------------------------------------------------------+
|
||||
| ``--clickable-area-large`` | ``48px`` | Larger size for the main UI elements |
|
||||
|
||||
BIN
developer_manual/images/enterprise-support-settings.png
Normal file
|
After Width: | Height: | Size: 188 KiB |
1
go.php
@@ -11,6 +11,7 @@ $mapping = array(
|
||||
'admin-backup' => '/admin_manual/maintenance/backup.html',
|
||||
'admin-bigint-conversion' => '/admin_manual/configuration_database/bigint_identifiers.html',
|
||||
'admin-code-integrity' => '/admin_manual/issues/code_signing.html',
|
||||
'admin-cache' => '/admin_manual/configuration_server/caching_configuration.html',
|
||||
'admin-config' => '/admin_manual/configuration_server/config_sample_php_parameters.html',
|
||||
'admin-db-conversion' => '/admin_manual/configuration_database/db_conversion.html',
|
||||
'admin-db-transaction' => '/admin_manual/configuration_database/linux_database_configuration.html#database-read-committed-transaction-isolation-level',
|
||||
|
||||
28
index.html
@@ -262,9 +262,17 @@
|
||||
<p>Once you have a Nextcloud Server running, you can connect to it with various <a class="reference external" href="https://nextcloud.com/install/#install-clients">clients like our mobile and desktop client.</a>
|
||||
Find documentation for the desktop client below.</p>
|
||||
|
||||
<div class="section" id="desktop-314">
|
||||
<h2>Desktop 3.14<a class="headerlink" href="#desktop-314" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents the <em>upcoming</em> version of the Nextcloud desktop client (not released).</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.14">Manual</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="desktop-313">
|
||||
<h2>Desktop 3.13<a class="headerlink" href="#desktop-313" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents the <em>upcoming</em> version of the Nextcloud desktop client (not released).</p>
|
||||
<p>This documents the <em>latest stable</em> version of the Nextcloud desktop client.</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.13">Manual</a>
|
||||
</ul>
|
||||
@@ -272,17 +280,9 @@
|
||||
|
||||
<div class="section" id="desktop-312">
|
||||
<h2>Desktop 3.12<a class="headerlink" href="#desktop-312" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents the <em>latest stable</em> version of the Nextcloud desktop client.</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.12">Manual</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="desktop-311">
|
||||
<h2>Desktop 3.11<a class="headerlink" href="#desktop-311" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents the <em>previous</em> version of the Nextcloud desktop client. Users are strongly encouraged to upgrade to benefit from security and stability improvements.</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.11">Manual</a>
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.12">Manual</a>
|
||||
</ul>
|
||||
</div>
|
||||
</div> <!-- desktop -->
|
||||
@@ -484,6 +484,14 @@
|
||||
release or get access to long term security and stability updates with
|
||||
<a href="https://nextcloud.com/enterprise">Nextcloud Enterprise.</a></p>
|
||||
|
||||
<div class="section" id="desktop-311">
|
||||
<h2>Desktop 3.11<a class="headerlink" href="#desktop-311" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents an <em>older</em> version of the Nextcloud desktop client. Users are strongly encouraged to upgrade to benefit from security and stability improvements.</p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference external" href="https://docs.nextcloud.com/desktop/3.11">Manual</a>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section" id="desktop-310">
|
||||
<h2>Desktop 3.10<a class="headerlink" href="#desktop-310" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This documents an <em>older</em> version of the Nextcloud desktop client. Users are strongly encouraged to upgrade to benefit from security and stability improvements.</p>
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
alabaster==0.7.16
|
||||
Babel==2.15.0
|
||||
certifi==2024.7.4
|
||||
Babel==2.16.0
|
||||
certifi==2024.8.30
|
||||
charset-normalizer==3.3.2
|
||||
docutils==0.20.1
|
||||
idna==3.7
|
||||
idna==3.8
|
||||
imagesize==1.4.1
|
||||
importlib-metadata==8.0.0
|
||||
importlib-metadata==8.4.0
|
||||
Jinja2==3.1.4
|
||||
MarkupSafe==2.1.5
|
||||
packaging==24.1
|
||||
Pillow==10.4.0
|
||||
Pygments==2.18.0
|
||||
PyYAML==6.0.1
|
||||
PyYAML==6.0.2
|
||||
reportlab==4.2.2
|
||||
requests==2.32.3
|
||||
rst2pdf==0.102
|
||||
smartypants==2.0.1
|
||||
snowballstemmer==2.2.0
|
||||
Sphinx==7.2.6
|
||||
Sphinx==7.4.7
|
||||
sphinx-copybutton==0.5.2
|
||||
sphinx-rtd-theme==2.0.0
|
||||
sphinx-rtd-dark-mode==1.3.0
|
||||
sphinxcontrib-applehelp==1.0.8
|
||||
sphinxcontrib-devhelp==1.0.6
|
||||
sphinxcontrib-htmlhelp==2.0.5
|
||||
sphinxcontrib-applehelp==2.0.0
|
||||
sphinxcontrib-devhelp==2.0.0
|
||||
sphinxcontrib-htmlhelp==2.1.0
|
||||
sphinxcontrib-jquery==4.1
|
||||
sphinxcontrib-jsmath==1.0.1
|
||||
sphinxcontrib-phpdomain==0.11.1
|
||||
sphinxcontrib-qthelp==1.0.7
|
||||
sphinxcontrib-serializinghtml==1.1.10
|
||||
sphinx-toolbox==3.5.0
|
||||
sphinxcontrib-phpdomain==0.12.0
|
||||
sphinxcontrib-qthelp==2.0.0
|
||||
sphinxcontrib-serializinghtml==2.0.0
|
||||
sphinx-toolbox==3.8.0
|
||||
sphinx-reredirects==0.1.5
|
||||
urllib3==2.2.2
|
||||
zipp==3.19.1
|
||||
zipp==3.20.1
|
||||
|
||||
@@ -43,7 +43,7 @@ Import a Calendar
|
||||
If you want to transfer your calendar and their respective events to your Nextcloud
|
||||
instance, importing is the best way to do so.
|
||||
|
||||
.. figure:: images/calendar_settings.png
|
||||
.. figure:: images/calendar_settings_sidebar.png
|
||||
:scale: 80%
|
||||
|
||||
1. Click on the settings-icon labeled with ``Settings & Import`` at the left-bottom.
|
||||
@@ -70,16 +70,30 @@ hard drive or delete it forever.
|
||||
|
||||
.. figure:: images/calendar_dropdown.png
|
||||
|
||||
1. Click on the three-dot-menu of the respective calendar.
|
||||
Click on the "pen" icon of the respective calendar. You will see a new popup that will allow you to change
|
||||
the calendar name and color, and buttons to delete or export the calendar.
|
||||
|
||||
.. figure:: images/calendar_editing.png
|
||||
.. figure:: images/calendar_settings.png
|
||||
|
||||
2. Click on *Edit name*, *Edit color*, *Export* or *Delete*.
|
||||
Calendar Transparency
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can toggle the checkbox "Never show me as busy (set calendar to transparent)" to influence if this calendars' events
|
||||
are taken into account in Free/Busy calculations. If checked, no events in this calendar will be taken into account, your schedule will
|
||||
always be free, regardless of an events' settings.
|
||||
|
||||
.. figure:: images/calendar_transparency.png
|
||||
|
||||
Sharing calendars
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
You may share your calendar with other users or groups. Calendars may be shared with write access or read-only. When sharing a calendar with write access, users with whom the calendar is shared will be able to create new events into the calendar as well as edit and delete existing ones.
|
||||
You may share your calendar with other users or groups.
|
||||
|
||||
.. figure:: images/calendar_sharing_1.png
|
||||
|
||||
Calendars may be shared with write access or read-only. When sharing a calendar with write access, users with whom the calendar is shared will be able to create new events into the calendar as well as edit and delete existing ones.
|
||||
|
||||
.. figure:: images/calendar_sharing_2.png
|
||||
|
||||
.. note:: Calendar shares currently cannot be accepted or rejected. If you want to stop having a calendar that someone shared with you, you can click on the 3-dot menu next to the calendar in the calendar list and click on "Unshare from me". To restore a share, the calendar can be reshared again, either for the whole group, resetting all unshares, or for a single user.
|
||||
|
||||
@@ -152,8 +166,8 @@ The month-view only requires a single click into the area of the target day.
|
||||
|
||||
.. figure:: images/calendar_new-event_month.png
|
||||
|
||||
After that, you can type in the event's name (e.g. **Meeting with Lukas**), choose
|
||||
the calendar in which you want to save the event to (e.g. **Personal**, **Work**),
|
||||
After that, you can type in the event's name (e.g. **Meeting with Linus**), choose
|
||||
the calendar in which you want to save the event to (e.g. **Personal**, **Community Events**),
|
||||
check and concretize the time span or set the event as an all-day event. Optionally
|
||||
you can specify a location and a description.
|
||||
|
||||
@@ -203,8 +217,6 @@ Attendees may be other users on your Nextcloud instances, contacts in your addre
|
||||
|
||||
.. tip:: When adding other Nextcloud users as attendees to an event, you may access their free-busy information if available, helping you determine when the best time slot for your event is. Set your :ref:`working hours<calendar-working-hours>` to let others know when you are available. Free-busy information is only available for other users on the same Nextcloud instance.
|
||||
|
||||
.. attention:: Only the calendar owner can send out invitations. The sharees are not able to do that, whether they have write access to the event's calendar or not.
|
||||
|
||||
.. attention:: The server administration needs to setup the e-mail server in the ``Basic settings`` tab, as this mail will be used to send invitations.
|
||||
|
||||
Checking attendees' busy times
|
||||
@@ -226,7 +238,7 @@ Similar to attendees you can add rooms and resources to your events. The system
|
||||
|
||||
Room availability
|
||||
~~~~~~~~~~~~~~~~~
|
||||
.. versionadded:: 4.8
|
||||
.. versionadded:: 5.0
|
||||
|
||||
If the "Calendar Rooms and Resources" app is installed on your instance, you can now find ``Room availability`` the ``Resources`` section. It lists all the existing rooms. You can check the availability of each room in a manner similar to checking the free/busy status of event attendees.
|
||||
|
||||
@@ -237,7 +249,7 @@ Add attachments to events
|
||||
You can import attachments to your events either by uploading them or adding them from files
|
||||
|
||||
.. figure:: images/calendar_adding_attachments.png
|
||||
:scale: 40%
|
||||
:scale: 80%
|
||||
|
||||
.. note:: Attachments can be added while creating new events or editing existent ones.
|
||||
Newly uploaded files will be saved in files by default in the calendar folder in the root directory.
|
||||
@@ -382,10 +394,12 @@ For a selected day there will be a list with all the possible time slots. On day
|
||||
too many conflicts or a reached daily maximum limit of already booked appointments, the list might be empty.
|
||||
|
||||
.. figure:: images/appointment_booking_1.png
|
||||
:scale: 80%
|
||||
|
||||
For the booking, attendees have to enter a name and an email address. Optionally they can also add a comment.
|
||||
|
||||
.. figure:: images/appointment_booking_2.png
|
||||
:scale: 80%
|
||||
|
||||
When the booking was successful, a confirmation dialogue will be shown to the attendee.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 37 KiB |
BIN
user_manual/groupware/images/calendar_settings_sidebar.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
user_manual/groupware/images/calendar_sharing_1.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
user_manual/groupware/images/calendar_sharing_2.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
user_manual/groupware/images/calendar_transparency.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 30 KiB |
@@ -308,6 +308,8 @@ The mail app supports summarizing message threads that contain 3 or more message
|
||||
|
||||
.. note:: Please note that the feature has to be enabled by the administrator
|
||||
|
||||
.. note:: Please note that this feature only works well with integration_openai. Local LLMs take too long to respond and the summary request is likely to time out and still create significant system load.
|
||||
|
||||
Filtering and autoresponder
|
||||
---------------------------
|
||||
|
||||
@@ -319,3 +321,52 @@ Autoresponders
|
||||
.. versionadded:: 3.5 Autoresponder can follow system settings.
|
||||
|
||||
The autoresponder is off by default. It can be set manually, or follow the system settings. Following system settings means that the long absence message entered on the :ref:`Absence settings section <groupware-absence>` is applied automatically.
|
||||
|
||||
Follow-up reminders
|
||||
-------------------
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
The Mail app will automatically remind you when an outgoing email did not receive a response.
|
||||
Each sent email will be analyzed by an AI to check whether a reply is expected.
|
||||
After four days all relevant emails will be shown in your priority inbox.
|
||||
|
||||
When clicking on such an email a button will be shown to quickly follow up with all recipients.
|
||||
It is also possible to disable follow-up reminders for a sent email.
|
||||
|
||||
.. note:: Please note that the feature has to be enabled by the administrator.
|
||||
|
||||
Security
|
||||
--------
|
||||
|
||||
Phishing detection
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
The Mail app will check for potential phishing attempts and will display a warning to the user.
|
||||
|
||||
The checks are the following:
|
||||
|
||||
* The sender address saved in the addressbook is not the same as the one in the mail account
|
||||
* The sender is using a custom email address that doesn't match the from address
|
||||
* The sent date is set in the future
|
||||
* Links in the message body are not pointing to the displayed text
|
||||
* The reply-to address is not the same as the sender address
|
||||
|
||||
.. note:: Please note that the warning does not mean that the message is a phishing attempt. It only means that the Mail app detected a potential phishing attempt.
|
||||
|
||||
Internal addresses
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. versionadded:: 4.0
|
||||
|
||||
The Mail app allows adding internal addresses and domains, and will warn the user if the address is not in the list, when sending and upon receiving a message.
|
||||
|
||||
To add an internal address:
|
||||
|
||||
1. Open the mail settings
|
||||
2. Navigate to Privacy and security section
|
||||
3. Enable the internal addresses by ckicjin on the checkbox
|
||||
4. Click the Add internal address button
|
||||
5. Enter the address or domain and click Add
|
||||
@@ -11,6 +11,7 @@ Matterbridge integration in Nextcloud Talk makes it possible to create 'bridges'
|
||||
A moderator can add a Matterbridge connection in the chat conversation settings.
|
||||
|
||||
.. image:: images/matterbridge-settings.png
|
||||
:width: 700px
|
||||
|
||||
Each of the bridges has its own need in terms of configuration. Information for most is available on the Matterbridge wiki and can be accessed behind ``more information`` menu in the ``...`` menu. You can also `access the wiki directly. <https://github.com/42wim/matterbridge/wiki>`_
|
||||
|
||||
@@ -20,6 +21,7 @@ Lobby
|
||||
The lobby feature allows you to show guests a waiting screen until the call starts. This is ideal for webinars with external participants, for example.
|
||||
|
||||
.. image:: images/lobby-in-talk.png
|
||||
:width: 600px
|
||||
|
||||
You can choose to let the participants join the call at a specific time, or when you dismiss the lobby manually.
|
||||
|
||||
@@ -35,6 +37,7 @@ Administrators can configure, enable and disable commands. Users can use the ``h
|
||||
``/help``
|
||||
|
||||
.. image:: images/command-help.png
|
||||
:width: 600px
|
||||
|
||||
Find more information in the `administrative documentation for Talk. <https://nextcloud-talk.readthedocs.io/en/stable/commands/>`_
|
||||
|
||||
@@ -44,16 +47,22 @@ Talk from Files
|
||||
In the Files app, you can chat about files in the sidebar, and even have a call while editing it. You first have to join the chat.
|
||||
|
||||
.. image:: images/join-chat.png
|
||||
:width: 500px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/sidebar-chat.png
|
||||
:width: 500px
|
||||
|
||||
You can then chat or have a call with other participants, even when you start editing the file.
|
||||
|
||||
.. image:: images/text-and-talk.png
|
||||
:width: 700px
|
||||
|
||||
In Talk, a conversation will be created for the file. You can chat from there, or go back to the file using the ``...`` menu in the top-right.
|
||||
|
||||
.. image:: images/file-room.png
|
||||
:width: 400px
|
||||
|
||||
Create tasks from chat or share tasks in chat
|
||||
---------------------------------------------
|
||||
@@ -61,14 +70,22 @@ Create tasks from chat or share tasks in chat
|
||||
If Deck is installed, you can use the ``...`` menu of a chat message and turn the message into a Deck task.
|
||||
|
||||
.. image:: images/deck-talk-create-card-menu.png
|
||||
:width: 500px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/deck-talk-create-card-dialog.png
|
||||
:width: 400px
|
||||
|
||||
From within Deck, you can share tasks into chat conversations.
|
||||
|
||||
.. image:: images/deck-talk-share-card-to-chat-menu.png
|
||||
:width: 400px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/deck-talk-share-card-to-chat-in-talk.png
|
||||
:width: 600px
|
||||
|
||||
Breakout rooms
|
||||
--------------
|
||||
@@ -82,6 +99,7 @@ To create breakout rooms, you need to be a moderator in a group conversation. Cl
|
||||
"Setup breakout rooms".
|
||||
|
||||
.. image:: images/talk-breakout-rooms-setup.png
|
||||
:width: 400px
|
||||
|
||||
A dialog will open where you can specify the number of rooms you want to create and the participants assignment method.
|
||||
Here you'll be presented with 3 options:
|
||||
@@ -91,6 +109,7 @@ Here you'll be presented with 3 options:
|
||||
- **Allow participants choose**: Participants will be able to join breakout rooms themselves.
|
||||
|
||||
.. image:: images/talk-breakout-rooms-setup-dialog.png
|
||||
:width: 500px
|
||||
|
||||
Manage breakout rooms
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -98,6 +117,7 @@ Manage breakout rooms
|
||||
Once the breakout rooms are created, you will be able to see them in the sidebar.
|
||||
|
||||
.. image:: images/talk-breakout-rooms-sidebar.png
|
||||
:width: 500px
|
||||
|
||||
From the sidebar header
|
||||
|
||||
@@ -106,11 +126,13 @@ From the sidebar header
|
||||
- **Make changes to the assigned participants**: this will open the participants editor where you can change which participants are assigned to which breakout room. From this dialog it's also possible to delete the breakout rooms.
|
||||
|
||||
.. image:: images/talk-breakout-rooms-sidebar-header.png
|
||||
:width: 400px
|
||||
|
||||
From the breakout room element in the sidebar, you can also join a particular breakout room or send a message to a
|
||||
specific room.
|
||||
|
||||
.. image:: images/talk-breakout-rooms-sidebar-item.png
|
||||
:width: 400px
|
||||
|
||||
Call recording
|
||||
--------------
|
||||
@@ -131,16 +153,27 @@ The moderator of the conversation can start a recording together with a call sta
|
||||
- **During the call**: click on the top-bar menu, then click "Start recording".
|
||||
|
||||
.. image:: images/start-recording-before-call.png
|
||||
:width: 400px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/start-recording-in-call.png
|
||||
:width: 300px
|
||||
|
||||
The recording will start shortly, and you will see a red indicator next to the call time. You can stop the recording at any time while the call is still ongoing by clicking on that indicator and selecting "Stop recording", or by using the same action in the top-bar menu. If you do not manually stop the recording, it will end automatically when the call ends.
|
||||
|
||||
.. image:: images/stop-recording.png
|
||||
:width: 500px
|
||||
|
||||
After stopping a recording, the server will take some time to prepare and save the recorded file. The moderator, who started the recording, receives a notification when the file is uploaded. From there, it can be shared in the chat.
|
||||
|
||||
.. image:: images/share-recording-notification.png
|
||||
:width: 300px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/shared-recordings.png
|
||||
:width: 400px
|
||||
|
||||
Recording consent
|
||||
^^^^^^^^^^^^^^^^^
|
||||
@@ -152,12 +185,18 @@ For compliance reasons with various privacy rights, it is possible to ask partic
|
||||
- Allow moderators to configure this option on a conversation level. In such cases, moderators can access the conversation settings to configure this option accordingly:
|
||||
|
||||
.. image:: images/enable-recording-consent.png
|
||||
:width: 500px
|
||||
|
||||
If recording consent is enabled, every participant, including moderators, will see a highlighted section in the "Media settings" before joining a call.
|
||||
This section informs participants that the call may be recorded. To give explicit consent for recording, participants must check the box. If they do not give consent, they will not be allowed to join the call.
|
||||
|
||||
.. image:: images/give-recording-consent.png
|
||||
:width: 500px
|
||||
|
||||
|
|
||||
|
||||
.. image:: images/give-recording-consent-checked.png
|
||||
:width: 500px
|
||||
|
||||
Federated conversation
|
||||
----------------------
|
||||
@@ -173,18 +212,19 @@ Send and accept invites
|
||||
The moderator of the conversation can send an invite to participant on a different server:
|
||||
|
||||
.. image:: images/federation-invite-send.png
|
||||
:width: 400px
|
||||
|
||||
When receiving a notification, user will see a counter of pending invites above the conversations list.
|
||||
|
||||
.. image:: images/federation-invite-pending.png
|
||||
:width: 450px
|
||||
:width: 400px
|
||||
|
||||
Upon clicking it, more information will be provided about inviting party, and user can either accept or decline the invitation.
|
||||
|
||||
.. image:: images/federation-invite-dialog.png
|
||||
:width: 450px
|
||||
:width: 500px
|
||||
|
||||
By accepting the invite, conversation will appear in the list as any other one.
|
||||
|
||||
.. image:: images/federation-conversations-list.png
|
||||
:width: 450px
|
||||
:width: 400px
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 417 KiB After Width: | Height: | Size: 401 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 32 KiB |