[Admin Notice] One of your themes or plugins contains code which needs updating. (id:discourse.html-safe-helper)

We have been getting a warning [subject], and I’m unclear where it’s coming from.

There’s a similar error on console:

DEPRECATION NOTICE: `htmlSafe` from ‘discourse/helpers/html-safe’ is deprecated. Use `trustHTML` from ‘@ember/template’ instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]

I searched for “htmlSafe” in the plugins and themes folders; the only active plugin that contained it was “docker_manager”, which I think I’ve disabled (removed plugins/docker_manager, removed the entry from config/official_plugins.json).

But still getting the error. Where else should I be looking?

There should be a link to the theme component that’s causing the error. Discourse_docker is not the problem.

Not sure what you’re talking about; the themes live in the database, not the filesystem, so you can’t search for them that way. If you share your forum URL (and it’s not login-required) someone should be able to help you find it.

I think there isn’t. Because of an earlier post by @rbos, I took a look at https://forum.pkp.sfu.ca/ and this is what I noticed in the browser console:

80b72542d6.css:1  Failed to load resource: the server responded with a status of 403 ()
deprecated.js:54 [THEME 14 'Versatile Banner'] DEPRECATION NOTICE: The file 'theme-14/discourse/components/versatile-banner-column.hbs' uses the deprecated .hbs extension. Refactor it to use '.gjs' instead. [deprecation id: discourse.hbs-extension] [info: https://meta.discourse.org/t/398896]
deprecated @ deprecated.js:54
deprecated.js:54 [THEME 14 'Versatile Banner'] DEPRECATION NOTICE: The file 'theme-14/discourse/components/versatile-banner.hbs' uses the deprecated .hbs extension. Refactor it to use '.gjs' instead. [deprecation id: discourse.hbs-extension] [info: https://meta.discourse.org/t/398896]
deprecated @ deprecated.js:54
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
deprecate.js:106 DEPRECATION: Importing `inject` from `@ember/service` is deprecated. Please import `service` instead. [deprecation id: importing-inject-from-ember-service] This will be removed in ember-source 7.0.0. See https://deprecations.emberjs.com/id/importing-inject-from-ember-service for more details.
    at deprecate.js:90:19
    at re.<computed> (handlers.js:10:7)
    at deprecate.js:116:7
    at re.<computed> (handlers.js:10:7)
    at dae (index.js:75:7)
    at index.js:12:5
    at re.<computed> (handlers.js:10:7)
    at fae (index.js:115:3)
    at re.<computed> (handlers.js:10:7)
(anonymous) @ deprecate.js:106
app.js:367 ℹ️ Discourse v2026.8.0-latest.1 — https://github.com/discourse/discourse/commits/7df32723f1 — Ember v6.10.1
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
deprecated.js:54 DEPRECATION NOTICE: `htmlSafe` from 'discourse/helpers/html-safe' is deprecated. Use `trustHTML` from '@ember/template' instead. [deprecated since Discourse 2026.3.0] [deprecation id: discourse.html-safe-helper]
deprecated @ deprecated.js:54
80b72542d6.css:1  Failed to load resource: the server responded with a status of 403 ()
Node cannot be found in the current page.

I couldn’t spot details about which component causes this message. Though starting with the versatile banner might be a good idea.

I guess not a link, but it’s clear. I think you just need to get the latest version

Can you tell me why it is obvious? I clearly see that it causes the deprecation message for hbs files. But I don’t see an indicator that it triggers the message about html-safe. While it seems likely that an outdated component also causes the other messages, why do we know there is no other component causing that?

Strange. A find in the Discourse folder in the Docker container doesn’t catch a “theme-14” directory. I don’t know where that’s getting pulled in, then. I did of course see those deprecation notices, but the only one that mentioned “html-safe” was the one mentioned above.

Very interesting that it lives in the database, thanks. I am not deeply familiar with Discourse and I had assumed the theme would be in the filesystem.

This is software that I touch once a year, if that. :slight_smile:

(and to be clear, I am appreciative of how (mostly) bulletproof Discourse has been! It is a compliment to your efforts that I am able to become so unfamiliar with it. Software that I am familiar with is often the software I am most angry at!)

Update: Going to the forum admin web panel, looking for “versatile” pulled up the component, and I was able to update it from there and that cleared the message.

Thanks to all for their help.