From 0d0448d86ba83e50c0d58bb5ecee60cae74a96d0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Wed, 19 Nov 2025 22:10:42 +0200 Subject: [PATCH] fix(scripting): RightPanelWidget requiring async doRenderBody (closes #7778) --- apps/client/src/widgets/right_panel_widget.ts | 13 +++++++++---- .../2. Reverse proxy/Traefik.html | 2 +- .../Custom Widgets/Right pane widget.html | 13 +++++++++---- .../Developer Guide/Documentation.md | 2 +- docs/User Guide/!!!meta.json | 7 +++++++ .../Custom Widgets/Right pane widget.md | 1 + 6 files changed, 28 insertions(+), 10 deletions(-) diff --git a/apps/client/src/widgets/right_panel_widget.ts b/apps/client/src/widgets/right_panel_widget.ts index 47cd3ced7..43e0b4852 100644 --- a/apps/client/src/widgets/right_panel_widget.ts +++ b/apps/client/src/widgets/right_panel_widget.ts @@ -66,9 +66,14 @@ class RightPanelWidget extends NoteContextAwareWidget { this.$buttons.append((buttonWidget as BasicWidget).render()); } - this.initialized = this.doRenderBody().catch((e) => { - this.logRenderingError(e); - }); + const renderResult = this.doRenderBody(); + if (typeof renderResult === "object" && "catch" in renderResult) { + this.initialized = renderResult.catch((e) => { + this.logRenderingError(e); + }); + } else { + this.initialized = Promise.resolve(); + } } /** @@ -77,7 +82,7 @@ class RightPanelWidget extends NoteContextAwareWidget { * Your class should override this method. * @returns {Promise|undefined} if widget needs async operation to initialize, it can return a Promise */ - async doRenderBody() {} + doRenderBody(): Promise | void {} } export default RightPanelWidget; diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.html index c9bbc131f..b48e60add 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik.html @@ -16,7 +16,7 @@ - traefik.http.middlewares.trilium-headers.headers.customrequestheaders.X-Forwarded-Proto=https

Setup needed environment variables

After setting up a reverse proxy, make sure to configure the [missing note].

+ href="#root/_help_LLzSMXACKhUs">[missing note].

Example docker-compose.yaml

services:
   trilium:
     image: triliumnext/trilium
diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html
index 7b571b628..393a9a60a 100644
--- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html	
+++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html	
@@ -1,8 +1,13 @@
 
    -
  • doRender must not be overridden, instead doRenderBody() has - to be overridden.
  • -
  • parentWidget() must be set to “rightPane”.
  • -
  • widgetTitle() getter can optionally be overriden, otherwise +
  • doRender must not be overridden, instead doRenderBody() has + to be overridden. +
      +
    • doRenderBody can optionally be async.
    • +
    +
  • +
  • parentWidget() must be set to “rightPane”.
  • +
  • widgetTitle() getter can optionally be overriden, otherwise the widget will be displayed as “Untitled widget”.
const template = `<div>Hi</div>`;
 
diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md
index e0c8283ff..93ee33d7a 100644
--- a/docs/Developer Guide/Developer Guide/Documentation.md	
+++ b/docs/Developer Guide/Developer Guide/Documentation.md	
@@ -1,5 +1,5 @@
 # Documentation
-There are multiple types of documentation for Trilium:
+There are multiple types of documentation for Trilium:
 
 *   The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1.
 *   The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers.
diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
index 23097f166..91af437e1 100644
--- a/docs/User Guide/!!!meta.json	
+++ b/docs/User Guide/!!!meta.json	
@@ -1069,6 +1069,13 @@
                                             "type": "text",
                                             "mime": "text/html",
                                             "attributes": [
+                                                {
+                                                    "type": "relation",
+                                                    "name": "internalLink",
+                                                    "value": "LLzSMXACKhUs",
+                                                    "isInheritable": false,
+                                                    "position": 10
+                                                },
                                                 {
                                                     "type": "label",
                                                     "name": "shareAlias",
diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md
index 1f44ae36c..7a8cf8cd4 100644
--- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md	
+++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md	
@@ -1,5 +1,6 @@
 # Right pane widget
 *   `doRender` must not be overridden, instead `doRenderBody()` has to be overridden.
+    *   `doRenderBody` can optionally be `async`.
 *   `parentWidget()` must be set to `“rightPane”`.
 *   `widgetTitle()` getter can optionally be overriden, otherwise the widget will be displayed as “Untitled widget”.