diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9daa3a2c31d..84c9f0eebe9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -59,7 +59,7 @@ updates: - dependency-name: "openproject-octicons_helper" - dependency-name: "openproject-primer_view_components" - package-ecosystem: "npm" - directory: "/blocknote/hocuspocus" + directory: "/extensions/op-blocknote-hocuspocus" schedule: interval: "weekly" target-branch: "dev" diff --git a/.github/workflows/hocuspocus-docker.yml b/.github/workflows/hocuspocus-docker.yml index 3a566e74369..cfc57cdf6cb 100644 --- a/.github/workflows/hocuspocus-docker.yml +++ b/.github/workflows/hocuspocus-docker.yml @@ -6,7 +6,7 @@ on: - dev - release/* paths: - - 'blocknote/hocuspocus/**' + - 'extensions/op-blocknote-hocuspocus/**' workflow_call: inputs: tags: @@ -16,7 +16,7 @@ on: defaults: run: - working-directory: ./blocknote/hocuspocus + working-directory: ./extensions/op-blocknote-hocuspocus jobs: build: @@ -44,7 +44,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - context: ./blocknote/hocuspocus + context: ./extensions/op-blocknote-hocuspocus push: true platforms: linux/amd64,linux/arm64/v8 tags: ${{ inputs.tags }} diff --git a/.github/workflows/hocuspocus-test.yml b/.github/workflows/hocuspocus-test.yml index d6d9730e564..acb86a32397 100644 --- a/.github/workflows/hocuspocus-test.yml +++ b/.github/workflows/hocuspocus-test.yml @@ -3,14 +3,14 @@ on: pull_request: types: [opened, reopened, synchronize] paths: - - 'blocknote/hocuspocus/**' + - 'extensions/op-blocknote-hocuspocus/**' permissions: contents: read defaults: run: - working-directory: ./blocknote/hocuspocus + working-directory: ./extensions/op-blocknote-hocuspocus jobs: units: @@ -26,7 +26,7 @@ jobs: with: node-version: '22.19' cache: npm - cache-dependency-path: blocknote/hocuspocus/package-lock.json + cache-dependency-path: extensions/op-blocknote-hocuspocus/package-lock.json - name: Install Dependencies id: npm-i diff --git a/config/static_links.yml b/config/static_links.yml index 9d83efe9423..25ace21aa98 100644 --- a/config/static_links.yml +++ b/config/static_links.yml @@ -87,7 +87,7 @@ glossary: github: href: https://github.com/opf/openproject hocuspocus_server_docs: - href: https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus + href: https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus ical_docs: href: https://www.openproject.org/docs/user-guide/calendar/#subscribe-to-a-calendar installation_guides: diff --git a/docker/dev/hocuspocus/docker-compose.override.example.yml b/docker/dev/hocuspocus/docker-compose.override.example.yml index db1031981a1..152c707c283 100644 --- a/docker/dev/hocuspocus/docker-compose.override.example.yml +++ b/docker/dev/hocuspocus/docker-compose.override.example.yml @@ -9,4 +9,4 @@ services: working_dir: /app command: sh -c "npm run dev" volumes: - - ../../../blocknote/hocuspocus:/app + - ../../../extensions/op-blocknote-hocuspocus:/app diff --git a/docs/installation-and-operations/configuration/README.md b/docs/installation-and-operations/configuration/README.md index c3bce6cf678..fc6ac60120c 100644 --- a/docs/installation-and-operations/configuration/README.md +++ b/docs/installation-and-operations/configuration/README.md @@ -153,7 +153,7 @@ Configuring OpenProject through environment variables is described in detail [in #### Real-time collaboration -The AIO (all-in-one) container comes bundled with the [hocuspocus](https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus) server needed +The AIO (all-in-one) container comes bundled with the [hocuspocus](https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus) server needed for the real-time collaboration feature for documents. This is controlled via the following two environment variables, shown with their default values. diff --git a/docs/installation-and-operations/system-requirements/README.md b/docs/installation-and-operations/system-requirements/README.md index fd858e9334c..d8fe1639098 100644 --- a/docs/installation-and-operations/system-requirements/README.md +++ b/docs/installation-and-operations/system-requirements/README.md @@ -192,7 +192,7 @@ The [package-based installation](../installation/packaged) requires one of the f Both the package and docker based installations will install and setup the the [Ruby runtime](https://www.ruby-lang.org/en/), as well as the [Puma application server](https://puma.io/) that are required by OpenProject to run. For the [packaged installation](../installation/packaged/) and the [all-in-one docker container](../installation/docker#all-in-one-container) container, an [Apache](https://httpd.apache.org/) web server and a [PostgreSQL 17](https://www.postgresql.org/) database are installed. -The all-in-one container will only additionally install [hocuspocus](https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus), which is required for the [real-time collaboration](../../user-guide/documents/#collaborative-editing) feature in OpenProject. +The all-in-one container will only additionally install [hocuspocus](https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus), which is required for the [real-time collaboration](../../user-guide/documents/#collaborative-editing) feature in OpenProject. ## Client OpenProject supports the latest versions of the major browsers. diff --git a/docs/system-admin-guide/documents/README.md b/docs/system-admin-guide/documents/README.md index 34d5e3592fd..0c0af3f821f 100644 --- a/docs/system-admin-guide/documents/README.md +++ b/docs/system-admin-guide/documents/README.md @@ -13,14 +13,14 @@ This page describes the available settings for the **Documents** module in the O > [!NOTE] > -> Prior to OpenProject 17.0 document types were called *categories* and were configured under *Administration → Files → Categories*. +> Prior to OpenProject 17.0 document types were called *categories* and were configured under *Administration → Files → Categories*. To create or edit document categories in OpenProject, navigate to *Administration → Documents*. Here, you will automatically see all existing document types: - The column **Type** lists all existing document type names - The column **Documents** shows the number of documents of this specific type -You can adjust the items within the list by using the options behind the **More (three dots)** menu on the right side. You can also rearrange the order by using the drag-and-drop handle on the left. +You can adjust the items within the list by using the options behind the **More (three dots)** menu on the right side. You can also rearrange the order by using the drag-and-drop handle on the left. ![Document types overview in OpenProject administration](openproject_system_guide_documents_types_overview.png) @@ -28,7 +28,7 @@ You can adjust the items within the list by using the options behind the **More To create a new document type, select the **+ Add** button in the top right corner. -You can then name the new type, and activate it. You can optionally set this type to be the **Default** value. +You can then name the new type, and activate it. You can optionally set this type to be the **Default** value. > [!NOTE] > Making this type default will override the previous default priority. @@ -48,8 +48,8 @@ To remove a document type, open the **More (three dots)** menu on the right end ![Delete a document type in OpenProject administration](openproject_system_guide_documents_types_delete_button.png) -You will see a dialogue informing you of the consequences. -- If a document type is unused, this has no significant consequences. +You will see a dialogue informing you of the consequences. +- If a document type is unused, this has no significant consequences. ![A warning message when deleting an unused document type in OpenProject](openproject_system_guide_documents_types_delete_message_type_unused.png) @@ -65,7 +65,7 @@ You will see a dialogue informing you of the consequences. Real-time collaboration for OpenProject’s **Documents** module was introduced with the 17.0 release. When enabled, it allows multiple users to edit the same document at the same time. Changes are synchronized instantly, and users can see each other’s cursors and edits as they occur. This improves collaboration, especially for teams working on shared documentation or meeting notes. -From a technical perspective, real-time collaboration relies on a running [Hocuspocus server](https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus), which handles synchronization between users. OpenProject connects to this service to provide a seamless collaborative editing experience within documents. +From a technical perspective, real-time collaboration relies on a running [Hocuspocus server](https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus), which handles synchronization between users. OpenProject connects to this service to provide a seamless collaborative editing experience within documents. ![Administration settings for real-time documents collaboration in OpenProject](openproject_system_guide_documents_real_time_collaboration.png) @@ -76,7 +76,7 @@ From a technical perspective, real-time collaboration relies on a running [Hocus > - Containerized installations > - Cloud-hosted installations > -> Packaged installations (DEB/RPM) require additional manual setup. This includes installing and configuring a [Hocuspocus server](https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus) to enable real-time collaboration. +> Packaged installations (DEB/RPM) require additional manual setup. This includes installing and configuring a [Hocuspocus server](https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus) to enable real-time collaboration. ### Enable real-time collaboration for packaged installations @@ -113,8 +113,8 @@ docker compose up -d #### 2. Configure Apache -> [!NOTE] -> This part of the docs assumes that you are using the generated Apache config by the OpenProject wizard +> [!NOTE] +> This part of the docs assumes that you are using the generated Apache config by the OpenProject wizard Create `/etc/openproject/addons/apache2/custom/vhost/hocuspocus.conf` with the following content: @@ -139,16 +139,16 @@ sudo service apache2 restart **For RHEL/CentOS-based systems, run the following command:** ```shell -sudo service httpd restart +sudo service httpd restart ``` #### 3. Enable real-time collaboration -Manually configure the server URL & secret in the *Documents* administration settings in OpenProject. -Here you need to provide the URL in the following format: `wss:///hocuspocus`. -If you are using HTTP in your instance, the protocol has to be `ws://` instead of `wss://`. +Manually configure the server URL & secret in the *Documents* administration settings in OpenProject. +Here you need to provide the URL in the following format: `wss:///hocuspocus`. +If you are using HTTP in your instance, the protocol has to be `ws://` instead of `wss://`. -> [!NOTE] +> [!NOTE] > The secret must be identical in both op-blocknote-hocuspocus and OpenProject. diff --git a/blocknote/hocuspocus/.gitignore b/extensions/op-blocknote-hocuspocus/.gitignore similarity index 100% rename from blocknote/hocuspocus/.gitignore rename to extensions/op-blocknote-hocuspocus/.gitignore diff --git a/blocknote/hocuspocus/Dockerfile b/extensions/op-blocknote-hocuspocus/Dockerfile similarity index 100% rename from blocknote/hocuspocus/Dockerfile rename to extensions/op-blocknote-hocuspocus/Dockerfile diff --git a/blocknote/hocuspocus/README.md b/extensions/op-blocknote-hocuspocus/README.md similarity index 98% rename from blocknote/hocuspocus/README.md rename to extensions/op-blocknote-hocuspocus/README.md index 71ec1d52882..80573d37183 100644 --- a/blocknote/hocuspocus/README.md +++ b/extensions/op-blocknote-hocuspocus/README.md @@ -12,7 +12,7 @@ A real-time collaborative editing server for [OpenProject](https://www.openproje ```bash # Clone the OpenProject repository git clone https://github.com/opf/openproject.git -cd openproject/blocknote/hocuspocus +cd openproject/extensions/op-blocknote-hocuspocus # Install dependencies npm install diff --git a/blocknote/hocuspocus/eslint.config.mjs b/extensions/op-blocknote-hocuspocus/eslint.config.mjs similarity index 100% rename from blocknote/hocuspocus/eslint.config.mjs rename to extensions/op-blocknote-hocuspocus/eslint.config.mjs diff --git a/blocknote/hocuspocus/package-lock.json b/extensions/op-blocknote-hocuspocus/package-lock.json similarity index 100% rename from blocknote/hocuspocus/package-lock.json rename to extensions/op-blocknote-hocuspocus/package-lock.json diff --git a/blocknote/hocuspocus/package.json b/extensions/op-blocknote-hocuspocus/package.json similarity index 91% rename from blocknote/hocuspocus/package.json rename to extensions/op-blocknote-hocuspocus/package.json index 31621dca33a..8f650edaf31 100644 --- a/blocknote/hocuspocus/package.json +++ b/extensions/op-blocknote-hocuspocus/package.json @@ -18,7 +18,7 @@ "bugs": { "url": "https://github.com/opf/openproject/issues" }, - "homepage": "https://github.com/opf/openproject/tree/dev/blocknote/hocuspocus#readme", + "homepage": "https://github.com/opf/openproject/tree/dev/extensions/op-blocknote-hocuspocus#readme", "engines": { "node": ">=22.18" }, diff --git a/blocknote/hocuspocus/src/closeEvents.ts b/extensions/op-blocknote-hocuspocus/src/closeEvents.ts similarity index 100% rename from blocknote/hocuspocus/src/closeEvents.ts rename to extensions/op-blocknote-hocuspocus/src/closeEvents.ts diff --git a/blocknote/hocuspocus/src/extensions/openProjectApi.ts b/extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts similarity index 100% rename from blocknote/hocuspocus/src/extensions/openProjectApi.ts rename to extensions/op-blocknote-hocuspocus/src/extensions/openProjectApi.ts diff --git a/blocknote/hocuspocus/src/index.ts b/extensions/op-blocknote-hocuspocus/src/index.ts similarity index 100% rename from blocknote/hocuspocus/src/index.ts rename to extensions/op-blocknote-hocuspocus/src/index.ts diff --git a/blocknote/hocuspocus/src/services/decryptTokenService.ts b/extensions/op-blocknote-hocuspocus/src/services/decryptTokenService.ts similarity index 100% rename from blocknote/hocuspocus/src/services/decryptTokenService.ts rename to extensions/op-blocknote-hocuspocus/src/services/decryptTokenService.ts diff --git a/blocknote/hocuspocus/src/services/resourceService.ts b/extensions/op-blocknote-hocuspocus/src/services/resourceService.ts similarity index 100% rename from blocknote/hocuspocus/src/services/resourceService.ts rename to extensions/op-blocknote-hocuspocus/src/services/resourceService.ts diff --git a/blocknote/hocuspocus/src/services/tokenValidationService.ts b/extensions/op-blocknote-hocuspocus/src/services/tokenValidationService.ts similarity index 100% rename from blocknote/hocuspocus/src/services/tokenValidationService.ts rename to extensions/op-blocknote-hocuspocus/src/services/tokenValidationService.ts diff --git a/blocknote/hocuspocus/src/types.ts b/extensions/op-blocknote-hocuspocus/src/types.ts similarity index 100% rename from blocknote/hocuspocus/src/types.ts rename to extensions/op-blocknote-hocuspocus/src/types.ts diff --git a/blocknote/hocuspocus/test/closeEvents.test.ts b/extensions/op-blocknote-hocuspocus/test/closeEvents.test.ts similarity index 100% rename from blocknote/hocuspocus/test/closeEvents.test.ts rename to extensions/op-blocknote-hocuspocus/test/closeEvents.test.ts diff --git a/blocknote/hocuspocus/test/extensions/openProjectApi.test.ts b/extensions/op-blocknote-hocuspocus/test/extensions/openProjectApi.test.ts similarity index 100% rename from blocknote/hocuspocus/test/extensions/openProjectApi.test.ts rename to extensions/op-blocknote-hocuspocus/test/extensions/openProjectApi.test.ts diff --git a/blocknote/hocuspocus/test/extensions/openProjectApi_withStubbedEnv.test.ts b/extensions/op-blocknote-hocuspocus/test/extensions/openProjectApi_withStubbedEnv.test.ts similarity index 100% rename from blocknote/hocuspocus/test/extensions/openProjectApi_withStubbedEnv.test.ts rename to extensions/op-blocknote-hocuspocus/test/extensions/openProjectApi_withStubbedEnv.test.ts diff --git a/blocknote/hocuspocus/test/helpers/tokenHelper.ts b/extensions/op-blocknote-hocuspocus/test/helpers/tokenHelper.ts similarity index 100% rename from blocknote/hocuspocus/test/helpers/tokenHelper.ts rename to extensions/op-blocknote-hocuspocus/test/helpers/tokenHelper.ts diff --git a/blocknote/hocuspocus/test/mocks/handlers.ts b/extensions/op-blocknote-hocuspocus/test/mocks/handlers.ts similarity index 100% rename from blocknote/hocuspocus/test/mocks/handlers.ts rename to extensions/op-blocknote-hocuspocus/test/mocks/handlers.ts diff --git a/blocknote/hocuspocus/test/mocks/node.ts b/extensions/op-blocknote-hocuspocus/test/mocks/node.ts similarity index 100% rename from blocknote/hocuspocus/test/mocks/node.ts rename to extensions/op-blocknote-hocuspocus/test/mocks/node.ts diff --git a/blocknote/hocuspocus/test/services/decryptTokenService.test.ts b/extensions/op-blocknote-hocuspocus/test/services/decryptTokenService.test.ts similarity index 100% rename from blocknote/hocuspocus/test/services/decryptTokenService.test.ts rename to extensions/op-blocknote-hocuspocus/test/services/decryptTokenService.test.ts diff --git a/blocknote/hocuspocus/test/services/resourceService.test.ts b/extensions/op-blocknote-hocuspocus/test/services/resourceService.test.ts similarity index 100% rename from blocknote/hocuspocus/test/services/resourceService.test.ts rename to extensions/op-blocknote-hocuspocus/test/services/resourceService.test.ts diff --git a/blocknote/hocuspocus/test/setup.ts b/extensions/op-blocknote-hocuspocus/test/setup.ts similarity index 100% rename from blocknote/hocuspocus/test/setup.ts rename to extensions/op-blocknote-hocuspocus/test/setup.ts diff --git a/blocknote/hocuspocus/tsconfig.json b/extensions/op-blocknote-hocuspocus/tsconfig.json similarity index 100% rename from blocknote/hocuspocus/tsconfig.json rename to extensions/op-blocknote-hocuspocus/tsconfig.json diff --git a/blocknote/hocuspocus/vitest.config.mjs b/extensions/op-blocknote-hocuspocus/vitest.config.mjs similarity index 100% rename from blocknote/hocuspocus/vitest.config.mjs rename to extensions/op-blocknote-hocuspocus/vitest.config.mjs