Skip to content

Public Markdown previews fail with HTTP 500 when Deck is enabled: null userId in TextContextProviderFactory #8633

Description

@sselka

Title: Public Markdown previews fail with HTTP 500 when Deck is enabled: null userId in TextContextProviderFactory

<!--
Thanks for reporting issues back!

Guidelines for submitting issues:

* Please search the existing issues first, it's likely that your issue was already reported or even fixed.

* SECURITY: Report any potential security bug to us via our HackerOne page (
https://hackerone.com/nextcloud) following our security policy (https://nextcloud.com/security/) instead of filing an issue in our bug tracker.

* The issues in other components should be reported in their respective repositories: You will find them in our GitHub Organization (
https://github.com/nextcloud/)

* You can also use the Issue Template app to prefill most of the required information:
https://apps.nextcloud.com/apps/issuetemplate
-->

<!--- Please keep this note for other contributors -->

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.

  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.

  • Subscribe to receive notifications on status change and new comments.

Describe the bug

Opening a Markdown file through a public, read-only folder share gets stuck on the loading screen when Deck is enabled.

The file is a regular Markdown document, unrelated to any Deck card. Disabling Deck makes the same anonymous preview work immediately. Opening the file as an authenticated user also works.

The public Text session is created successfully, but subsequent sync and save requests fail with HTTP 500:

OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given

The following behavior was verified:

Deck | Access | Result -- | -- | -- Enabled | Anonymous public share | Loading screen; HTTP 500 Disabled | Anonymous public share | Works Enabled | Authenticated user | Works

Possible cause: the implementation introduced in PR #8558 injects TextContextProviderFactory into RegisterTextContextEventListener, although the listener only registers the factory's class name and does not use the injected instance. This appears to instantiate the factory prematurely during context registration, including for ordinary public file sessions. Its constructor requires a non-null string $userId, which is unavailable for anonymous requests.

Removing the unused constructor dependency from the registration listener looks like a possible fix, but this has not been tested locally.

To Reproduce

Steps to reproduce the behavior:

  1. Enable Deck.

  2. Share a folder containing a Markdown file using a public, read-only link.

  3. Open the link without logging in.

  4. Navigate to the Markdown file and click it.

  5. Observe the persistent loading screen and HTTP 500 responses from the public Text sync and save endpoints.

  6. Disable Deck and repeat the anonymous access: the same file displays successfully.

The failing anonymous access was reproduced from a separate virtual machine.

Expected behavior

Public Markdown previews should work while Deck is enabled, without requiring an authenticated Nextcloud user.

Screenshots

Not attached. Server exceptions and browser network results are included below.

Client details:

  • OS: Ubuntu Linux x86_64

  • Browser: Firefox

  • Version: 158.0

  • Device: Virtual machine

<details>
<summary>Server details</summary>

<!--
You can use the Issue Template application to prefill most of the required information:
https://apps.nextcloud.com/apps/issuetemplate
-->

Operating system:

Arch Linux.

Web server:

Traefik reverse proxy in a Docker Compose deployment. Captured HTTP responses contain the server header nginx.

The deployment consists of a reverse proxy, a Nextcloud container, and a separate PostgreSQL container.

Database:

PostgreSQL, using the Docker image postgres:latest. The exact runtime version has not been recorded.

PHP version:

8.3.36, according to the HTTP response header.

Nextcloud version: (see Nextcloud admin page)

35.0.1; internal version: 35.0.1.1.

Where did you install Nextcloud from:

Arch Linux package installed using:

pacman -S nextcloud

The deployment is managed through Docker Compose.

Signing status:

The integrity check reports two extra files in the Nextcloud root directory:

Results
=======
- core
    - EXTRA_FILE
        - supervisord.pid
        - supervisord.log

List of activated apps:

Enabled:
  - activity: 8.0.0
  - admin_audit: 2.0.0
  - app_api: 35.0.0
  - appstore: 2.0.0
  - bruteforcesettings: 8.0.0
  - calendar: 6.6.3
  - circles: 35.0.0
  - cloud_federation_api: 2.0.0
  - comments: 2.0.0
  - contacts: 8.9.2
  - contactsinteraction: 2.0.0
  - dashboard: 8.0.0
  - dav: 2.0.0
  - deck: 1.19.1
  - drawio: 4.3.9
  - federatedfilesharing: 2.0.0
  - federation: 2.0.0
  - files: 3.0.0
  - files_downloadlimit: 5.3.0
  - files_lock: 35.0.1
  - files_pdfviewer: 8.0.0
  - files_reminders: 2.0.0
  - files_sharing: 2.0.0
  - files_trashbin: 2.0.0
  - files_versions: 2.0.0
  - logreader: 8.0.0
  - lookup_server_connector: 2.0.0
  - nextcloud_announcements: 7.0.0
  - notifications: 8.0.1
  - oauth2: 2.0.0
  - office: 1.1.0
  - password_policy: 7.0.0
  - photos: 8.0.0
  - polls: 9.3.0
  - privacy: 7.0.0
  - profile: 2.0.0
  - provisioning_api: 2.0.0
  - recommendations: 8.0.0
  - related_resources: 6.0.0
  - richdocuments: 12.0.1
  - serverinfo: 7.0.0
  - settings: 2.0.0
  - sharebymail: 2.0.0
  - sharing: 1.0.4
  - spreed: 25.0.6
  - support: 7.0.0
  - survey_client: 7.0.0
  - systemtags: 2.0.0
  - text: 9.0.1
  - theming: 3.0.0
  - twofactor_backupcodes: 2.0.0
  - twofactor_totp: 17.1.0
  - updatenotification: 2.0.0
  - user_status: 2.0.0
  - viewer: 8.0.0
  - weather_status: 2.0.0
  - webhook_listeners: 2.0.0
  - workflowengine: 3.0.0
Disabled:
  - encryption: 3.0.1
  - files_external: 2.0.0
  - firstrunwizard: 8.0.0 (installed 5.0.0-dev.0)
  - suspicious_login: 13.0.0
  - twofactor_nextcloud_notification: 9.0.0
  - user_ldap: 2.0.0

Nextcloud configuration:

Configuration supplied during troubleshooting, with identifying values and credentials redacted:

<?php
$CONFIG = array (
    'apps_paths' => array (
        0 => array (
            'path' => '/usr/share/webapps/nextcloud/apps',
            'url' => '/apps',
            'writable' => false,
        ),
        1 => array (
            'path' => '/var/www/nextcloud/apps',
            'url' => '/wapps',
            'writable' => true,
        ),
    ),
    'instanceid' => '[REDACTED]',
    'passwordsalt' => '[REDACTED]',
    'secret' => '[REDACTED]',
    'trusted_domains' => array (
        0 => 'cloud.example.com',
    ),
    'datadirectory' => '/opt/owncloud-data',
    'overwrite.cli.url' => 'https://cloud.example.com',
    'installed' => true,
    'memcache.local' => '\OC\Memcache\APCu',
    'memcache.locking' => '\OC\Memcache\Redis',
    'redis' => array (
        'host' => 'redis',
        'port' => 6379,
        'password' => '[REDACTED]',
    ),
    'filelocking.enabled' => 'true',
    'dbtype' => 'pgsql',
    'version' => '35.0.1.1',
    'overwriteprotocol' => 'https',
    'dbname' => '[REDACTED]',
    'dbhost' => '[REDACTED]',
    'dbport' => '',
    'dbtableprefix' => 'oc_',
    'dbuser' => '[REDACTED]',
    'dbpassword' => '[REDACTED]',
    'logtimezone' => 'UTC',
    'theme' => '',
    'loglevel' => 2,
    'maintenance' => false,
);

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

LDAP is not used; user_ldap is disabled.

</details>

<details>
<summary>Logs</summary>

Nextcloud log (data/nextcloud.log)

Exception logged for the public sync request:

[index] Error:
OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given
in file '/usr/share/webapps/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20

POST /apps/text/public/session/<fileId>/sync

The same exception is logged for the public save requests:

[index] Error:
OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given
in file '/usr/share/webapps/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20

POST /apps/text/public/session/<fileId>/save

Browser log

Sanitized network excerpt:

PROPFIND /public.php/dav/files/<shareToken>/<path>/<file>.md
→ HTTP 207; content type: text/markdown

PUT /apps/text/public/session/<fileId>/create
→ HTTP 200
→ Session response contains readOnly: true

POST /apps/text/public/session/<fileId>/sync
→ HTTP 500; Nextcloud "Internal Server Error" page

POST /apps/text/public/session/<fileId>/save
→ HTTP 500; Nextcloud "Internal Server Error" page

Disabling Deck restores the anonymous Markdown preview.

</details>

Title: Public Markdown previews fail with HTTP 500 when Deck is enabled: null userId in TextContextProviderFactory

How to use GitHub

Describe the bug

Opening a Markdown file through a public, read-only folder share gets stuck on the loading screen when Deck is enabled.

The file is a regular Markdown document, unrelated to any Deck card. Disabling Deck makes the same anonymous preview work immediately. Opening the file as an authenticated user also works.

The public Text session is created successfully, but subsequent sync and save requests fail with HTTP 500:

OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given

The following behavior was verified:

Deck Access Result
Enabled Anonymous public share Loading screen; HTTP 500
Disabled Anonymous public share Works
Enabled Authenticated user Works

Possible cause: the implementation introduced in [PR #8558](https://github.com/nextcloud/deck/pull/8558/files) injects TextContextProviderFactory into RegisterTextContextEventListener, although the listener only registers the factory's class name and does not use the injected instance. This appears to instantiate the factory prematurely during context registration, including for ordinary public file sessions. Its constructor requires a non-null string $userId, which is unavailable for anonymous requests.

Removing the unused constructor dependency from the registration listener looks like a possible fix, but this has not been tested locally.

To Reproduce

Steps to reproduce the behavior:

  1. Enable Deck.
  2. Share a folder containing a Markdown file using a public, read-only link.
  3. Open the link without logging in.
  4. Navigate to the Markdown file and click it.
  5. Observe the persistent loading screen and HTTP 500 responses from the public Text sync and save endpoints.
  6. Disable Deck and repeat the anonymous access: the same file displays successfully.

The failing anonymous access was reproduced from a separate virtual machine.

Expected behavior

Public Markdown previews should work while Deck is enabled, without requiring an authenticated Nextcloud user.

Screenshots

Not attached. Server exceptions and browser network results are included below.

Client details:

  • OS: Ubuntu Linux x86_64
  • Browser: Firefox
  • Version: 158.0
  • Device: Virtual machine
Server details

Operating system:

Arch Linux.

Web server:

Traefik reverse proxy in a Docker Compose deployment. Captured HTTP responses contain the server header nginx.

The deployment consists of a reverse proxy, a Nextcloud container, and a separate PostgreSQL container.

Database:

PostgreSQL, using the Docker image postgres:latest. The exact runtime version has not been recorded.

PHP version:

8.3.36, according to the HTTP response header.

Nextcloud version: (see Nextcloud admin page)

35.0.1; internal version: 35.0.1.1.

Where did you install Nextcloud from:

Arch Linux package installed using:

pacman -S nextcloud

The deployment is managed through Docker Compose.

Signing status:

The integrity check reports two extra files in the Nextcloud root directory:

Results
=======
- core
    - EXTRA_FILE
        - supervisord.pid
        - supervisord.log

List of activated apps:

Enabled:
  - activity: 8.0.0
  - admin_audit: 2.0.0
  - app_api: 35.0.0
  - appstore: 2.0.0
  - bruteforcesettings: 8.0.0
  - calendar: 6.6.3
  - circles: 35.0.0
  - cloud_federation_api: 2.0.0
  - comments: 2.0.0
  - contacts: 8.9.2
  - contactsinteraction: 2.0.0
  - dashboard: 8.0.0
  - dav: 2.0.0
  - deck: 1.19.1
  - drawio: 4.3.9
  - federatedfilesharing: 2.0.0
  - federation: 2.0.0
  - files: 3.0.0
  - files_downloadlimit: 5.3.0
  - files_lock: 35.0.1
  - files_pdfviewer: 8.0.0
  - files_reminders: 2.0.0
  - files_sharing: 2.0.0
  - files_trashbin: 2.0.0
  - files_versions: 2.0.0
  - logreader: 8.0.0
  - lookup_server_connector: 2.0.0
  - nextcloud_announcements: 7.0.0
  - notifications: 8.0.1
  - oauth2: 2.0.0
  - office: 1.1.0
  - password_policy: 7.0.0
  - photos: 8.0.0
  - polls: 9.3.0
  - privacy: 7.0.0
  - profile: 2.0.0
  - provisioning_api: 2.0.0
  - recommendations: 8.0.0
  - related_resources: 6.0.0
  - richdocuments: 12.0.1
  - serverinfo: 7.0.0
  - settings: 2.0.0
  - sharebymail: 2.0.0
  - sharing: 1.0.4
  - spreed: 25.0.6
  - support: 7.0.0
  - survey_client: 7.0.0
  - systemtags: 2.0.0
  - text: 9.0.1
  - theming: 3.0.0
  - twofactor_backupcodes: 2.0.0
  - twofactor_totp: 17.1.0
  - updatenotification: 2.0.0
  - user_status: 2.0.0
  - viewer: 8.0.0
  - weather_status: 2.0.0
  - webhook_listeners: 2.0.0
  - workflowengine: 3.0.0
Disabled:
  - encryption: 3.0.1
  - files_external: 2.0.0
  - firstrunwizard: 8.0.0 (installed 5.0.0-dev.0)
  - suspicious_login: 13.0.0
  - twofactor_nextcloud_notification: 9.0.0
  - user_ldap: 2.0.0

Nextcloud configuration:

Configuration supplied during troubleshooting, with identifying values and credentials redacted:

<?php
$CONFIG = array (
    'apps_paths' => array (
        0 => array (
            'path' => '/usr/share/webapps/nextcloud/apps',
            'url' => '/apps',
            'writable' => false,
        ),
        1 => array (
            'path' => '/var/www/nextcloud/apps',
            'url' => '/wapps',
            'writable' => true,
        ),
    ),
    'instanceid' => '[REDACTED]',
    'passwordsalt' => '[REDACTED]',
    'secret' => '[REDACTED]',
    'trusted_domains' => array (
        0 => 'cloud.example.com',
    ),
    'datadirectory' => '/opt/owncloud-data',
    'overwrite.cli.url' => 'https://cloud.example.com',
    'installed' => true,
    'memcache.local' => '\OC\Memcache\APCu',
    'memcache.locking' => '\OC\Memcache\Redis',
    'redis' => array (
        'host' => 'redis',
        'port' => 6379,
        'password' => '[REDACTED]',
    ),
    'filelocking.enabled' => 'true',
    'dbtype' => 'pgsql',
    'version' => '35.0.1.1',
    'overwriteprotocol' => 'https',
    'dbname' => '[REDACTED]',
    'dbhost' => '[REDACTED]',
    'dbport' => '',
    'dbtableprefix' => 'oc_',
    'dbuser' => '[REDACTED]',
    'dbpassword' => '[REDACTED]',
    'logtimezone' => 'UTC',
    'theme' => '',
    'loglevel' => 2,
    'maintenance' => false,
);

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

LDAP is not used; user_ldap is disabled.

Logs

Nextcloud log (data/nextcloud.log)

Exception logged for the public sync request:

[index] Error:
OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given
in file '/usr/share/webapps/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20

POST /apps/text/public/session/<fileId>/sync

The same exception is logged for the public save requests:

[index] Error:
OCA\Deck\Provider\TextContextProviderFactory::__construct():
Argument #5 ($userId) must be of type string, null given
in file '/usr/share/webapps/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20

POST /apps/text/public/session/<fileId>/save

Browser log

Sanitized network excerpt:

PROPFIND /public.php/dav/files/<shareToken>/<path>/<file>.md
→ HTTP 207; content type: text/markdown

PUT /apps/text/public/session/<fileId>/create
→ HTTP 200
→ Session response contains readOnly: true

POST /apps/text/public/session/<fileId>/sync
→ HTTP 500; Nextcloud "Internal Server Error" page

POST /apps/text/public/session/<fileId>/save
→ HTTP 500; Nextcloud "Internal Server Error" page

Disabling Deck restores the anonymous Markdown preview.

Activity

  1. added theissue type on Oct 29, 2026
  2. gyarakilaszlo commented on Oct 30, 2026

    @gyarakilaszlo

    I can confirm this issue. When the Deck is enabled, public shared Markdown text files cannot be opened. I can see this error message in the Nextcloud log:

    {
    "reqId": "N1K1ESsdVpRLXLnp9GgG",
    "level": 3,
    "time": "2026-10-30T12:59:16+00:00",
    "remoteAddr": "xxx.xxx.xxx.xxx",
    "user": "--",
    "app": "index",
    "method": "POST",
    "url": "/apps/text/public/session/146394573391282177/save",
    "scriptName": "/index.php",
    "message": "OCA\Deck\Provider\TextContextProviderFactory::__construct(): Argument #5 ($userId) must be of type string, null given in file '/var/www/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20",
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:159.0) Gecko/20100101 Firefox/159.0",
    "version": "35.0.2.2",
    "exception": {
    "Exception": "Exception",
    "Message": "OCA\Deck\Provider\TextContextProviderFactory::__construct(): Argument #5 ($userId) must be of type string, null given in file '/var/www/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20",
    "Code": 0,
    "Trace": [
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/App.php",
    "line": 138,
    "function": "dispatch",
    "class": "OC\AppFramework\Http\Dispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/Route/Router.php",
    "line": 324,
    "function": "main",
    "class": "OC\AppFramework\App",
    "type": "::"
    },
    {
    "file": "/var/www/nextcloud/lib/OC.php",
    "line": 1238,
    "function": "match",
    "class": "OC\Route\Router",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/index.php",
    "line": 28,
    "function": "handleRequest",
    "class": "OC",
    "type": "::"
    },
    {
    "file": "/var/www/nextcloud/lib/OC.php",
    "line": 1403,
    "function": "{closure}",
    "args": [
    "*** sensitive parameters replaced "
    ]
    },
    {
    "file": "/var/www/nextcloud/index.php",
    "line": 25,
    "function": "handleRequests",
    "class": "OC",
    "type": "::"
    }
    ],
    "File": "/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php",
    "Line": 124,
    "Previous": {
    "Exception": "TypeError",
    "Message": "OCA\Deck\Provider\TextContextProviderFactory::__construct(): Argument #5 ($userId) must be of type string, null given",
    "Code": 0,
    "Trace": [
    {
    "function": "__construct",
    "class": "OCA\Deck\Provider\TextContextProviderFactory",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 75,
    "function": "newInstanceArgs",
    "class": "ReflectionClass",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 133,
    "function": "buildClass",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 160,
    "function": "resolve",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
    "line": 378,
    "function": "query",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
    "line": 347,
    "function": "queryNoFallback",
    "class": "OC\AppFramework\DependencyInjection\DIContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 96,
    "function": "query",
    "class": "OC\AppFramework\DependencyInjection\DIContainer",
    "type": "->"
    },
    {
    "function": "OC\AppFramework\Utility\{closure}",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->",
    "args": [
    "
    sensitive parameters replaced "
    ]
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 83,
    "function": "array_map"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 75,
    "function": "buildClassConstructorParameters",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 133,
    "function": "buildClass",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 160,
    "function": "resolve",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php",
    "line": 378,
    "function": "query",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/ServerContainer.php",
    "line": 140,
    "function": "queryNoFallback",
    "class": "OC\AppFramework\DependencyInjection\DIContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php",
    "line": 46,
    "function": "query",
    "class": "OC\ServerContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php",
    "line": 41,
    "function": "get",
    "class": "OC\AppFramework\Utility\SimpleContainer",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
    "line": 206,
    "function": "__invoke",
    "class": "OC\EventDispatcher\ServiceEventListener",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
    "line": 56,
    "function": "callListeners",
    "class": "Symfony\Component\EventDispatcher\EventDispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php",
    "line": 74,
    "function": "dispatch",
    "class": "Symfony\Component\EventDispatcher\EventDispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php",
    "line": 87,
    "function": "dispatch",
    "class": "OC\EventDispatcher\EventDispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/apps/text/lib/Context/ContextManager.php",
    "line": 34,
    "function": "dispatchTyped",
    "class": "OC\EventDispatcher\EventDispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/apps/text/lib/Context/ContextManager.php",
    "line": 55,
    "function": "getContexts",
    "class": "OCA\Text\Context\ContextManager",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/apps/text/lib/Service/ApiService.php",
    "line": 197,
    "function": "getContext",
    "class": "OCA\Text\Context\ContextManager",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/apps/text/lib/Controller/PublicSessionController.php",
    "line": 112,
    "function": "save",
    "class": "OCA\Text\Service\ApiService",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php",
    "line": 198,
    "function": "save",
    "class": "OCA\Text\Controller\PublicSessionController",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/Http/Dispatcher.php",
    "line": 86,
    "function": "executeController",
    "class": "OC\AppFramework\Http\Dispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/AppFramework/App.php",
    "line": 138,
    "function": "dispatch",
    "class": "OC\AppFramework\Http\Dispatcher",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/lib/private/Route/Router.php",
    "line": 324,
    "function": "main",
    "class": "OC\AppFramework\App",
    "type": "::"
    },
    {
    "file": "/var/www/nextcloud/lib/OC.php",
    "line": 1238,
    "function": "match",
    "class": "OC\Route\Router",
    "type": "->"
    },
    {
    "file": "/var/www/nextcloud/index.php",
    "line": 28,
    "function": "handleRequest",
    "class": "OC",
    "type": "::"
    },
    {
    "file": "/var/www/nextcloud/lib/OC.php",
    "line": 1403,
    "function": "{closure}",
    "args": [
    "
    sensitive parameters replaced ***"
    ]
    },
    {
    "file": "/var/www/nextcloud/index.php",
    "line": 25,
    "function": "handleRequests",
    "class": "OC",
    "type": "::"
    }
    ],
    "File": "/var/www/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php",
    "Line": 20
    },
    "message": "OCA\Deck\Provider\TextContextProviderFactory::__construct(): Argument #5 ($userId) must be of type string, null given in file '/var/www/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20",
    "CustomMessage": "OCA\Deck\Provider\TextContextProviderFactory::__construct(): Argument #5 ($userId) must be of type string, null given in file '/var/www/nextcloud/apps/deck/lib/Provider/TextContextProviderFactory.php' line 20"
    },
    "id": "6ae494d3c144d"
    }

  3. wansing commented on Nov 4, 2026

    @wansing

    Yeah, can confirm the issue here, too. Another day, another Nextcloud regression.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions