-
+
}
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/BehaviorMethodSelectorDialog.js b/newIDE/app/src/EventsFunctionsExtensionEditor/BehaviorMethodSelectorDialog.js
index 86025108e000..a039bc30022d 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/BehaviorMethodSelectorDialog.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/BehaviorMethodSelectorDialog.js
@@ -36,6 +36,7 @@ export default function BehaviorMethodSelectorDialog({
,
]}
actions={[
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorEditor.js b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorEditor.js
index 122659c0df32..78131d6375b0 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorEditor.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorEditor.js
@@ -230,6 +230,7 @@ export default function EventsBasedBehaviorEditor({
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedObjectEditor.js b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedObjectEditor.js
index a769b1080811..b16f8e3b8d01 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedObjectEditor.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedObjectEditor.js
@@ -241,6 +241,7 @@ export default function EventsBasedObjectEditor({
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedObjectSelectorDialog.js b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedObjectSelectorDialog.js
index e3d023239a4b..495b755cd43a 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedObjectSelectorDialog.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedObjectSelectorDialog.js
@@ -66,6 +66,7 @@ export default function EventsBasedObjectSelectorDialog({
,
]}
open
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js b/newIDE/app/src/EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js
index 770bc6fec6ad..f64d0fa03090 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js
@@ -87,7 +87,11 @@ export default function ExtensionFunctionSelectorDialog({
/>,
]}
secondaryActions={[
- ,
+ ,
]}
open
onRequestClose={onCancel}
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/ObjectMethodSelectorDialog.js b/newIDE/app/src/EventsFunctionsExtensionEditor/ObjectMethodSelectorDialog.js
index 5eaa33c3d47c..37e5b7804f91 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/ObjectMethodSelectorDialog.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/ObjectMethodSelectorDialog.js
@@ -35,8 +35,8 @@ export default function ObjectMethodSelectorDialog({
secondaryActions={[
,
]}
actions={[
diff --git a/newIDE/app/src/EventsFunctionsExtensionEditor/OptionsEditorDialog/ExtensionExporterDialog.js b/newIDE/app/src/EventsFunctionsExtensionEditor/OptionsEditorDialog/ExtensionExporterDialog.js
index 944e077f099c..d680e5b70e3f 100644
--- a/newIDE/app/src/EventsFunctionsExtensionEditor/OptionsEditorDialog/ExtensionExporterDialog.js
+++ b/newIDE/app/src/EventsFunctionsExtensionEditor/OptionsEditorDialog/ExtensionExporterDialog.js
@@ -102,7 +102,11 @@ const ExtensionExporterDialog = (props: Props): React.Node => {
- {!noHelpButton &&
- helpPage &&
- isRelativePathToDocumentationRoot(helpPage) && (
-
- )}
+ {!noHelpButton && (
+
+ )}
From 411b42a321cd177f1d2387043497a3b5e34001e6 Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Mon, 4 May 2026 10:52:58 +0200
Subject: [PATCH 03/11] Fix unused imports and variables causing linting
failure
Remove unused `isRelativePathToDocumentationRoot` import and the
`instructionMetadata` / `instructionHelpPage` variables that were left
behind after the HelpButton was switched to a hardcoded `/events` path.
These triggered ESLint `no-unused-vars` warnings which failed CI under
the project's zero-tolerance `--max-warnings=0` rule.
---
.../InstructionEditor/InstructionEditorDialog.js | 15 +--------------
.../InstructionParametersEditor.js | 5 +----
2 files changed, 2 insertions(+), 18 deletions(-)
diff --git a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
index b4588750b4fa..716ac80b5dcb 100644
--- a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
+++ b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
@@ -16,14 +16,10 @@ import InstructionOrObjectSelector, {
} from './InstructionOrObjectSelector';
import InstructionOrExpressionSelector from './InstructionOrExpressionSelector';
import HelpButton from '../../UI/HelpButton';
-import { isRelativePathToDocumentationRoot } from '../../Utils/HelpLink';
import { type EventsScope } from '../../InstructionOrExpression/EventsScope';
import { SelectColumns } from '../../UI/Responsive/SelectColumns';
import { useResponsiveWindowSize } from '../../UI/Responsive/ResponsiveWindowMeasurer';
-import {
- useInstructionEditor,
- getInstructionMetadata,
-} from './InstructionEditor';
+import { useInstructionEditor } from './InstructionEditor';
import NewBehaviorDialog from '../../BehaviorsEditor/NewBehaviorDialog';
import useForceUpdate from '../../Utils/UseForceUpdate';
import getObjectByName from '../../Utils/GetObjectByName';
@@ -222,15 +218,6 @@ const InstructionEditorDialog = ({
[step, shouldAutofocusInput]
);
- const instructionMetadata = getInstructionMetadata({
- instructionType,
- isCondition,
- project,
- });
- const instructionHelpPage = instructionMetadata
- ? instructionMetadata.getHelpPath()
- : undefined;
-
const renderInstructionOrObjectSelector = () => (
{({ i18n }) => (
diff --git a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionParametersEditor.js b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionParametersEditor.js
index 74131c2ac576..b86295849487 100644
--- a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionParametersEditor.js
+++ b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionParametersEditor.js
@@ -10,10 +10,7 @@ import EmptyMessage from '../../UI/EmptyMessage';
import ParameterRenderingService from '../ParameterRenderingService';
import HelpButton from '../../UI/HelpButton';
import HelpIcon from '../../UI/HelpIcon';
-import {
- isRelativePathToDocumentationRoot,
- isDocumentationAbsoluteUrl,
-} from '../../Utils/HelpLink';
+import { isDocumentationAbsoluteUrl } from '../../Utils/HelpLink';
import { type ResourceManagementProps } from '../../ResourcesList/ResourceSource';
import { Column, Line, Spacer } from '../../UI/Grid';
import AlertMessage from '../../UI/AlertMessage';
From a7e4367b3129c17ee7405a7e89e7c686b50be683 Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Mon, 4 May 2026 11:11:03 +0200
Subject: [PATCH 04/11] Make scopeName prop translatable in
ExtensionDetailPanel help button
Changed scopeName="Extension" to scopeName={t\Extension`}` so the string is properly picked up by Lingui and available for translators.
---
.../app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js b/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
index cd84cc9e4a27..a35dcbd85899 100644
--- a/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
+++ b/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
@@ -400,7 +400,7 @@ const ExtensionDetailPanel = ({
)}
{shouldDisplayButtons && isAlreadyInstalled && (
From b6909a973375512492d69564fabc7071c0bddbd6 Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Mon, 4 May 2026 17:59:51 +0200
Subject: [PATCH 05/11] Reverting to contextual "About this action/condition"
Going back to contextual "Help" button for selected actions / conditions rather than "learn more" button under the short description.
---
.../InstructionEditorDialog.js | 32 +++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
index 716ac80b5dcb..7a89b138ab11 100644
--- a/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
+++ b/newIDE/app/src/EventsSheet/InstructionEditor/InstructionEditorDialog.js
@@ -19,7 +19,10 @@ import HelpButton from '../../UI/HelpButton';
import { type EventsScope } from '../../InstructionOrExpression/EventsScope';
import { SelectColumns } from '../../UI/Responsive/SelectColumns';
import { useResponsiveWindowSize } from '../../UI/Responsive/ResponsiveWindowMeasurer';
-import { useInstructionEditor } from './InstructionEditor';
+import {
+ useInstructionEditor,
+ getInstructionMetadata,
+} from './InstructionEditor';
import NewBehaviorDialog from '../../BehaviorsEditor/NewBehaviorDialog';
import useForceUpdate from '../../Utils/UseForceUpdate';
import getObjectByName from '../../Utils/GetObjectByName';
@@ -153,6 +156,16 @@ const InstructionEditorDialog = ({
const { isMobile, windowSize, isMediumScreen } = useResponsiveWindowSize();
const isLargeScreen = windowSize === 'large' || windowSize === 'xlarge';
const instructionType: string = instruction.getType();
+ const instructionMetadata = getInstructionMetadata({
+ instructionType,
+ isCondition,
+ project,
+ });
+ const rawHelpPath = instructionMetadata
+ ? instructionMetadata.getHelpPath()
+ : null;
+ const validHelpPath =
+ rawHelpPath && rawHelpPath !== 'MISSING' ? rawHelpPath : null;
const [
newBehaviorDialogOpen,
setNewBehaviorDialogOpen,
@@ -324,7 +337,22 @@ const InstructionEditorDialog = ({
key="back"
/>
) : null,
- ,
+ About this condition
+ ) : (
+ About this action
+ )
+ ) : (
+ undefined
+ )
+ }
+ scopeName={validHelpPath ? undefined : 'Events'}
+ />,
]}
open={open}
onRequestClose={onCancel}
From eab1d2b213e7815b96f3ebc53f5da9eeb2d780ef Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Mon, 4 May 2026 18:09:48 +0200
Subject: [PATCH 06/11] Signaling/fixing broken links
Pointing to possible broken 404 destinations (example: Scene > Does scene exist -> opens 404 on Wiki)
---
.../Extensions/Builtin/AdvancedExtension.cpp | 14 ++++++-------
.../Builtin/MathematicalToolsExtension.cpp | 12 +++++------
.../Extensions/Builtin/SceneExtension.cpp | 20 +++++++++----------
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
index 7a7b190b08a9..2599399d6ea9 100644
--- a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
@@ -33,7 +33,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/expression_black.svg",
"res/functions/expression_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("expression", _("The number to be returned"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
@@ -48,7 +48,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/expression_black.svg",
"res/functions/expression_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("string", _("The text to be returned"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
@@ -62,7 +62,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/condition_black.svg",
"res/functions/condition_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("trueorfalse", _("Should the condition be true or false?"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
@@ -77,7 +77,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/extension_black.svg",
"res/functions/extension_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("functionParameterName", _("Parameter name"), "variable")
.AddParameter("scenevar", _("Scene variable"))
.SetHidden()
@@ -92,7 +92,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/extension_black.svg",
"res/functions/extension_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("functionParameterName", _("Parameter name"), "variable")
.AddParameter("variable", _("Variable"))
.SetRelevantForFunctionEventsOnly()
@@ -108,7 +108,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/extension_black.svg",
"res/functions/extension_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("functionParameterName", _("Parameter name"), "variable")
.AddParameter("scenevar", _("Scene variable"))
.SetHidden()
@@ -123,7 +123,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/extension_black.svg",
"res/functions/extension_black.svg")
- .SetHelpPath("/events/functions/return")
+ .SetHelpPath("/all-features/advanced/reference/#actions")
.AddParameter("functionParameterName", _("Parameter name"), "variable")
.AddParameter("variable", _("Variable"))
.SetRelevantForFunctionEventsOnly()
diff --git a/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp b/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
index 1e7b593b8757..f91361c4a14a 100644
--- a/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
@@ -28,7 +28,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random integer"),
"",
"res/dice-6.svg")
- .SetHelpPath("/all-features/expressions")
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
.AddParameter("expression", _("Maximum value"));
extension
@@ -37,7 +37,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random integer in range"),
"",
"res/dice-6.svg")
- .SetHelpPath("/all-features/expressions")
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"));
@@ -47,7 +47,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random float"),
"",
"res/dice-6.svg")
- .SetHelpPath("/all-features/expressions")
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
.AddParameter("expression", _("Maximum value"));
extension
@@ -56,7 +56,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random float in range"),
"",
"res/dice-6.svg")
- .SetHelpPath("/all-features/expressions")
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"));
@@ -66,7 +66,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random value in steps"),
"",
"res/dice-6.svg")
- .SetHelpPath("/all-features/expressions")
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"))
.AddParameter("expression", _("Step"));
@@ -476,7 +476,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("The number Pi (3.1415...)"),
"",
"res/mathfunction.png")
- .SetHelpPath("/all-features/expressions");
+ .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions");
extension
.AddExpression("lerpAngle",
diff --git a/Core/GDCore/Extensions/Builtin/SceneExtension.cpp b/Core/GDCore/Extensions/Builtin/SceneExtension.cpp
index 411b4d7d1739..d543d77de7ee 100644
--- a/Core/GDCore/Extensions/Builtin/SceneExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/SceneExtension.cpp
@@ -44,7 +44,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/conditions/depart24.png",
"res/conditions/depart.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.MarkAsSimple();
@@ -60,7 +60,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/conditions/depart24.png",
"res/conditions/depart.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.MarkAsSimple();
@@ -72,7 +72,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/texte.png",
"res/actions/texte.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.AddParameter("sceneName", _("Name of the scene to check"))
.MarkAsSimple();
@@ -85,7 +85,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/replaceScene24.png",
"res/actions/replaceScene.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.AddParameter("sceneName", _("Name of the new scene"))
.AddParameter("yesorno", _("Stop any other paused scenes?"))
@@ -102,7 +102,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/pushScene24.png",
"res/actions/pushScene.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.AddParameter("sceneName", _("Name of the new scene"))
.MarkAsAdvanced();
@@ -117,7 +117,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/popScene24.png",
"res/actions/popScene.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.MarkAsAdvanced();
@@ -129,7 +129,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/quit24.png",
"res/actions/quit.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.MarkAsAdvanced();
@@ -141,7 +141,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/background24.png",
"res/actions/background.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.AddParameter("color", _("Color"))
.MarkAsAdvanced();
@@ -155,7 +155,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/window24.png",
"res/actions/window.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "")
.AddParameter("yesorno", _("Deactivate input when focus is lost"))
.MarkAsAdvanced();
@@ -171,7 +171,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsSceneExtension(
"",
"res/actions/window24.png",
"res/actions/window.png")
- .SetHelpPath("/interface/scene-editor/events")
+ .SetHelpPath("/interface/events-editor/")
.AddCodeOnlyParameter("currentScene", "");
extension
From 4a988f256ec3050b18e36f42aaf083d3d59004fa Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Tue, 5 May 2026 09:56:56 +0200
Subject: [PATCH 07/11] Contextual button - Objects
Replicating the Event Sheet UI pattern (have a contextual Help button) in the Object dialog.
---
.../src/ObjectEditor/ObjectEditorDialog.js | 40 ++++++++++++++++++-
1 file changed, 38 insertions(+), 2 deletions(-)
diff --git a/newIDE/app/src/ObjectEditor/ObjectEditorDialog.js b/newIDE/app/src/ObjectEditor/ObjectEditorDialog.js
index d742ae731114..f3f4566d158e 100644
--- a/newIDE/app/src/ObjectEditor/ObjectEditorDialog.js
+++ b/newIDE/app/src/ObjectEditor/ObjectEditorDialog.js
@@ -175,6 +175,40 @@ const InnerDialog = (props: InnerDialogProps) => {
project.getCurrentPlatform(),
object.getType()
);
+ const objectDisplayName = objectMetadata
+ ? objectMetadata.getFullName()
+ : null;
+
+ const isSpriteObject = object.getType() === 'Sprite';
+ const spriteHasAnimations =
+ isSpriteObject &&
+ gd.asSpriteConfiguration(object.getConfiguration()).getAnimationsCount() >
+ 0;
+
+ const contextualHelpPagePath = (() => {
+ if (currentTab === 'behaviors') return '/behaviors';
+ if (currentTab === 'variables')
+ return '/all-features/variables/object-variables';
+ if (currentTab === 'effects') return '/objects/effects';
+ if (isSpriteObject) return '/objects/sprite';
+ return helpPagePath || '/objects';
+ })();
+
+ const contextualHelpAnchor = (() => {
+ if (isSpriteObject && spriteHasAnimations) return 'adding-an-animation';
+ return undefined;
+ })();
+
+ const contextualLabel = (() => {
+ if (currentTab === 'behaviors') return About Behaviors;
+ if (currentTab === 'variables')
+ return About Object Variables;
+ if (currentTab === 'effects') return About Effects;
+ if (isSpriteObject && spriteHasAnimations)
+ return About Animations;
+ if (objectDisplayName) return About {objectDisplayName};
+ return undefined;
+ })();
const EditorComponent: ?React.ComponentType =
props.editorComponent;
@@ -275,8 +309,10 @@ const InnerDialog = (props: InnerDialogProps) => {
secondaryActions={[
,
Date: Wed, 6 May 2026 09:42:13 +0200
Subject: [PATCH 08/11] Replace helpPath
Updating to correct URL suggested by Davy
Co-authored-by: D8H
---
Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
index 2599399d6ea9..7e896dc9cc3f 100644
--- a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
@@ -33,7 +33,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/expression_black.svg",
"res/functions/expression_black.svg")
- .SetHelpPath("/all-features/advanced/reference/#actions")
+ .SetHelpPath("events/functions/#return-a-value-from-a-function")
.AddParameter("expression", _("The number to be returned"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
From 458abe7fad6f7a8b30e607bbcca712ffc24aff01 Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Wed, 6 May 2026 10:08:55 +0200
Subject: [PATCH 09/11] Replacing absolute URLs
Fixing the past URLs.
---
Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp | 2 +-
.../Builtin/MathematicalToolsExtension.cpp | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
index 2599399d6ea9..7e896dc9cc3f 100644
--- a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
@@ -33,7 +33,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/expression_black.svg",
"res/functions/expression_black.svg")
- .SetHelpPath("/all-features/advanced/reference/#actions")
+ .SetHelpPath("events/functions/#return-a-value-from-a-function")
.AddParameter("expression", _("The number to be returned"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
diff --git a/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp b/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
index f91361c4a14a..18b0979bd328 100644
--- a/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/MathematicalToolsExtension.cpp
@@ -28,7 +28,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random integer"),
"",
"res/dice-6.svg")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
+ .SetHelpPath("/events/expressions/#expressions")
.AddParameter("expression", _("Maximum value"));
extension
@@ -37,7 +37,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random integer in range"),
"",
"res/dice-6.svg")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
+ .SetHelpPath("/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"));
@@ -47,7 +47,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random float"),
"",
"res/dice-6.svg")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
+ .SetHelpPath("/events/expressions/#expressions")
.AddParameter("expression", _("Maximum value"));
extension
@@ -56,7 +56,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random float in range"),
"",
"res/dice-6.svg")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
+ .SetHelpPath("/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"));
@@ -66,7 +66,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("Random value in steps"),
"",
"res/dice-6.svg")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions")
+ .SetHelpPath("/events/expressions/#expressions")
.AddParameter("expression", _("Minimum value"))
.AddParameter("expression", _("Maximum value"))
.AddParameter("expression", _("Step"));
@@ -476,7 +476,7 @@ BuiltinExtensionsImplementer::ImplementsMathematicalToolsExtension(
_("The number Pi (3.1415...)"),
"",
"res/mathfunction.png")
- .SetHelpPath("https://wiki.gdevelop.io/gdevelop5/events/expressions/#expressions");
+ .SetHelpPath("/events/expressions/#expressions");
extension
.AddExpression("lerpAngle",
From 3f98ea313124bf47dfedfb7c1a25cae9082b9c1f Mon Sep 17 00:00:00 2001
From: LuniMoon <103995399+LuniMoon@users.noreply.github.com>
Date: Wed, 20 May 2026 17:22:40 +0200
Subject: [PATCH 10/11] Shortening labels
- Removing the word "About this" and replacing it with "See..." to make translations shorter for existent action/conditions.
- Remove the word "About this..." from the rest of the modals to make the
---
.../Extensions/Builtin/AdvancedExtension.cpp | 2 +-
.../ExtensionStore/ExtensionDetailPanel.js | 253 +++----
.../ExtensionStore/ExtensionInstallDialog.js | 135 ++--
.../ExtensionStore/ExtensionsSearchDialog.js | 2 +-
newIDE/app/src/AssetStore/NewObjectDialog.js | 2 +-
.../src/BehaviorsEditor/NewBehaviorDialog.js | 4 +-
newIDE/app/src/Debugger/DebuggerContent.js | 310 +++++----
.../BehaviorMethodSelectorDialog.js | 298 +++++----
.../EventsBasedBehaviorEditor.js | 2 +-
.../EventsBasedObjectEditor.js | 2 +-
.../EventsBasedObjectSelectorDialog.js | 111 ++--
.../ExtensionFunctionSelectorDialog.js | 333 +++++-----
.../ObjectMethodSelectorDialog.js | 265 ++++----
.../ExtensionExporterDialog.js | 125 ++--
.../OptionsEditorDialog/index.js | 157 ++---
.../EventsFunctionExtractorDialog.js | 379 ++++++-----
.../InstructionEditorDialog.js | 9 +-
.../InstructionParametersEditor.js | 5 +-
.../ExpressionParametersEditorDialog.js | 110 +--
.../src/ExportAndShare/Builds/BuildsDialog.js | 64 +-
.../GenericExporters/OnlineCordovaExport.js | 251 +++----
.../src/ExportAndShare/ShareDialog/index.js | 216 +++---
.../SigningCredentialsDialog/index.js | 160 ++---
.../LeaderboardAppearanceDialog.js | 2 +-
.../LeaderboardOptionsDialog.js | 2 +-
.../app/src/HotReload/HotReloadLogsDialog.js | 114 ++--
.../app/src/LayersList/LayerEditorDialog.js | 624 +++++++++---------
.../app/src/Leaderboard/LeaderboardDialog.js | 70 +-
.../ExternalEventsEditorContainer.js | 162 ++---
.../ExternalLayoutEditorContainer.js | 261 ++++----
.../NewVariantDialog.js | 105 +--
.../src/ObjectEditor/ObjectEditorDialog.js | 424 ++++++------
.../EditedObjectGroupEditorDialog.js | 200 +++---
.../NewObjectGroupEditorDialog.js | 125 ++--
newIDE/app/src/Profile/CreateAccountDialog.js | 150 +++--
.../CreateAccountWithPurchaseClaimDialog.js | 172 ++---
newIDE/app/src/Profile/LoginDialog.js | 43 +-
.../Profile/LoginWithPurchaseClaimDialog.js | 43 +-
newIDE/app/src/Profile/ProfileDialog.js | 249 +++----
.../ProjectManager/ProjectPropertiesDialog.js | 2 +-
.../ExtractAsCustomObjectDialog.js | 2 +-
.../ExtractAsExternalLayoutDialog.js | 91 +--
.../GlobalAndSceneVariablesDialog.js | 63 +-
.../VariablesList/GlobalVariablesDialog.js | 45 +-
.../src/VariablesList/LocalVariablesDialog.js | 45 +-
.../ObjectGroupVariablesDialog.js | 139 ++--
.../ObjectInstanceVariablesDialog.js | 43 +-
.../VariablesList/ObjectVariablesDialog.js | 49 +-
.../src/VariablesList/SceneVariablesDialog.js | 45 +-
49 files changed, 3384 insertions(+), 3081 deletions(-)
diff --git a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
index 7e896dc9cc3f..6b0d19f26a8e 100644
--- a/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
+++ b/Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
@@ -33,7 +33,7 @@ void GD_CORE_API BuiltinExtensionsImplementer::ImplementsAdvancedExtension(
"",
"res/functions/expression_black.svg",
"res/functions/expression_black.svg")
- .SetHelpPath("events/functions/#return-a-value-from-a-function")
+ .SetHelpPath("/events/functions/#return-a-value-from-a-function")
.AddParameter("expression", _("The number to be returned"))
.SetRelevantForFunctionEventsOnly()
.MarkAsAdvanced();
diff --git a/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js b/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
index a35dcbd85899..ac6d205d5c56 100644
--- a/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
+++ b/newIDE/app/src/AssetStore/ExtensionStore/ExtensionDetailPanel.js
@@ -1,5 +1,6 @@
// @flow
import { t, Trans } from '@lingui/macro';
+import { I18n } from '@lingui/react';
import React from 'react';
import FlatButton from '../../UI/FlatButton';
import RaisedButton from '../../UI/RaisedButton';
@@ -285,133 +286,141 @@ const ExtensionDetailPanel = ({
: null;
return (
-
-
-
-
-
- {extensionUpdate &&
- installedExtension &&
- extensionShortHeader.version !== installedExtension.getVersion() ? (
- {`Version ${installedExtension.getVersion()} (${
- extensionShortHeader.version
- } available)`}
- ) : (
- {`Version ${extensionShortHeader.version}`}
- )}
-
-
-
- {extensionShortHeader.authors &&
- extensionShortHeader.authors.map(author => (
-
+ {({ i18n }) => (
+
+
+
+
+
+ {extensionUpdate &&
+ installedExtension &&
+ extensionShortHeader.version !==
+ installedExtension.getVersion() ? (
+ {`Version ${installedExtension.getVersion()} (${
+ extensionShortHeader.version
+ } available)`}
+ ) : (
+ {`Version ${extensionShortHeader.version}`}
+ )}
+
+
+
+ {extensionShortHeader.authors &&
+ extensionShortHeader.authors.map(author => (
+
+ ))}
+
+
+
+ {shouldDisplayButtons && onInstall && (
+
+
+
- ))}
-
+
+
+ )}
-
- {shouldDisplayButtons && onInstall && (
-
-
-
-
-
- )}
-
-