diff --git a/.github/workflows/command-rebase.yml b/.github/workflows/command-rebase.yml deleted file mode 100644 index dc59ffcad0d..00000000000 --- a/.github/workflows/command-rebase.yml +++ /dev/null @@ -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" diff --git a/.github/workflows/fixup.yml b/.github/workflows/fixup.yml index 98d49927ab8..c01a2f04ac7 100644 --- a/.github/workflows/fixup.yml +++ b/.github/workflows/fixup.yml @@ -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 }} diff --git a/.github/workflows/generate_catalog_templates.yml b/.github/workflows/generate_catalog_templates.yml index 1984ea1a020..6ef12e4071b 100644 --- a/.github/workflows/generate_catalog_templates.yml +++ b/.github/workflows/generate_catalog_templates.yml @@ -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 }} diff --git a/.github/workflows/sphinxbuild.yml b/.github/workflows/sphinxbuild.yml index 81bb89b1bb5..11c706fcc23 100644 --- a/.github/workflows/sphinxbuild.yml +++ b/.github/workflows/sphinxbuild.yml @@ -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.6 + 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.6 + 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.6 + uses: actions/upload-artifact@v4.4.0 with: name: Administration manual.zip path: "/tmp/documentation.tar.gz" diff --git a/admin_manual/ai/app_assistant.rst b/admin_manual/ai/app_assistant.rst index 7079f1bbeba..04859678741 100644 --- a/admin_manual/ai/app_assistant.rst +++ b/admin_manual/ai/app_assistant.rst @@ -43,10 +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` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * :ref:`translate2 (ExApp)` - 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 ~~~~~~~~~~~~~~ @@ -69,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`) * *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`AI as a Service`) diff --git a/admin_manual/ai/app_context_chat.rst b/admin_manual/ai/app_context_chat.rst index 1f5b591be43..e74fc0b36d6 100644 --- a/admin_manual/ai/app_context_chat.rst +++ b/admin_manual/ai/app_context_chat.rst @@ -13,7 +13,7 @@ Together they provide the ContextChat text processing tasks accessible via the : 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 ------------ @@ -100,6 +100,7 @@ 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. +* 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) * 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. diff --git a/admin_manual/ai/app_llm2.rst b/admin_manual/ai/app_llm2.rst index f370c50f7c5..a78d42ab494 100644 --- a/admin_manual/ai/app_llm2.rst +++ b/admin_manual/ai/app_llm2.rst @@ -11,8 +11,22 @@ This app uses `ctransformers `_ under * `Llama3 8b Instruct `_ (reasonable quality; fast; good acclaim; multilingual output may not be optimal) * `Llama3 70B Instruct `_ (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: `_ + +* English +* Portuguese +* Spanish +* Italian +* German +* French +* Hindi +* Thai + Requirements ------------ diff --git a/admin_manual/ai/app_stt_whisper2.rst b/admin_manual/ai/app_stt_whisper2.rst index 9850e609d59..16e5c7981a3 100644 --- a/admin_manual/ai/app_stt_whisper2.rst +++ b/admin_manual/ai/app_stt_whisper2.rst @@ -13,6 +13,8 @@ This app uses `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 `_ + Requirements ------------ diff --git a/admin_manual/ai/app_summary_bot.rst b/admin_manual/ai/app_summary_bot.rst new file mode 100644 index 00000000000..658624e115e --- /dev/null +++ b/admin_manual/ai/app_summary_bot.rst @@ -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 `_ or `OpenAI and LocalAI integration app `_. + +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 `_ + + - `Nextcloud Talk app (Spreed) `_ + + - One of the following AI model providers: + + - `Nextcloud Local large language model app `_ + + - `Nextcloud OpenAI and LocalAI integration app `_ + + +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='' -p 9031:9031 local_summarai + + +4. Un-register the Summary Bot if its already installed + +.. code-block:: + + sudo -u 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 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: ``_ + +Repository +---------- + +You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: ``_ + +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`. + +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) diff --git a/admin_manual/ai/app_translate.rst b/admin_manual/ai/app_translate.rst deleted file mode 100644 index c8d4bf40b82..00000000000 --- a/admin_manual/ai/app_translate.rst +++ /dev/null @@ -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`, the *text* app and :ref:`other apps making use of the core Translation API`. 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` 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 - -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: ``_ - -Repository ----------- - -You can find the app's code repository on GitHub where you can report bugs and contribute fixes and features: ``_ - -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 _`. - -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) diff --git a/admin_manual/ai/index.rst b/admin_manual/ai/index.rst index 0bfab9442c3..75fa987d0ed 100644 --- a/admin_manual/ai/index.rst +++ b/admin_manual/ai/index.rst @@ -7,11 +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 diff --git a/admin_manual/ai/overview.rst b/admin_manual/ai/overview.rst index c6ab356f73c..343d7a6571a 100644 --- a/admin_manual/ai/overview.rst +++ b/admin_manual/ai/overview.rst @@ -22,13 +22,14 @@ Nextcloud uses modularity to separate raw AI functionality from the Graphical Us "Suspicious login detection","`Suspicious Login `_","Green","Yes","Yes","Yes","Yes" "Related resources","`Related Resources `_","Green","Yes","Yes","Yes","Yes" "Recommended files","recommended_files","Green","Yes","Yes","Yes","Yes" - "Machine translation","`Translate `_","Green","Yes","Yes - Opus models by University Helsinki","Yes","Yes" - "","`Local Machine Translation 2 (ExApp) `_","Green","Yes","Yes - MADLAD models by Google","Yes","Yes" - "","`LibreTranslate integration `_","Green","Yes","Yes - OpenNMT models","Yes","Yes" + "Text processing using LLMs","`llm2 (ExApp) `_","Green","Yes","Yes - Llama 3.1 model by Meta","Yes","Yes" + "","`OpenAI and LocalAI integration (via OpenAI API) `_","Red","No","No","No","No" + "","`OpenAI and LocalAI integration (via LocalAI) `_","Yellow","Yes","Yes - e.g. Llama models by Meta", "No","Yes" + "Machine translation","`Local Machine Translation 2 (ExApp) `_","Green","Yes","Yes - MADLAD models by Google","Yes","Yes" "","`DeepL integration `_","Red","No","No","No","No" "","`OpenAI and LocalAI integration (via OpenAI API) `_","Red","No","No","No","No" "","`OpenAI and LocalAI integration (via LocalAI) `_","Green","Yes","Yes","Yes","Yes" - "","`Local Whisper Speech-To-Text 2 (ExApp) `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes" + "Speech to Text","`Local Whisper Speech-To-Text 2 (ExApp) `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","Yes" "","`OpenAI and LocalAI integration `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No" "","`Replicate integration `_","Yellow","Yes","Yes - Whisper models by OpenAI","No","No" "Image generation","`Local Stable Diffusion `_","Yellow","Yes","Yes - StableDiffusion XL model by StabilityAI","No","Yes" @@ -67,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 `_ for offering a graphical UI for the various tasks and a smart picker +* `Mail `_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs` for how to enable this) +* `Summary Bot `_ for summarizing chat histories in `Talk `_ + + +Backend apps +~~~~~~~~~~~~ + +* :ref:`llm2` - Runs open source AI LLM models on your own server hardware (Customer support available upon request) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) + + Machine translation ^^^^^^^^^^^^^^^^^^^ @@ -85,10 +110,8 @@ Frontend apps Backend apps ~~~~~~~~~~~~ -* :ref:`translate` - Runs open source AI translation models locally on your own server hardware (Customer support available upon request) * :ref:`translate2 (ExApp)` - 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 ^^^^^^^^^^^^^^ @@ -101,37 +124,15 @@ Frontend apps ~~~~~~~~~~~~~ * `Assistant `_ offering a graphical translation UI and a smart picker -* `Speech-to-Text Helper `_ for providing a Speech-To-Text smart picker (deprecated; was merged into assistant) * `Talk `_ for transcribing calls (see `Nextcloud Talk docs `_ for how to enable this) Backend apps ~~~~~~~~~~~~ * :ref:`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`) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`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 `_ for offering a graphical UI for the various tasks and a smart picker -* `GPTFreePrompt `_ for providing an llm smart picker (deprecated; was merged into assistant) -* `Mail `_ for summarizing mail threads (see :ref:`the Nextcloud Mail docs` for how to enable this) -* `SummarAI `_ for summarizing chat histories in `Talk `_ - -Backend apps -~~~~~~~~~~~~ - -* :ref:`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`) - Image generation ^^^^^^^^^^^^^^^^ @@ -143,18 +144,17 @@ Frontend apps ~~~~~~~~~~~~~ * `Assistant `_ for offering a graphical UI and a smart picker -* `Text-to-Image 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`) +* text2image_stablediffusion (Customer support available upon request) +* `OpenAI and LocalAI integration (via OpenAI API) `_ - Integrates with the OpenAI API to provide AI functionality from OpenAI servers (Customer support available upon request; see :ref:`AI as a Service`) * *integration_replicate* - Integrates with the replicate API to provide AI functionality from replicate servers (see :ref:`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 @@ -167,6 +167,13 @@ Backend apps * :ref:`context_chat + context_chat_backend` - (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 `_ Frequently Asked Questions -------------------------- diff --git a/admin_manual/configuration_files/encryption_details.rst b/admin_manual/configuration_files/encryption_details.rst index 7475ec37cbb..9776111d8f3 100644 --- a/admin_manual/configuration_files/encryption_details.rst +++ b/admin_manual/configuration_files/encryption_details.rst @@ -345,7 +345,7 @@ Each block is (by default) AES-256-CTR decrypted with the ``$iv[$position]`` and Sources ------- -- `nextcloud-tools repository on GitHub `_ +- `encryption-recovery-tools repository on GitHub `_ - `Nextcloud Encryption Configuration documentation `_ - `Nextcloud Help response concerning the usage of version information `_ - `Sourcecode: Creation of the Message Authentication Code `_ diff --git a/admin_manual/configuration_files/trashbin_configuration.rst b/admin_manual/configuration_files/trashbin_configuration.rst index 7d199ebce34..2b71abdc564 100644 --- a/admin_manual/configuration_files/trashbin_configuration.rst +++ b/admin_manual/configuration_files/trashbin_configuration.rst @@ -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) \ No newline at end of file +Expire versions: ``occ trashbin:expire`` or ``occ trashbin:expire --quiet`` (without the progress bar) diff --git a/admin_manual/configuration_server/config_sample_php_parameters.rst b/admin_manual/configuration_server/config_sample_php_parameters.rst index 9cc6a89e168..17fda058d05 100644 --- a/admin_manual/configuration_server/config_sample_php_parameters.rst +++ b/admin_manual/configuration_server/config_sample_php_parameters.rst @@ -1166,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. @@ -1743,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. diff --git a/admin_manual/configuration_server/occ_command.rst b/admin_manual/configuration_server/occ_command.rst index ba69f2847f4..4cb27f17c3d 100644 --- a/admin_manual/configuration_server/occ_command.rst +++ b/admin_manual/configuration_server/occ_command.rst @@ -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: @@ -1361,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 @@ -1412,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 @@ -1827,6 +1848,25 @@ Mark a file as scanned or unscanned:: sudo -u www php occ files_antivirus:mark +.. _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 diff --git a/admin_manual/groupware/contacts.rst b/admin_manual/groupware/contacts.rst index ab378a999f1..4c4c8e09edc 100644 --- a/admin_manual/groupware/contacts.rst +++ b/admin_manual/groupware/contacts.rst @@ -49,3 +49,22 @@ Shared items .. versionadded:: 5.5.0 For this feature, the shipped `related resources app `_ 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 diff --git a/admin_manual/installation/harden_server.rst b/admin_manual/installation/harden_server.rst index cb4e585cb0b..0fcbbf19c10 100644 --- a/admin_manual/installation/harden_server.rst +++ b/admin_manual/installation/harden_server.rst @@ -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. diff --git a/admin_manual/installation/nginx-root.conf.sample b/admin_manual/installation/nginx-root.conf.sample index 00ce01f68aa..c623fb7a5cb 100644 --- a/admin_manual/installation/nginx-root.conf.sample +++ b/admin_manual/installation/nginx-root.conf.sample @@ -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 diff --git a/admin_manual/installation/nginx-subdir.conf.sample b/admin_manual/installation/nginx-subdir.conf.sample index 191b621f818..b3117309915 100644 --- a/admin_manual/installation/nginx-subdir.conf.sample +++ b/admin_manual/installation/nginx-subdir.conf.sample @@ -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 diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst index cace76a4bf1..146c563d5f7 100644 --- a/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/index.rst @@ -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 diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst index b7759e33056..7a220afbcc2 100644 --- a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_30.rst @@ -31,9 +31,12 @@ 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``. +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: @@ -46,8 +49,8 @@ It's recommended to: 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 +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. @@ -100,19 +103,6 @@ When using Webpack: + import { getCSPNonce } from '@nextcloud/auth' + __webpack_nonce__ = getCSPNonce() - -Added APIs -^^^^^^^^^^ - -Changed APIs -^^^^^^^^^^^^ - -Removed APIs -^^^^^^^^^^^^ - -Removed globals -^^^^^^^^^^^^^^^ - Deprecated APIs ^^^^^^^^^^^^^^^ @@ -194,6 +184,7 @@ 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\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 ^^^^^^^^^^^^ @@ -292,6 +283,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 -^^^^^^^^^^^^^^ diff --git a/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst new file mode 100644 index 00000000000..7f57564716b --- /dev/null +++ b/developer_manual/app_publishing_maintenance/app_upgrade_guide/upgrade_to_31.rst @@ -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 `_ +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`. + +To make migration easier utility functions are provided in the ``@nextcloud/sharing`` :ref:`package` +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` . + + +Back-end changes +---------------- + +Added APIs +^^^^^^^^^^ + +- TBD + +Changed APIs +^^^^^^^^^^^^ + +- TBD + +Deprecated APIs +^^^^^^^^^^^^^^^ + +- TBD + +Removed APIs +^^^^^^^^^^^^ + +- TBD diff --git a/developer_manual/basics/_available_events_ocp.rst b/developer_manual/basics/_available_events_ocp.rst index 11cbf60a5c8..e118b346075 100644 --- a/developer_manual/basics/_available_events_ocp.rst +++ b/developer_manual/basics/_available_events_ocp.rst @@ -1,60 +1,74 @@ .. This file is generated by nextcloud-ocp-events. .. Always change the source file. -``OCP\Authentication\Events\AnyLoginFailedEvent`` -************************************************* +``OCP\Accounts\UserUpdatedEvent`` +********************************* -.. versionadded:: 26 +.. versionadded:: 28 -Emitted when the authentication fails +This event is triggered when the account data of a user was updated. -``OCP\Authentication\Events\LoginFailedEvent`` -********************************************** +``OCP\App\Events\AppDisableEvent`` +********************************** -.. versionadded:: 19 +.. versionadded:: 27 -Emitted when the authentication fails, but only if the login name can be associated with an existing user. +This event is triggered when an app is disabled. -``OCP\Authentication\TwoFactorAuth\RegistryEvent`` -************************************************** +``OCP\App\Events\AppEnableEvent`` +********************************* -.. versionadded:: 15 +.. versionadded:: 27 +This event is triggered when an app is enabled. -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabled`` -************************************************************** +``OCP\App\Events\AppUpdateEvent`` +********************************* -.. versionadded:: 20 +.. versionadded:: 27 +This event is triggered when an app is updated. -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed`` -********************************************************************* +``OCP\App\ManagerEvent`` +************************ + +.. versionadded:: 9 + +Class ManagerEvent + +``OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent`` +***************************************************************** .. versionadded:: 28 +Emitted before the rendering step of the login TemplateResponse. -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabled`` -******************************************************************** +``OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent`` +************************************************************ -.. versionadded:: 22 +.. versionadded:: 20 +Emitted before the rendering step of each TemplateResponse. The event holds a +flag that specifies if an user is logged in. -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserDisabled`` -********************************************************************* +``OCP\Authentication\Events\AnyLoginFailedEvent`` +************************************************* -.. versionadded:: 22 +.. versionadded:: 26 +Emitted when the authentication fails -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegistered`` -*********************************************************************** +``OCP\Authentication\Events\LoginFailedEvent`` +********************************************** -.. versionadded:: 28 +.. versionadded:: 19 +Emitted when the authentication fails, but only if the login name can be associated with an existing user. -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeleted`` -***************************************************************** +``OCP\Authentication\TwoFactorAuth\RegistryEvent`` +************************************************** -.. versionadded:: 28 +.. versionadded:: 15 ``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed`` @@ -63,149 +77,121 @@ Emitted when the authentication fails, but only if the login name can be associa .. versionadded:: 28 -``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregistered`` -************************************************************************* +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed`` +********************************************************************* .. versionadded:: 28 -``OCP\Profile\BeforeTemplateRenderedEvent`` -******************************************* - -.. versionadded:: 25 - -Emitted before the rendering step of the public profile page happens. - -``OCP\Share\Events\ShareDeletedEvent`` -************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderDisabled`` +************************************************************** -.. versionadded:: 21 +.. versionadded:: 20 -``OCP\Share\Events\ShareDeletedFromSelfEvent`` -********************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserDisabled`` +********************************************************************* -.. versionadded:: 28 +.. versionadded:: 22 -``OCP\Share\Events\BeforeShareCreatedEvent`` -******************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserEnabled`` +******************************************************************** -.. versionadded:: 28 +.. versionadded:: 22 -``OCP\Share\Events\BeforeShareDeletedEvent`` -******************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserRegistered`` +*********************************************************************** .. versionadded:: 28 -``OCP\Share\Events\ShareCreatedEvent`` -************************************** - -.. versionadded:: 18 - - -``OCP\Share\Events\VerifyMountPointEvent`` -****************************************** - -.. versionadded:: 19 - - -``OCP\Share\Events\ShareAcceptedEvent`` -*************************************** +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderForUserUnregistered`` +************************************************************************* .. versionadded:: 28 -``OCP\AppFramework\Http\Events\BeforeLoginTemplateRenderedEvent`` +``OCP\Authentication\TwoFactorAuth\TwoFactorProviderUserDeleted`` ***************************************************************** .. versionadded:: 28 -Emitted before the rendering step of the login TemplateResponse. -``OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent`` -************************************************************ +``OCP\BeforeSabrePubliclyLoadedEvent`` +************************************** -.. versionadded:: 20 +.. versionadded:: 26 -Emitted before the rendering step of each TemplateResponse. The event holds a -flag that specifies if an user is logged in. +Dispatched before Sabre is loaded when accessing public webdav endpoints +This can be used to inject a Sabre plugin for example -``OCP\FilesMetadata\Event\MetadataBackgroundEvent`` -*************************************************** +``OCP\Collaboration\AutoComplete\AutoCompleteEvent`` +**************************************************** -.. versionadded:: 28 +.. versionadded:: 16 -MetadataBackgroundEvent is an event similar to MetadataLiveEvent but dispatched -on a background thread instead of live thread. Meaning there is no limit to -the time required for the generation of your metadata. -``OCP\FilesMetadata\Event\MetadataNamedEvent`` -********************************************** +``OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent`` +********************************************************** .. versionadded:: 28 -MetadataNamedEvent is an event similar to MetadataBackgroundEvent completed with a target name, -used to limit the refresh of metadata only listeners capable of filtering themselves out. -Meaning that when using this event, your app must implement a filter on the event's registered -name returned by getName() - -This event is mostly triggered when a registered name is added to the files scan - i.e. ./occ files:scan --generate-metadata [name] -``OCP\FilesMetadata\Event\MetadataLiveEvent`` -********************************************* +``OCP\Collaboration\Reference\RenderReferenceEvent`` +**************************************************** -.. versionadded:: 28 +.. versionadded:: 25 -MetadataLiveEvent is an event initiated when a file is created or updated. -The app contains the Node related to the created/updated file, and a FilesMetadata that already -contains the currently known metadata. +Event emitted when apps might render references like link previews or smart picker widgets. +This can be used to inject scripts for extending that. +Further details can be found in the :ref:`Reference providers` deep dive. -Setting new metadata, or modifying already existing metadata with different value, will trigger -the save of the metadata in the database. +``OCP\Collaboration\Resources\LoadAdditionalScriptsEvent`` +********************************************************** -``OCP\App\Events\AppUpdateEvent`` -********************************* +.. versionadded:: 25 -.. versionadded:: 27 +This event is used by apps to register their own frontend scripts for integrating +projects in their app. Apps also need to dispatch the event in order to load +scripts during page load -This event is triggered when an app is updated. +``OCP\Comments\CommentsEntityEvent`` +************************************ -``OCP\App\Events\AppEnableEvent`` -********************************* +.. versionadded:: 9.1 -.. versionadded:: 27 +.. versionchanged:: 28.0.0 + Dispatched as a typed event -This event is triggered when an app is enabled. +Class CommentsEntityEvent -``OCP\App\Events\AppDisableEvent`` -********************************** +``OCP\Comments\CommentsEvent`` +****************************** -.. versionadded:: 27 +.. versionadded:: 9 -This event is triggered when an app is disabled. +Class CommentsEvent -``OCP\App\ManagerEvent`` -************************ +``OCP\Config\BeforePreferenceDeletedEvent`` +******************************************* -.. versionadded:: 9 +.. versionadded:: 25 -Class ManagerEvent -``OCP\TextToImage\Events\TaskFailedEvent`` -****************************************** +``OCP\Config\BeforePreferenceSetEvent`` +*************************************** -.. versionadded:: 28 +.. versionadded:: 25 -``OCP\TextToImage\Events\TaskSuccessfulEvent`` -********************************************** +``OCP\Console\ConsoleEvent`` +**************************** -.. versionadded:: 28 +.. versionadded:: 9 +Class ConsoleEvent ``OCP\Contacts\Events\ContactInteractedWithEvent`` ************************************************** @@ -218,128 +204,88 @@ suggestions in user interfaces. Emitters should add at least one identifier (uid, email, federated cloud ID) of the recipient of the interaction. -``OCP\WorkflowEngine\Events\RegisterOperationsEvent`` -***************************************************** +``OCP\DB\Events\AddMissingColumnsEvent`` +**************************************** -.. versionadded:: 18 +.. versionadded:: 28 +Event to allow apps to register information about missing database columns +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-columns which will then create those columns -``OCP\WorkflowEngine\Events\RegisterChecksEvent`` -************************************************* +``OCP\DB\Events\AddMissingIndicesEvent`` +**************************************** -.. versionadded:: 18 +.. versionadded:: 28 +Event to allow apps to register information about missing database indices +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-indices which will then create those indices -``OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent`` -****************************************************** +``OCP\DB\Events\AddMissingPrimaryKeyEvent`` +******************************************* -.. versionadded:: 20 +.. versionadded:: 28 -Emitted when the workflow engine settings page is loaded. +Event to allow apps to register information about missing database primary keys +This event will be dispatched for checking on the admin settings and when running +occ db:add-missing-primary-keys which will then create those keys -``OCP\WorkflowEngine\Events\RegisterEntitiesEvent`` -*************************************************** +``OCP\DirectEditing\RegisterDirectEditorEvent`` +*********************************************** .. versionadded:: 18 +Event to allow to register the direct editor. -``OCP\Federation\Events\TrustedServerRemovedEvent`` -*************************************************** - -.. versionadded:: 25 - - -``OCP\SabrePluginEvent`` -************************ - -.. versionadded:: 8.2 - - -``OCP\Mail\Events\BeforeMessageSent`` -************************************* - -.. versionadded:: 19 - -Emitted before a system mail is sent. It can be used to alter the message. - -``OCP\Settings\Events\DeclarativeSettingsRegisterFormEvent`` -************************************************************ - -.. versionadded:: 29 - - -``OCP\Settings\Events\DeclarativeSettingsSetValueEvent`` -******************************************************** - -.. versionadded:: 29 - - -``OCP\Settings\Events\DeclarativeSettingsGetValueEvent`` -******************************************************** - -.. versionadded:: 29 - - -``OCP\Collaboration\AutoComplete\AutoCompleteFilterEvent`` -********************************************************** - -.. versionadded:: 28 - - -``OCP\Collaboration\AutoComplete\AutoCompleteEvent`` -**************************************************** +``OCP\EventDispatcher\GenericEvent`` +************************************ -.. versionadded:: 16 +.. versionadded:: 18 +Class GenericEvent +convenience reimplementation of \Symfony\Component\GenericEvent against +\OCP\EventDispatcher\Event -``OCP\Collaboration\Resources\LoadAdditionalScriptsEvent`` -********************************************************** +``OCP\Federation\Events\TrustedServerRemovedEvent`` +*************************************************** .. versionadded:: 25 -This event is used by apps to register their own frontend scripts for integrating -projects in their app. Apps also need to dispatch the event in order to load -scripts during page load - -``OCP\Collaboration\Reference\RenderReferenceEvent`` -**************************************************** -.. versionadded:: 25 +``OCP\Files\Cache\AbstractCacheEvent`` +************************************** -Event emitted when apps might render references like link previews or smart picker widgets. -This can be used to inject scripts for extending that. -Further details can be found in the :ref:`Reference providers` deep dive. +.. versionadded:: 22 -``OCP\Comments\CommentsEntityEvent`` -************************************ -.. versionadded:: 9.1 +``OCP\Files\Cache\CacheEntryInsertedEvent`` +******************************************* -.. versionchanged:: 28.0.0 - Dispatched as a typed event +.. versionadded:: 21 -Class CommentsEntityEvent +Event for when an existing entry in the cache gets inserted -``OCP\Comments\CommentsEvent`` -****************************** +``OCP\Files\Cache\CacheEntryRemovedEvent`` +****************************************** -.. versionadded:: 9 +.. versionadded:: 21 -Class CommentsEvent +Event for when an existing entry in the cache gets removed -``OCP\Accounts\UserUpdatedEvent`` -********************************* +``OCP\Files\Cache\CacheEntryUpdatedEvent`` +****************************************** -.. versionadded:: 28 +.. versionadded:: 21 -This event is triggered when the account data of a user was updated. +Event for when an existing entry in the cache gets updated -``OCP\Files\Cache\CacheEntryRemovedEvent`` -****************************************** +``OCP\Files\Cache\CacheInsertEvent`` +************************************ -.. versionadded:: 21 +.. versionadded:: 16 -Event for when an existing entry in the cache gets removed +Event for when a new entry gets added to the cache ``OCP\Files\Cache\CacheUpdateEvent`` ************************************ @@ -348,37 +294,36 @@ Event for when an existing entry in the cache gets removed Event for when an existing entry in the cache gets updated -``OCP\Files\Cache\CacheEntryInsertedEvent`` -******************************************* +``OCP\Files\Events\BeforeDirectFileDownloadEvent`` +************************************************** -.. versionadded:: 21 +.. versionadded:: 25 -Event for when an existing entry in the cache gets inserted +This event is triggered when a user tries to download a file +directly. -``OCP\Files\Cache\CacheEntryUpdatedEvent`` -****************************************** +``OCP\Files\Events\BeforeFileScannedEvent`` +******************************************* -.. versionadded:: 21 +.. versionadded:: 18 -Event for when an existing entry in the cache gets updated -``OCP\Files\Cache\AbstractCacheEvent`` -************************************** +``OCP\Files\Events\BeforeFolderScannedEvent`` +********************************************* -.. versionadded:: 22 +.. versionadded:: 18 -``OCP\Files\Cache\CacheInsertEvent`` -************************************ +``OCP\Files\Events\BeforeZipCreatedEvent`` +****************************************** -.. versionadded:: 16 +.. versionadded:: 25 -Event for when a new entry gets added to the cache -``OCP\Files\Events\NodeRemovedFromFavorite`` -******************************************** +``OCP\Files\Events\FileCacheUpdated`` +************************************* -.. versionadded:: 28 +.. versionadded:: 18 ``OCP\Files\Events\FileScannedEvent`` @@ -393,17 +338,12 @@ Event for when a new entry gets added to the cache .. versionadded:: 18 -``OCP\Files\Events\NodeAddedToFavorite`` -**************************************** - -.. versionadded:: 28 - - -``OCP\Files\Events\BeforeFileScannedEvent`` -******************************************* +``OCP\Files\Events\InvalidateMountCacheEvent`` +********************************************** -.. versionadded:: 18 +.. versionadded:: 24 +Used to notify the filesystem setup manager that the available mounts for a user have changed ``OCP\Files\Events\Node\BeforeNodeCopiedEvent`` *********************************************** @@ -411,47 +351,48 @@ Event for when a new entry gets added to the cache .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeTouchedEvent`` +``OCP\Files\Events\Node\BeforeNodeCreatedEvent`` ************************************************ .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeRenamedEvent`` +``OCP\Files\Events\Node\BeforeNodeDeletedEvent`` ************************************************ .. versionadded:: 20 -``OCP\Files\Events\Node\NodeDeletedEvent`` -****************************************** +``OCP\Files\Events\Node\BeforeNodeReadEvent`` +********************************************* .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeCreatedEvent`` +``OCP\Files\Events\Node\BeforeNodeRenamedEvent`` ************************************************ .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeReadEvent`` -********************************************* +``OCP\Files\Events\Node\BeforeNodeTouchedEvent`` +************************************************ .. versionadded:: 20 -``OCP\Files\Events\Node\NodeRenamedEvent`` -****************************************** +``OCP\Files\Events\Node\BeforeNodeWrittenEvent`` +************************************************ .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeDeletedEvent`` -************************************************ +``OCP\Files\Events\Node\FilesystemTornDownEvent`` +************************************************* -.. versionadded:: 20 +.. versionadded:: 24 +Event fired after the filesystem has been torn down ``OCP\Files\Events\Node\NodeCopiedEvent`` ***************************************** @@ -465,21 +406,20 @@ Event for when a new entry gets added to the cache .. versionadded:: 20 -``OCP\Files\Events\Node\FilesystemTornDownEvent`` -************************************************* +``OCP\Files\Events\Node\NodeDeletedEvent`` +****************************************** -.. versionadded:: 24 +.. versionadded:: 20 -Event fired after the filesystem has been torn down -``OCP\Files\Events\Node\NodeTouchedEvent`` +``OCP\Files\Events\Node\NodeRenamedEvent`` ****************************************** .. versionadded:: 20 -``OCP\Files\Events\Node\BeforeNodeWrittenEvent`` -************************************************ +``OCP\Files\Events\Node\NodeTouchedEvent`` +****************************************** .. versionadded:: 20 @@ -490,16 +430,16 @@ Event fired after the filesystem has been torn down .. versionadded:: 20 -``OCP\Files\Events\FileCacheUpdated`` +``OCP\Files\Events\NodeAddedToCache`` ************************************* .. versionadded:: 18 -``OCP\Files\Events\BeforeZipCreatedEvent`` -****************************************** +``OCP\Files\Events\NodeAddedToFavorite`` +**************************************** -.. versionadded:: 25 +.. versionadded:: 28 ``OCP\Files\Events\NodeRemovedFromCache`` @@ -508,31 +448,16 @@ Event fired after the filesystem has been torn down .. versionadded:: 18 -``OCP\Files\Events\BeforeDirectFileDownloadEvent`` -************************************************** - -.. versionadded:: 25 - -This event is triggered when a user tries to download a file -directly. - -``OCP\Files\Events\BeforeFolderScannedEvent`` -********************************************* +``OCP\Files\Events\NodeRemovedFromFavorite`` +******************************************** -.. versionadded:: 18 +.. versionadded:: 28 -``OCP\Files\Events\InvalidateMountCacheEvent`` +``OCP\Files\Template\BeforeGetTemplatesEvent`` ********************************************** -.. versionadded:: 24 - -Used to notify the filesystem setup manager that the available mounts for a user have changed - -``OCP\Files\Events\NodeAddedToCache`` -************************************* - -.. versionadded:: 18 +.. versionadded:: 30 ``OCP\Files\Template\FileCreatedFromTemplateEvent`` @@ -547,236 +472,276 @@ Used to notify the filesystem setup manager that the available mounts for a user .. versionadded:: 30 -``OCP\Config\BeforePreferenceDeletedEvent`` -******************************************* +``OCP\FilesMetadata\Event\MetadataBackgroundEvent`` +*************************************************** -.. versionadded:: 25 +.. versionadded:: 28 +MetadataBackgroundEvent is an event similar to MetadataLiveEvent but dispatched +on a background thread instead of live thread. Meaning there is no limit to +the time required for the generation of your metadata. -``OCP\Config\BeforePreferenceSetEvent`` -*************************************** +``OCP\FilesMetadata\Event\MetadataLiveEvent`` +********************************************* -.. versionadded:: 25 +.. versionadded:: 28 +MetadataLiveEvent is an event initiated when a file is created or updated. +The app contains the Node related to the created/updated file, and a FilesMetadata that already +contains the currently known metadata. -``OCP\DirectEditing\RegisterDirectEditorEvent`` -*********************************************** +Setting new metadata, or modifying already existing metadata with different value, will trigger +the save of the metadata in the database. -.. versionadded:: 18 +``OCP\FilesMetadata\Event\MetadataNamedEvent`` +********************************************** -Event to allow to register the direct editor. +.. versionadded:: 28 -``OCP\Preview\BeforePreviewFetchedEvent`` -***************************************** +MetadataNamedEvent is an event similar to MetadataBackgroundEvent completed with a target name, +used to limit the refresh of metadata only listeners capable of filtering themselves out. +Meaning that when using this event, your app must implement a filter on the event's registered +name returned by getName() -.. versionadded:: 25.0.1 +This event is mostly triggered when a registered name is added to the files scan + i.e. ./occ files:scan --generate-metadata [name] -.. versionchanged:: 28.0.0 - the constructor arguments ``$width``, ``$height``, ``$crop`` and ``$mode`` are no longer nullable. +``OCP\Group\Events\BeforeGroupChangedEvent`` +******************************************** -Emitted before a file preview is being fetched. -It can be used to block preview rendering by throwing a ``OCP\Files\NotFoundException`` +.. versionadded:: 26 -``OCP\SpeechToText\Events\TranscriptionSuccessfulEvent`` -******************************************************** -.. versionadded:: 27 +``OCP\Group\Events\BeforeGroupCreatedEvent`` +******************************************** -This Event is emitted when a transcription of a media file happened successfully +.. versionadded:: 18 -``OCP\SpeechToText\Events\TranscriptionFailedEvent`` -**************************************************** -.. versionadded:: 27 +``OCP\Group\Events\BeforeGroupDeletedEvent`` +******************************************** -This Event is emitted if a transcription of a media file using a Speech-To-Text provider failed +.. versionadded:: 18 -``OCP\Security\CSP\AddContentSecurityPolicyEvent`` -************************************************** -.. versionadded:: 17 +``OCP\Group\Events\BeforeUserAddedEvent`` +***************************************** -Allows to inject something into the default content policy. This is for -example useful when you're injecting Javascript code into a view belonging -to another controller and cannot modify its Content-Security-Policy itself. -Note that the adjustment is only applied to applications that use AppFramework -controllers. +.. versionadded:: 18 -WARNING: Using this API incorrectly may make the instance more insecure. -Do think twice before adding whitelisting resources. Please do also note -that it is not possible to use the `disallowXYZ` functions. -``OCP\Security\Events\GenerateSecurePasswordEvent`` -*************************************************** +``OCP\Group\Events\BeforeUserRemovedEvent`` +******************************************* .. versionadded:: 18 -``OCP\Security\Events\ValidatePasswordPolicyEvent`` -*************************************************** +``OCP\Group\Events\GroupChangedEvent`` +************************************** + +.. versionadded:: 26 + + +``OCP\Group\Events\GroupCreatedEvent`` +************************************** .. versionadded:: 18 -``OCP\Security\FeaturePolicy\AddFeaturePolicyEvent`` -**************************************************** +``OCP\Group\Events\GroupDeletedEvent`` +************************************** -.. versionadded:: 17 +.. versionadded:: 18 -Event that allows to register a feature policy header to a request. -``OCP\User\GetQuotaEvent`` -************************** +``OCP\Group\Events\SubAdminAddedEvent`` +*************************************** -.. versionadded:: 20 +.. versionadded:: 21 -Event to allow apps to -``OCP\User\Events\UserChangedEvent`` -************************************ +``OCP\Group\Events\SubAdminRemovedEvent`` +***************************************** + +.. versionadded:: 21 + + +``OCP\Group\Events\UserAddedEvent`` +*********************************** .. versionadded:: 18 -``OCP\User\Events\UserLiveStatusEvent`` -*************************************** +``OCP\Group\Events\UserRemovedEvent`` +************************************* -.. versionadded:: 20 +.. versionadded:: 18 -``OCP\User\Events\BeforePasswordUpdatedEvent`` +``OCP\Log\Audit\CriticalActionPerformedEvent`` ********************************************** -.. versionadded:: 18 +.. versionadded:: 22 -Emitted before the user password is updated. +Emitted when the admin_audit app should log an entry -``OCP\User\Events\UserDeletedEvent`` +``OCP\Log\BeforeMessageLoggedEvent`` ************************************ -.. versionadded:: 18 +.. versionadded:: 28 +Even for when a log item is being logged -``OCP\User\Events\BeforeUserDeletedEvent`` -****************************************** +``OCP\Mail\Events\BeforeMessageSent`` +************************************* -.. versionadded:: 18 +.. versionadded:: 19 +Emitted before a system mail is sent. It can be used to alter the message. -``OCP\User\Events\BeforeUserCreatedEvent`` -****************************************** +``OCP\OCM\Events\ResourceTypeRegisterEvent`` +******************************************** -.. versionadded:: 18 +.. versionadded:: 28 -Emitted before a new user is created on the back-end. +Use this event to register additional OCM resources before the API returns +them in the OCM provider list and capability -``OCP\User\Events\OutOfOfficeClearedEvent`` -******************************************* +``OCP\Preview\BeforePreviewFetchedEvent`` +***************************************** -.. versionadded:: 28 +.. versionadded:: 25.0.1 -Emitted when a user's out-of-office period is cleared +.. versionchanged:: 28.0.0 + the constructor arguments ``$width``, ``$height``, ``$crop`` and ``$mode`` are no longer nullable. -``OCP\User\Events\BeforeUserLoggedInEvent`` +Emitted before a file preview is being fetched. +It can be used to block preview rendering by throwing a ``OCP\Files\NotFoundException`` + +``OCP\Profile\BeforeTemplateRenderedEvent`` ******************************************* -.. versionadded:: 18 +.. versionadded:: 25 +Emitted before the rendering step of the public profile page happens. -``OCP\User\Events\UserFirstTimeLoggedInEvent`` -********************************************** +``OCP\SabrePluginEvent`` +************************ -.. versionadded:: 28 +.. versionadded:: 8.2 -``OCP\User\Events\UserCreatedEvent`` -************************************ +``OCP\Security\CSP\AddContentSecurityPolicyEvent`` +************************************************** -.. versionadded:: 18 +.. versionadded:: 17 -Emitted when a new user has been created on the back-end. +Allows to inject something into the default content policy. This is for +example useful when you're injecting Javascript code into a view belonging +to another controller and cannot modify its Content-Security-Policy itself. +Note that the adjustment is only applied to applications that use AppFramework +controllers. -``OCP\User\Events\UserLoggedInWithCookieEvent`` -*********************************************** +WARNING: Using this API incorrectly may make the instance more insecure. +Do think twice before adding whitelisting resources. Please do also note +that it is not possible to use the `disallowXYZ` functions. + +``OCP\Security\Events\GenerateSecurePasswordEvent`` +*************************************************** .. versionadded:: 18 -Emitted when a user has been successfully logged in via remember-me cookies. +Event to request a secure password to be generated -``OCP\User\Events\PasswordUpdatedEvent`` -**************************************** +``OCP\Security\Events\ValidatePasswordPolicyEvent`` +*************************************************** .. versionadded:: 18 -Emitted when the user password has been updated. +This event can be emitted to request a validation of a password. +If a password policy app is installed and the password +is invalid, an `\OCP\HintException` will be thrown. -``OCP\User\Events\OutOfOfficeScheduledEvent`` -********************************************* +``OCP\Security\FeaturePolicy\AddFeaturePolicyEvent`` +**************************************************** + +.. versionadded:: 17 + +Event that allows to register a feature policy header to a request. + +``OCP\Settings\Events\DeclarativeSettingsGetValueEvent`` +******************************************************** + +.. versionadded:: 29 + + +``OCP\Settings\Events\DeclarativeSettingsRegisterFormEvent`` +************************************************************ + +.. versionadded:: 29 + + +``OCP\Settings\Events\DeclarativeSettingsSetValueEvent`` +******************************************************** -.. versionadded:: 28 +.. versionadded:: 29 -Emitted when a user's out-of-office period is scheduled -``OCP\User\Events\PostLoginEvent`` -********************************** +``OCP\Share\Events\BeforeShareCreatedEvent`` +******************************************** -.. versionadded:: 18 +.. versionadded:: 28 -``OCP\User\Events\OutOfOfficeChangedEvent`` -******************************************* +``OCP\Share\Events\BeforeShareDeletedEvent`` +******************************************** .. versionadded:: 28 -Emitted when a user's out-of-office period has changed -``OCP\User\Events\OutOfOfficeStartedEvent`` -******************************************* +``OCP\Share\Events\ShareAcceptedEvent`` +*************************************** .. versionadded:: 28 -Emitted when a user's out-of-office period started -``OCP\User\Events\BeforeUserLoggedOutEvent`` -******************************************** +``OCP\Share\Events\ShareCreatedEvent`` +************************************** .. versionadded:: 18 -Emitted before a user is logged out. -``OCP\User\Events\OutOfOfficeEndedEvent`` -***************************************** +``OCP\Share\Events\ShareDeletedEvent`` +************************************** -.. versionadded:: 28 +.. versionadded:: 21 -Emitted when a user's out-of-office period ended -``OCP\User\Events\UserLoggedOutEvent`` -************************************** +``OCP\Share\Events\ShareDeletedFromSelfEvent`` +********************************************** -.. versionadded:: 18 +.. versionadded:: 28 -Emitted when a user has been logged out successfully. -``OCP\User\Events\UserLoggedInEvent`` -************************************* +``OCP\Share\Events\VerifyMountPointEvent`` +****************************************** -.. versionadded:: 18 +.. versionadded:: 19 -``OCP\User\Events\BeforeUserLoggedInWithCookieEvent`` -***************************************************** +``OCP\SpeechToText\Events\TranscriptionFailedEvent`` +**************************************************** -.. versionadded:: 18 +.. versionadded:: 27 -Emitted before a user is logged in via remember-me cookies. +This Event is emitted if a transcription of a media file using a Speech-To-Text provider failed -``OCP\SystemTag\MapperEvent`` -***************************** +``OCP\SpeechToText\Events\TranscriptionSuccessfulEvent`` +******************************************************** -.. versionadded:: 9 +.. versionadded:: 27 -Class MapperEvent +This Event is emitted when a transcription of a media file happened successfully ``OCP\SystemTag\ManagerEvent`` ****************************** @@ -785,6 +750,13 @@ Class MapperEvent Class ManagerEvent +``OCP\SystemTag\MapperEvent`` +***************************** + +.. versionadded:: 9 + +Class MapperEvent + ``OCP\SystemTag\SystemTagsEntityEvent`` *************************************** @@ -807,159 +779,198 @@ Class SystemTagsEntityEvent .. versionadded:: 30 -``OCP\EventDispatcher\GenericEvent`` -************************************ +``OCP\TextProcessing\Events\TaskFailedEvent`` +********************************************* -.. versionadded:: 18 +.. versionadded:: 27.1 -Class GenericEvent -convenience reimplementation of \Symfony\Component\GenericEvent against -\OCP\EventDispatcher\Event -``OCP\BeforeSabrePubliclyLoadedEvent`` -************************************** +``OCP\TextProcessing\Events\TaskSuccessfulEvent`` +************************************************* -.. versionadded:: 26 +.. versionadded:: 27.1 -Dispatched before Sabre is loaded when accessing public webdav endpoints -This can be used to inject a Sabre plugin for example -``OCP\Console\ConsoleEvent`` -**************************** +``OCP\TextToImage\Events\TaskFailedEvent`` +****************************************** -.. versionadded:: 9 +.. versionadded:: 28 -Class ConsoleEvent -``OCP\Log\BeforeMessageLoggedEvent`` -************************************ +``OCP\TextToImage\Events\TaskSuccessfulEvent`` +********************************************** .. versionadded:: 28 -Even for when a log item is being logged -``OCP\Log\Audit\CriticalActionPerformedEvent`` +``OCP\User\Events\BeforePasswordUpdatedEvent`` ********************************************** -.. versionadded:: 22 +.. versionadded:: 18 -Emitted when the admin_audit app should log an entry +Emitted before the user password is updated. -``OCP\DB\Events\AddMissingIndicesEvent`` -**************************************** +``OCP\User\Events\BeforeUserCreatedEvent`` +****************************************** -.. versionadded:: 28 +.. versionadded:: 18 -Event to allow apps to register information about missing database indices -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-indices which will then create those indices +Emitted before a new user is created on the back-end. -``OCP\DB\Events\AddMissingColumnsEvent`` -**************************************** +``OCP\User\Events\BeforeUserDeletedEvent`` +****************************************** -.. versionadded:: 28 +.. versionadded:: 18 -Event to allow apps to register information about missing database columns -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-columns which will then create those columns -``OCP\DB\Events\AddMissingPrimaryKeyEvent`` +``OCP\User\Events\BeforeUserLoggedInEvent`` ******************************************* -.. versionadded:: 28 +.. versionadded:: 18 -Event to allow apps to register information about missing database primary keys -This event will be dispatched for checking on the admin settings and when running -occ db:add-missing-primary-keys which will then create those keys -``OCP\Group\Events\GroupCreatedEvent`` -************************************** +``OCP\User\Events\BeforeUserLoggedInWithCookieEvent`` +***************************************************** .. versionadded:: 18 +Emitted before a user is logged in via remember-me cookies. -``OCP\Group\Events\UserRemovedEvent`` -************************************* +``OCP\User\Events\BeforeUserLoggedOutEvent`` +******************************************** .. versionadded:: 18 +Emitted before a user is logged out. -``OCP\Group\Events\SubAdminRemovedEvent`` +``OCP\User\Events\OutOfOfficeChangedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period has changed + +``OCP\User\Events\OutOfOfficeClearedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period is cleared + +``OCP\User\Events\OutOfOfficeEndedEvent`` ***************************************** -.. versionadded:: 21 +.. versionadded:: 28 +Emitted when a user's out-of-office period ended -``OCP\Group\Events\BeforeGroupCreatedEvent`` -******************************************** +``OCP\User\Events\OutOfOfficeScheduledEvent`` +********************************************* -.. versionadded:: 18 +.. versionadded:: 28 +Emitted when a user's out-of-office period is scheduled -``OCP\Group\Events\UserAddedEvent`` -*********************************** +``OCP\User\Events\OutOfOfficeStartedEvent`` +******************************************* + +.. versionadded:: 28 + +Emitted when a user's out-of-office period started + +``OCP\User\Events\PasswordUpdatedEvent`` +**************************************** .. versionadded:: 18 +Emitted when the user password has been updated. -``OCP\Group\Events\GroupDeletedEvent`` -************************************** +``OCP\User\Events\PostLoginEvent`` +********************************** .. versionadded:: 18 -``OCP\Group\Events\GroupChangedEvent`` -************************************** +``OCP\User\Events\UserChangedEvent`` +************************************ -.. versionadded:: 26 +.. versionadded:: 18 -``OCP\Group\Events\BeforeUserAddedEvent`` -***************************************** +``OCP\User\Events\UserCreatedEvent`` +************************************ .. versionadded:: 18 +Emitted when a new user has been created on the back-end. -``OCP\Group\Events\BeforeUserRemovedEvent`` -******************************************* +``OCP\User\Events\UserDeletedEvent`` +************************************ .. versionadded:: 18 -``OCP\Group\Events\BeforeGroupChangedEvent`` -******************************************** +``OCP\User\Events\UserFirstTimeLoggedInEvent`` +********************************************** -.. versionadded:: 26 +.. versionadded:: 28 -``OCP\Group\Events\SubAdminAddedEvent`` +``OCP\User\Events\UserLiveStatusEvent`` *************************************** -.. versionadded:: 21 +.. versionadded:: 20 -``OCP\Group\Events\BeforeGroupDeletedEvent`` -******************************************** +``OCP\User\Events\UserLoggedInEvent`` +************************************* .. versionadded:: 18 -``OCP\OCM\Events\ResourceTypeRegisterEvent`` -******************************************** +``OCP\User\Events\UserLoggedInWithCookieEvent`` +*********************************************** -.. versionadded:: 28 +.. versionadded:: 18 -Use this event to register additional OCM resources before the API returns -them in the OCM provider list and capability +Emitted when a user has been successfully logged in via remember-me cookies. -``OCP\TextProcessing\Events\TaskFailedEvent`` -********************************************* +``OCP\User\Events\UserLoggedOutEvent`` +************************************** -.. versionadded:: 27.1 +.. versionadded:: 18 +Emitted when a user has been logged out successfully. -``OCP\TextProcessing\Events\TaskSuccessfulEvent`` +``OCP\User\GetQuotaEvent`` +************************** + +.. versionadded:: 20 + +Event to allow apps to + +``OCP\WorkflowEngine\Events\LoadSettingsScriptsEvent`` +****************************************************** + +.. versionadded:: 20 + +Emitted when the workflow engine settings page is loaded. + +``OCP\WorkflowEngine\Events\RegisterChecksEvent`` ************************************************* -.. versionadded:: 27.1 +.. versionadded:: 18 + + +``OCP\WorkflowEngine\Events\RegisterEntitiesEvent`` +*************************************************** + +.. versionadded:: 18 + + +``OCP\WorkflowEngine\Events\RegisterOperationsEvent`` +***************************************************** + +.. versionadded:: 18 + diff --git a/developer_manual/conf.py b/developer_manual/conf.py index a0fa8cfb09e..7770ac004b1 100644 --- a/developer_manual/conf.py +++ b/developer_manual/conf.py @@ -258,7 +258,7 @@ 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 @@ # 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" } diff --git a/developer_manual/digging_deeper/changelog.rst b/developer_manual/digging_deeper/changelog.rst deleted file mode 100644 index a78f8f89130..00000000000 --- a/developer_manual/digging_deeper/changelog.rst +++ /dev/null @@ -1,80 +0,0 @@ -========= -Changelog -========= - -.. sectionauthor:: Bernhard Posselt - -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 `_: methods **getCoreApi** and **log** -* `OCP\\AppFramework\\IApi `_: 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::** 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_** and **OCP\\FILENAME_INVALID_CHARS** have been moved to **OCP\\Constants::** -* The **OC_GROUP_BACKEND_** and **OC_USER_BACKEND_** have been moved to **OC_Group_Backend::** and **OC_User_Backend::** respectively -* `OCP\\AppFramework\\Controller `_: methods **params**, **getParams**, **method**, **getUploadedFile**, **env**, **cookie**, **render** - -2015 -^^^^ - -* `\\OC\\Preferences `_ and `\\OC_Preferences `_ diff --git a/developer_manual/digging_deeper/index.rst b/developer_manual/digging_deeper/index.rst index 374de7c19a4..368a2515fb5 100644 --- a/developer_manual/digging_deeper/index.rst +++ b/developer_manual/digging_deeper/index.rst @@ -6,7 +6,6 @@ Digging deeper :maxdepth: 3 api - changelog config/index debugging classloader diff --git a/developer_manual/digging_deeper/javascript-apis.rst b/developer_manual/digging_deeper/javascript-apis.rst index 2cfd322372b..06251d10e6a 100644 --- a/developer_manual/digging_deeper/javascript-apis.rst +++ b/developer_manual/digging_deeper/javascript-apis.rst @@ -67,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`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -107,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`` ^^^^^^^^^^^^^^^^^^ diff --git a/requirements.txt b/requirements.txt index 12f9bf530ed..b6bae93e996 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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.20.0 +zipp==3.20.1 diff --git a/user_manual/groupware/mail.rst b/user_manual/groupware/mail.rst index 430556d3b8c..7eb45d0567c 100644 --- a/user_manual/groupware/mail.rst +++ b/user_manual/groupware/mail.rst @@ -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 --------------------------- @@ -333,3 +335,38 @@ When clicking on such an email a button will be shown to quickly follow up with 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 \ No newline at end of file diff --git a/user_manual/talk/advanced_features.rst b/user_manual/talk/advanced_features.rst index cebd870ca06..9745cacd1b3 100644 --- a/user_manual/talk/advanced_features.rst +++ b/user_manual/talk/advanced_features.rst @@ -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. `_ @@ -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. `_ @@ -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 diff --git a/user_manual/talk/images/add-participants.png b/user_manual/talk/images/add-participants.png index 1153c460d16..33e5d6d9b7f 100644 Binary files a/user_manual/talk/images/add-participants.png and b/user_manual/talk/images/add-participants.png differ diff --git a/user_manual/talk/images/background-settings-in-call.png b/user_manual/talk/images/background-settings-in-call.png index 34add73718b..fc65cca86b4 100644 Binary files a/user_manual/talk/images/background-settings-in-call.png and b/user_manual/talk/images/background-settings-in-call.png differ diff --git a/user_manual/talk/images/call-menu.png b/user_manual/talk/images/call-menu.png index 15669521185..ef9873ffe8a 100644 Binary files a/user_manual/talk/images/call-menu.png and b/user_manual/talk/images/call-menu.png differ diff --git a/user_manual/talk/images/change-name.png b/user_manual/talk/images/change-name.png index b1186897a1c..6964c1d8f22 100644 Binary files a/user_manual/talk/images/change-name.png and b/user_manual/talk/images/change-name.png differ diff --git a/user_manual/talk/images/chat-message-menu.png b/user_manual/talk/images/chat-message-menu.png index e58f2224569..73c2d9be559 100644 Binary files a/user_manual/talk/images/chat-message-menu.png and b/user_manual/talk/images/chat-message-menu.png differ diff --git a/user_manual/talk/images/chat-with-one-user.png b/user_manual/talk/images/chat-with-one-user.png index 4b9d6f9c14a..84a52fbc22a 100644 Binary files a/user_manual/talk/images/chat-with-one-user.png and b/user_manual/talk/images/chat-with-one-user.png differ diff --git a/user_manual/talk/images/clear-filter.png b/user_manual/talk/images/clear-filter.png index e4e67cc6e3c..9f2b271a7a8 100644 Binary files a/user_manual/talk/images/clear-filter.png and b/user_manual/talk/images/clear-filter.png differ diff --git a/user_manual/talk/images/command-help.png b/user_manual/talk/images/command-help.png index 7b4d003ebf8..69eb7d60228 100644 Binary files a/user_manual/talk/images/command-help.png and b/user_manual/talk/images/command-help.png differ diff --git a/user_manual/talk/images/configure-message-reminder.png b/user_manual/talk/images/configure-message-reminder.png index 6aa89c5b1a9..25e47141729 100644 Binary files a/user_manual/talk/images/configure-message-reminder.png and b/user_manual/talk/images/configure-message-reminder.png differ diff --git a/user_manual/talk/images/conversation-settings-dialog.png b/user_manual/talk/images/conversation-settings-dialog.png index d30474dba3e..8abd4a20b2b 100644 Binary files a/user_manual/talk/images/conversation-settings-dialog.png and b/user_manual/talk/images/conversation-settings-dialog.png differ diff --git a/user_manual/talk/images/create-new-conversation.png b/user_manual/talk/images/create-new-conversation.png index 769ba9edab9..55236f3916e 100644 Binary files a/user_manual/talk/images/create-new-conversation.png and b/user_manual/talk/images/create-new-conversation.png differ diff --git a/user_manual/talk/images/creating-open-conversation.png b/user_manual/talk/images/creating-open-conversation.png index bfb2dd775cc..f9823276c10 100644 Binary files a/user_manual/talk/images/creating-open-conversation.png and b/user_manual/talk/images/creating-open-conversation.png differ diff --git a/user_manual/talk/images/deck-talk-create-card-dialog.png b/user_manual/talk/images/deck-talk-create-card-dialog.png index 6f65ea79602..6b0b35fee02 100644 Binary files a/user_manual/talk/images/deck-talk-create-card-dialog.png and b/user_manual/talk/images/deck-talk-create-card-dialog.png differ diff --git a/user_manual/talk/images/deck-talk-create-card-menu.png b/user_manual/talk/images/deck-talk-create-card-menu.png index ff3f6b4efee..816c9c938ef 100644 Binary files a/user_manual/talk/images/deck-talk-create-card-menu.png and b/user_manual/talk/images/deck-talk-create-card-menu.png differ diff --git a/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png b/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png index 170c89ebc15..ec086ae1e53 100644 Binary files a/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png and b/user_manual/talk/images/deck-talk-share-card-to-chat-in-talk.png differ diff --git a/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png b/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png index 39174f407f6..30c7552fa95 100644 Binary files a/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png and b/user_manual/talk/images/deck-talk-share-card-to-chat-menu.png differ diff --git a/user_manual/talk/images/device-settings-before-call.png b/user_manual/talk/images/device-settings-before-call.png index 20a4d3d5271..de84c9ecefc 100644 Binary files a/user_manual/talk/images/device-settings-before-call.png and b/user_manual/talk/images/device-settings-before-call.png differ diff --git a/user_manual/talk/images/drag-and-drop.png b/user_manual/talk/images/drag-and-drop.png index 734f2cdce6c..86c6abf92ae 100644 Binary files a/user_manual/talk/images/drag-and-drop.png and b/user_manual/talk/images/drag-and-drop.png differ diff --git a/user_manual/talk/images/editing-document-in-chat-room.png b/user_manual/talk/images/editing-document-in-chat-room.png index d509b2f1d77..4d5f0655f51 100644 Binary files a/user_manual/talk/images/editing-document-in-chat-room.png and b/user_manual/talk/images/editing-document-in-chat-room.png differ diff --git a/user_manual/talk/images/emoji-picker.png b/user_manual/talk/images/emoji-picker.png index 5fcc9f21fb2..6ac7081e408 100644 Binary files a/user_manual/talk/images/emoji-picker.png and b/user_manual/talk/images/emoji-picker.png differ diff --git a/user_manual/talk/images/enable-recording-consent.png b/user_manual/talk/images/enable-recording-consent.png index 31a58639503..770cf2697e3 100644 Binary files a/user_manual/talk/images/enable-recording-consent.png and b/user_manual/talk/images/enable-recording-consent.png differ diff --git a/user_manual/talk/images/federation-conversations-list.png b/user_manual/talk/images/federation-conversations-list.png index 954afe2e306..d7a857d9d25 100644 Binary files a/user_manual/talk/images/federation-conversations-list.png and b/user_manual/talk/images/federation-conversations-list.png differ diff --git a/user_manual/talk/images/federation-invite-dialog.png b/user_manual/talk/images/federation-invite-dialog.png index 69cdc5565c6..2a3f4862398 100644 Binary files a/user_manual/talk/images/federation-invite-dialog.png and b/user_manual/talk/images/federation-invite-dialog.png differ diff --git a/user_manual/talk/images/federation-invite-pending.png b/user_manual/talk/images/federation-invite-pending.png index 13fdac3f994..3ed0c68b1f7 100644 Binary files a/user_manual/talk/images/federation-invite-pending.png and b/user_manual/talk/images/federation-invite-pending.png differ diff --git a/user_manual/talk/images/federation-invite-send.png b/user_manual/talk/images/federation-invite-send.png index 1aef3795f31..adccafca416 100644 Binary files a/user_manual/talk/images/federation-invite-send.png and b/user_manual/talk/images/federation-invite-send.png differ diff --git a/user_manual/talk/images/file-room.png b/user_manual/talk/images/file-room.png index d63c4b07b6e..9aac8743577 100644 Binary files a/user_manual/talk/images/file-room.png and b/user_manual/talk/images/file-room.png differ diff --git a/user_manual/talk/images/filters-menu.png b/user_manual/talk/images/filters-menu.png index 2a3e17378fc..bcca6bb9155 100644 Binary files a/user_manual/talk/images/filters-menu.png and b/user_manual/talk/images/filters-menu.png differ diff --git a/user_manual/talk/images/give-recording-consent-checked.png b/user_manual/talk/images/give-recording-consent-checked.png index 0323ad55247..e0875c75f36 100644 Binary files a/user_manual/talk/images/give-recording-consent-checked.png and b/user_manual/talk/images/give-recording-consent-checked.png differ diff --git a/user_manual/talk/images/give-recording-consent.png b/user_manual/talk/images/give-recording-consent.png index 17f9571b959..2b93ca19477 100644 Binary files a/user_manual/talk/images/give-recording-consent.png and b/user_manual/talk/images/give-recording-consent.png differ diff --git a/user_manual/talk/images/guest-call-menu.png b/user_manual/talk/images/guest-call-menu.png new file mode 100644 index 00000000000..2cdbc7b0f2e Binary files /dev/null and b/user_manual/talk/images/guest-call-menu.png differ diff --git a/user_manual/talk/images/guest-room-menu.png b/user_manual/talk/images/guest-room-menu.png index bd4602405f0..3defcdff904 100644 Binary files a/user_manual/talk/images/guest-room-menu.png and b/user_manual/talk/images/guest-room-menu.png differ diff --git a/user_manual/talk/images/guest-settings.png b/user_manual/talk/images/guest-settings.png index a437fe17667..454958e82d9 100644 Binary files a/user_manual/talk/images/guest-settings.png and b/user_manual/talk/images/guest-settings.png differ diff --git a/user_manual/talk/images/guest-view.png b/user_manual/talk/images/guest-view.png index 47375c56cbf..fef3631d9c2 100644 Binary files a/user_manual/talk/images/guest-view.png and b/user_manual/talk/images/guest-view.png differ diff --git a/user_manual/talk/images/join-call.png b/user_manual/talk/images/join-call.png index b17ae03486c..263de18ecfc 100644 Binary files a/user_manual/talk/images/join-call.png and b/user_manual/talk/images/join-call.png differ diff --git a/user_manual/talk/images/join-chat.png b/user_manual/talk/images/join-chat.png index 0eff447c2f1..45a361b531e 100644 Binary files a/user_manual/talk/images/join-chat.png and b/user_manual/talk/images/join-chat.png differ diff --git a/user_manual/talk/images/join-open-conversations.png b/user_manual/talk/images/join-open-conversations.png index e6fe8f0042b..0885b518f1d 100644 Binary files a/user_manual/talk/images/join-open-conversations.png and b/user_manual/talk/images/join-open-conversations.png differ diff --git a/user_manual/talk/images/lobby-in-talk.png b/user_manual/talk/images/lobby-in-talk.png index cb21455794f..5960324ccee 100644 Binary files a/user_manual/talk/images/lobby-in-talk.png and b/user_manual/talk/images/lobby-in-talk.png differ diff --git a/user_manual/talk/images/matterbridge-settings.png b/user_manual/talk/images/matterbridge-settings.png index b1d867b4103..8787622cf69 100644 Binary files a/user_manual/talk/images/matterbridge-settings.png and b/user_manual/talk/images/matterbridge-settings.png differ diff --git a/user_manual/talk/images/media-settings.png b/user_manual/talk/images/media-settings.png index 61d8f53a286..ef9873ffe8a 100644 Binary files a/user_manual/talk/images/media-settings.png and b/user_manual/talk/images/media-settings.png differ diff --git a/user_manual/talk/images/message-editing.png b/user_manual/talk/images/message-editing.png index 1c8b5197d14..485d592d0e9 100644 Binary files a/user_manual/talk/images/message-editing.png and b/user_manual/talk/images/message-editing.png differ diff --git a/user_manual/talk/images/message-silent.png b/user_manual/talk/images/message-silent.png index a0cbb5373d5..8b824b461ac 100644 Binary files a/user_manual/talk/images/message-silent.png and b/user_manual/talk/images/message-silent.png differ diff --git a/user_manual/talk/images/messages-expiration.png b/user_manual/talk/images/messages-expiration.png index cd57f60b547..512cf2e30a0 100644 Binary files a/user_manual/talk/images/messages-expiration.png and b/user_manual/talk/images/messages-expiration.png differ diff --git a/user_manual/talk/images/new-room.png b/user_manual/talk/images/new-room.png index 708fee85d95..7a49a21c447 100644 Binary files a/user_manual/talk/images/new-room.png and b/user_manual/talk/images/new-room.png differ diff --git a/user_manual/talk/images/open-settings.png b/user_manual/talk/images/open-settings.png index a5028049012..af274a5bfda 100644 Binary files a/user_manual/talk/images/open-settings.png and b/user_manual/talk/images/open-settings.png differ diff --git a/user_manual/talk/images/participant-menu.png b/user_manual/talk/images/participant-menu.png index 509fc1a4382..a32865aa38c 100644 Binary files a/user_manual/talk/images/participant-menu.png and b/user_manual/talk/images/participant-menu.png differ diff --git a/user_manual/talk/images/reply.png b/user_manual/talk/images/reply.png index b091f39c504..ad9e44dc4d2 100644 Binary files a/user_manual/talk/images/reply.png and b/user_manual/talk/images/reply.png differ diff --git a/user_manual/talk/images/set-message-reminder.png b/user_manual/talk/images/set-message-reminder.png index 078716c81bb..3ec9c027d49 100644 Binary files a/user_manual/talk/images/set-message-reminder.png and b/user_manual/talk/images/set-message-reminder.png differ diff --git a/user_manual/talk/images/share-files-in-chat-selection.png b/user_manual/talk/images/share-files-in-chat-selection.png index f9b61c47fbf..de9332e57ec 100644 Binary files a/user_manual/talk/images/share-files-in-chat-selection.png and b/user_manual/talk/images/share-files-in-chat-selection.png differ diff --git a/user_manual/talk/images/share-files-in-chat.png b/user_manual/talk/images/share-files-in-chat.png index c29d6bd6ef2..6ff3f46a54d 100644 Binary files a/user_manual/talk/images/share-files-in-chat.png and b/user_manual/talk/images/share-files-in-chat.png differ diff --git a/user_manual/talk/images/share-recording-notification.png b/user_manual/talk/images/share-recording-notification.png index 0da347a3063..112bee43014 100644 Binary files a/user_manual/talk/images/share-recording-notification.png and b/user_manual/talk/images/share-recording-notification.png differ diff --git a/user_manual/talk/images/share-screen-with-camera.png b/user_manual/talk/images/share-screen-with-camera.png index 549cda3b7d0..0af83ebe999 100644 Binary files a/user_manual/talk/images/share-screen-with-camera.png and b/user_manual/talk/images/share-screen-with-camera.png differ diff --git a/user_manual/talk/images/shared-recordings.png b/user_manual/talk/images/shared-recordings.png index c3f39fed088..4774098ee99 100644 Binary files a/user_manual/talk/images/shared-recordings.png and b/user_manual/talk/images/shared-recordings.png differ diff --git a/user_manual/talk/images/sidebar-chat.png b/user_manual/talk/images/sidebar-chat.png index 00357afee9b..772e7c91123 100644 Binary files a/user_manual/talk/images/sidebar-chat.png and b/user_manual/talk/images/sidebar-chat.png differ diff --git a/user_manual/talk/images/start-recording-before-call.png b/user_manual/talk/images/start-recording-before-call.png index 31b277c82d8..b6753be0ffa 100644 Binary files a/user_manual/talk/images/start-recording-before-call.png and b/user_manual/talk/images/start-recording-before-call.png differ diff --git a/user_manual/talk/images/start-recording-in-call.png b/user_manual/talk/images/start-recording-in-call.png index e08bb1e2a3f..79086d70506 100644 Binary files a/user_manual/talk/images/start-recording-in-call.png and b/user_manual/talk/images/start-recording-in-call.png differ diff --git a/user_manual/talk/images/stop-recording.png b/user_manual/talk/images/stop-recording.png index b92a48f0abb..7013bc5c5ba 100644 Binary files a/user_manual/talk/images/stop-recording.png and b/user_manual/talk/images/stop-recording.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png b/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png index c79cdbc2c1a..9df6d3a51b3 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png and b/user_manual/talk/images/talk-breakout-rooms-setup-dialog.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-setup.png b/user_manual/talk/images/talk-breakout-rooms-setup.png index 3a6bf9b5c7c..9135f126e33 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-setup.png and b/user_manual/talk/images/talk-breakout-rooms-setup.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png b/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png index a349c934140..757b2eb7bf1 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar-header.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png b/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png index 9a8335d379a..34463dc771f 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar-item.png differ diff --git a/user_manual/talk/images/talk-breakout-rooms-sidebar.png b/user_manual/talk/images/talk-breakout-rooms-sidebar.png index 8fb675f1be4..53f0d273357 100644 Binary files a/user_manual/talk/images/talk-breakout-rooms-sidebar.png and b/user_manual/talk/images/talk-breakout-rooms-sidebar.png differ diff --git a/user_manual/talk/images/talk-grid-view.png b/user_manual/talk/images/talk-grid-view.png index 09fbec201f1..2e47b1a5adb 100644 Binary files a/user_manual/talk/images/talk-grid-view.png and b/user_manual/talk/images/talk-grid-view.png differ diff --git a/user_manual/talk/images/talk-promoted-view.png b/user_manual/talk/images/talk-promoted-view.png index 60dc55957ac..32fb268bfbc 100644 Binary files a/user_manual/talk/images/talk-promoted-view.png and b/user_manual/talk/images/talk-promoted-view.png differ diff --git a/user_manual/talk/images/talk-settings.png b/user_manual/talk/images/talk-settings.png index 18e354fdd24..e7474675d54 100644 Binary files a/user_manual/talk/images/talk-settings.png and b/user_manual/talk/images/talk-settings.png differ diff --git a/user_manual/talk/images/talk-upload-files.png b/user_manual/talk/images/talk-upload-files.png index acaeeb99d38..cf8356b18c3 100644 Binary files a/user_manual/talk/images/talk-upload-files.png and b/user_manual/talk/images/talk-upload-files.png differ diff --git a/user_manual/talk/images/text-and-talk.png b/user_manual/talk/images/text-and-talk.png index ed4bb0c22d4..107bab89726 100644 Binary files a/user_manual/talk/images/text-and-talk.png and b/user_manual/talk/images/text-and-talk.png differ diff --git a/user_manual/talk/join_a_call_or_chat_as_guest.rst b/user_manual/talk/join_a_call_or_chat_as_guest.rst index eaaed3e41a9..004b561d8a1 100644 --- a/user_manual/talk/join_a_call_or_chat_as_guest.rst +++ b/user_manual/talk/join_a_call_or_chat_as_guest.rst @@ -12,14 +12,17 @@ Joining a chat If you received a link to a chat conversation, you can open it in your browser to join the chat. Here, you will be prompted to enter your name before joining. .. image:: images/guest-view.png + :width: 400px You can also change your name later by clicking the ``Edit`` button, located top-right. .. image:: images/change-name.png + :width: 400px Your camera and microphone settings can be found in the ``Settings`` menu. There you can also find a list of shortcuts you can use. .. image:: images/guest-settings.png + :width: 600px Joining a call -------------- @@ -27,15 +30,17 @@ Joining a call You can start a call any time with the ``Start call`` button. Other participants will get notified and can join the call. If somebody else has started a call already, the button will change in a green ``Join call`` button. .. image:: images/join-call.png + :width: 600px Before actually joining the call you will see a device check, where you can pick the right camera and microphone, enable background blur or even join with any devices. .. image:: images/device-settings-before-call.png - :width: 300px + :width: 400px During a call, you can find the Camera and Microphone settings in the ``...`` menu in the top bar. -.. image:: images/call-menu.png +.. image:: images/guest-call-menu.png + :width: 300px During a call, you can mute your microphone and disable your video with the buttons in the top-right, or using the shortcuts ``M`` to mute audio and ``V`` to disable video. You can also use the ``space bar`` to toggle mute. When you are muted, pressing space will unmute you so you can speak until you let go of the space bar. If you are unmuted, pressing space will mute you until you let go. @@ -52,3 +57,4 @@ More settings In the conversation menu you can choose to go full-screen. You can also do this by using the ``F`` key on your keyboard. In the conversation settings, you can find notification options and the full conversation description. .. image:: images/guest-room-menu.png + :width: 500px diff --git a/user_manual/talk/talk_basics.rst b/user_manual/talk/talk_basics.rst index acbde304690..4b56e58c624 100644 --- a/user_manual/talk/talk_basics.rst +++ b/user_manual/talk/talk_basics.rst @@ -22,7 +22,7 @@ You can create a direct, one-on-one chat by searching for the name of a user, a If you want to create a custom group conversation, click the button next to the search field and filters button and then on ``Create a new conversation``. .. image:: images/create-new-conversation.png - :width: 300px + :width: 400px You can then pick a name for the conversation, put a description, and set up an avatar for it (with uploaded photo or emoji), and select if the conversation should be open to external users and if other users on the server can see and join the conversation. @@ -37,6 +37,7 @@ In the second step, you get to add participants and finalize the creation of the After confirmation you will be redirected to the new conversation and can start communicating right away. .. image:: images/new-room.png + :width: 700px View all open conversations --------------------------- @@ -44,7 +45,7 @@ View all open conversations You can view all the conversations that you can join by clicking the button next to the search field and filters button and then on ``Join open conversations.`` .. image:: images/join-open-conversations.png - :width: 500px + :width: 400px Filter your conversations ------------------------- @@ -54,12 +55,12 @@ You can filter your conversations using the filter button located next to the se 2. Filter unread messages: This option allows you to view all unread messages in all joined conversations. .. image:: images/filters-menu.png - :width: 250px + :width: 400px You can then clear the filter from the filters menu. .. image:: images/clear-filter.png - :width: 250px + :width: 400px Sharing files in a chat ----------------------- @@ -69,6 +70,7 @@ You can share files in a chat in 3 ways. First, you can simply drag'n'drop them on the chat. .. image:: images/drag-and-drop.png + :width: 600px Second, you can select a file from your Nextcloud Files or a file manager by choosing the little paperclip and selecting where you'd like to pick the file from. @@ -76,7 +78,7 @@ Second, you can select a file from your Nextcloud Files or a file manager by cho :width: 500px .. image:: images/share-files-in-chat-selection.png - :width: 450px + :width: 600px You can add more files until you are done and decide to share the files. You can also add a text caption to your shared files, providing a brief description or context. @@ -86,6 +88,7 @@ You can add more files until you are done and decide to share the files. You can All users will be able to click the files to view, edit or download them, irrespective of them having a user account. Users with an account will have the file automatically shared with them while external guest users will get them shared as a public link. .. image:: images/editing-document-in-chat-room.png + :width: 600px Inserting emoji --------------- @@ -93,7 +96,7 @@ Inserting emoji You can add emoji using the picker on the left of the text input field. .. image:: images/emoji-picker.png - :width: 450px + :width: 400px Editing messages ---------------- @@ -101,7 +104,7 @@ Editing messages You can edit messages and captions to file shares up to 6 hours after sending. .. image:: images/message-editing.png - :width: 450px + :width: 600px Using Markdown --------------- @@ -177,12 +180,12 @@ Setting reminder on messages You can set reminders on specific messages. If there's an important message you want to be notified about later, simply hover over it and click on the reminder icon. .. image:: images/set-message-reminder.png - :width: 450px + :width: 400px In the submenu, you can select an appropriate time to receive a notification later. .. image:: images/configure-message-reminder.png - :width: 450px + :width: 400px Replying to messages and more ----------------------------- @@ -190,12 +193,12 @@ Replying to messages and more You can reply to a message using the arrow that appears when you hover a message. .. image:: images/reply.png - :width: 450px + :width: 600px In the ``...`` menu you can also choose to reply privately. This will open a one-on-one chat. .. image:: images/chat-message-menu.png - :width: 450px + :width: 600px Here you can also create a direct link to the message or mark it unread so you will scroll back there next time you enter the chat. When it is a file, you can view the file in Files. @@ -206,7 +209,7 @@ If you don't want to disturb anyone in the middle of the night, there is a silen While it is enabled, other participants will not receive notifications from your messages. .. image:: images/message-silent.png - :width: 450px + :width: 600px Managing a conversation ----------------------- @@ -216,16 +219,17 @@ You are always moderator in your new conversation. In the participant list you c Changing permissions of a user that joined a public conversation will also permanently add them to the conversation. .. image:: images/participant-menu.png + :width: 400px Moderators can configure the conversation. Select ``Conversation settings`` from the ``...`` menu of the conversation on the top to access the settings. .. image:: images/open-settings.png - :width: 300px + :width: 400px Here you can configure the description, guest access, if the conversation is visible to others on the server and more. .. image:: images/conversation-settings-dialog.png - :width: 450px + :width: 600px Messages expiration ------------------- @@ -234,6 +238,7 @@ A moderator can configure message expiration under the ``Conversation settings`` The available expiration durations are 1 hour, 8 hours, 1 day, 1 week, 4 weeks, or never (which is the default setting). .. image:: images/messages-expiration.png + :width: 500px Starting a call @@ -242,11 +247,12 @@ Starting a call When you're in a conversation, you can start a call any time with the ``Start call`` button. Other participants will get notified and can join the call. .. image:: images/device-settings-before-call.png - :width: 300px + :width: 400px If somebody else has started a call already, the button will change in a green ``Join call`` button. .. image:: images/join-call.png + :width: 600px During a call, you can mute your microphone and disable your video with the buttons on the right side of the top bar, or using the shortcuts ``M`` to mute audio and ``V`` to disable video. You can also use the space bar to toggle mute. When you are muted, pressing space will unmute you so you can speak until you let go of the space bar. If you are unmuted, pressing space will mute you until you let go. @@ -260,11 +266,12 @@ You can access your settings and choose a different webcam, microphone and other From media settings dialog, you can also change the background of your video. .. image:: images/background-settings-in-call.png - :width: 300px + :width: 400px You can change other settings in the ``Talk settings`` dialog. .. image:: images/talk-settings.png + :width: 600px Starting a screen share ----------------------- @@ -273,6 +280,7 @@ You can click the monitor icon on your video stream to share your screen. Depend If video from your camera is also available, other participants will see it in a small presenter view next to the screen share. .. image:: images/share-screen-with-camera.png + :width: 700px Changing view in a call ----------------------- @@ -280,11 +288,12 @@ Changing view in a call You can switch the view in a call with the little four-block icon in the top-right between promoted-view and grid view. The grid view will show everyone equally big and if the people do not fit on the screen, buttons will appear on the left and right that let you navigate. .. image:: images/talk-grid-view.png + :width: 700px The promoted view shows the speaker large and others in a row below. If the people do not fit on the screen, buttons will appear on the left and right that let you navigate. .. image:: images/talk-promoted-view.png - + :width: 700px diff --git a/user_manual/userpreferences.rst b/user_manual/userpreferences.rst index cfe7b2aa52c..f332dfe3e2e 100644 --- a/user_manual/userpreferences.rst +++ b/user_manual/userpreferences.rst @@ -33,6 +33,7 @@ include the following: * :doc:`user_2fa` * :doc:`userpreferences` * Choose the language for your Nextcloud interface +* Choose your preferred first day of the week * Links to desktop and mobile apps * Manage your Activity stream and notifications * Default folder to save new documents to diff --git a/user_manual_index.html b/user_manual_index.html index 6a98f8cb444..e0294e37ea8 100644 --- a/user_manual_index.html +++ b/user_manual_index.html @@ -3,7 +3,7 @@ Nextcloud Documentation - +