Skip to content

3dstickerpro#26

Merged
NBForgeLab merged 6 commits intomasterfrom
3dstickerpro
Mar 25, 2026
Merged

3dstickerpro#26
NBForgeLab merged 6 commits intomasterfrom
3dstickerpro

Conversation

@NBForgeLab
Copy link
Copy Markdown
Owner

@NBForgeLab NBForgeLab commented Mar 25, 2026


Open with Devin

Summary by CodeRabbit

  • New Features

    • Added secondary keyboard shortcut (Cmd/Ctrl+K) for opening Command Palette alongside the primary shortcut
    • Code editor now persists and restores scroll position and cursor location across sessions
    • Added preference option to display type errors in JavaScript events (requires restart)
  • Improvements

    • Simplified Command Palette search by removing third-party wiki integration for a more streamlined experience
  • Chores

    • Updated icon assets to SVG format for improved scalability
    • Removed unused search dependencies for reduced bundle size

NBForgeLab and others added 6 commits February 17, 2026 16:03
* 3dstickerpro (#20)

* Sticker3DBehavior

* small fix

* offset modes

* fix destroy checkbox

* 3dstickerpro (#21)

* Sticker3DBehavior

* small fix

* offset modes

* fix destroy checkbox

* Fix a crash updating an extension when importing a GDO file and the extension tab is open (4ian#8412)

- Don't show in changelog

* Fix potential crashes of the Objects panel (4ian#8413)

* Add Ctrl/Cmd+K as a secondary shortcut for command palette (4ian#8415)

* Remove useless wiki search integration from the Command Palette (4ian#8416)

* Fix embedded resource links when importing a GDO (4ian#8419)

* Display better certificate errors (4ian#8421)

* Fix native menu wrongly shown when right clicking a tab on the web-app

* Fix native context menu wrongly shown in Events Sheets on the web-app

* Fix a crash when removing a behavior while the behavior overriding is displayed in the side panel (4ian#8427)

* Redesign the object/behavior configuration editor in extensions to be more compact (4ian#8425)

* Update the tree of functions in extensions editor with a new set of icons (4ian#8424)

* [Auto PR] Update translations (4ian#8382)

* Bump to 262 (4ian#8428)

* Save the scroll position of JS code events when closing and opening tabs (4ian#8417)

* Add a preference to enable the display of type errors in JavaScript events (4ian#8429)

* Replace SearchBar with CompactSearchBar in property and function lists (4ian#8430)

---------

Co-authored-by: D8H <Davy.Helard@gmail.com>
Co-authored-by: Florian Rival <Florian.rival@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Clément Pasteau <4895034+ClementPasteau@users.noreply.github.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 25, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: a7b1e4fc-f4c9-481e-b002-32cc243105d0

📥 Commits

Reviewing files that changed from the base of the PR and between 34ec1a4 and 2f31106.

⛔ Files ignored due to path filters (20)
  • newIDE/app/package-lock.json is excluded by !**/package-lock.json
  • newIDE/app/public/res/functions/action.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/action_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/activate.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/activate_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/condition.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/condition_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/create.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/create_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/deactivate.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/deactivate_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/destroy.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/destroy_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/expression.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/expression_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/reload.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/reload_black.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/step.svg is excluded by !**/*.svg
  • newIDE/app/public/res/functions/step_black.svg is excluded by !**/*.svg
  • newIDE/electron-app/app/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (139)
  • Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp
  • Core/GDCore/Extensions/Builtin/AsyncExtension.cpp
  • Core/GDCore/Extensions/Builtin/BaseObjectExtension.cpp
  • Core/GDCore/IDE/ObjectAssetSerializer.cpp
  • Core/GDCore/Project/ObjectFolderOrObject.h
  • Core/GDCore/Project/ResourcesContainer.cpp
  • Core/GDCore/Project/ResourcesContainer.h
  • GDJS/GDJS/Events/Builtin/JsCodeEvent.cpp
  • GDJS/GDJS/Events/Builtin/JsCodeEvent.h
  • GDJS/GDJS/Events/CodeGeneration/MetadataDeclarationHelper.cpp
  • GDevelop.js/Bindings/Bindings.idl
  • GDevelop.js/Bindings/Wrapper.cpp
  • GDevelop.js/Bindings/postjs.js
  • GDevelop.js/types.d.ts
  • GDevelop.js/types/gdjscodeevent.js
  • GDevelop.js/types/gdresourcescontainer.js
  • newIDE/app/flow-typed/npm/algoliasearch_v3.x.x.js
  • newIDE/app/package.json
  • newIDE/app/patches/react-monaco-editor+0.18.0.patch
  • newIDE/app/src/BehaviorTypeSelector/CompactBehaviorTypeSelector.js
  • newIDE/app/src/ChoicesEditor/index.js
  • newIDE/app/src/CodeEditor/index.js
  • newIDE/app/src/CommandPalette/CommandManager.js
  • newIDE/app/src/CommandPalette/CommandPalette/AutocompletePicker.js
  • newIDE/app/src/CommandPalette/CommandPalette/index.js
  • newIDE/app/src/CompactPropertiesEditor/CompactPropertiesEditorRowField.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/BehaviorMethodSelectorDialog.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorEditor.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedBehaviorOrObjectPropertiesEditor.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/EventsBasedObjectEditor.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedBehaviorOrObjectEditor/index.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsBasedObjectSelectorDialog.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsFunctionConfigurationEditor/CompactResourceTypeSelectField.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/EventsFunctionConfigurationEditor/CompactValueTypeEditor.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/ObjectMethodSelectorDialog.js
  • newIDE/app/src/EventsFunctionsExtensionEditor/PropertyListEditor/index.js
  • newIDE/app/src/EventsFunctionsList/EventsFunctionTreeViewItemContent.js
  • newIDE/app/src/EventsFunctionsList/index.js
  • newIDE/app/src/EventsSheet/EventsTree/Instruction.js
  • newIDE/app/src/EventsSheet/EventsTree/InstructionsList.js
  • newIDE/app/src/EventsSheet/EventsTree/Renderers/JsCodeEvent.js
  • newIDE/app/src/ExportAndShare/SigningCredentials/CreateIosSigningCredentialsDialog/CreateIosCertificateSteps.js
  • newIDE/app/src/InstancesEditor/CompactInstancePropertiesEditor/index.js
  • newIDE/app/src/KeyboardShortcuts/DefaultShortcuts.js
  • newIDE/app/src/KeyboardShortcuts/ShortcutsList.js
  • newIDE/app/src/KeyboardShortcuts/index.js
  • newIDE/app/src/MainFrame/MemoryTrackedRegistryDialog.js
  • newIDE/app/src/MainFrame/Preferences/PreferencesContext.js
  • newIDE/app/src/MainFrame/Preferences/PreferencesDialog.js
  • newIDE/app/src/MainFrame/Preferences/PreferencesProvider.js
  • newIDE/app/src/MainFrame/index.js
  • newIDE/app/src/ObjectEditor/ObjectImporterDialog.js
  • newIDE/app/src/ObjectsList/ObjectFolderTreeViewItemContent.js
  • newIDE/app/src/ObjectsList/ObjectTreeViewItemContent.js
  • newIDE/app/src/ObjectsList/index.js
  • newIDE/app/src/SceneEditor/EditorsDisplay.flow.js
  • newIDE/app/src/SceneEditor/MosaicEditorsDisplay/index.js
  • newIDE/app/src/SceneEditor/index.js
  • newIDE/app/src/UI/ClosableTabs.js
  • newIDE/app/src/UI/CompactSelectField/index.js
  • newIDE/app/src/UI/CompactSemiControlledTextField/index.js
  • newIDE/app/src/UI/CompactTextAreaField/index.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Action.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Activate.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Condition.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Create.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Deactivate.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Destroy.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Expression.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Function.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Reload.js
  • newIDE/app/src/UI/CustomSvgIcons/Behaviors/Step.js
  • newIDE/app/src/Utils/AlgoliaSearch.js
  • newIDE/app/src/Utils/Serializer.js
  • newIDE/app/src/fixtures/TestExtensions.js
  • newIDE/app/src/locales/LocalesMetadata.js
  • newIDE/app/src/locales/af_ZA/messages.js
  • newIDE/app/src/locales/ar_SA/messages.js
  • newIDE/app/src/locales/az_AZ/messages.js
  • newIDE/app/src/locales/bg_BG/messages.js
  • newIDE/app/src/locales/bn_BD/messages.js
  • newIDE/app/src/locales/br_FR/messages.js
  • newIDE/app/src/locales/ca_ES/messages.js
  • newIDE/app/src/locales/cs_CZ/messages.js
  • newIDE/app/src/locales/da_DK/messages.js
  • newIDE/app/src/locales/de_DE/messages.js
  • newIDE/app/src/locales/el_GR/messages.js
  • newIDE/app/src/locales/en/messages.js
  • newIDE/app/src/locales/eo_UY/messages.js
  • newIDE/app/src/locales/es_ES/messages.js
  • newIDE/app/src/locales/fa_IR/messages.js
  • newIDE/app/src/locales/fi_FI/messages.js
  • newIDE/app/src/locales/fil_PH/messages.js
  • newIDE/app/src/locales/fr_FR/messages.js
  • newIDE/app/src/locales/ha_HG/messages.js
  • newIDE/app/src/locales/he_IL/messages.js
  • newIDE/app/src/locales/hi_IN/messages.js
  • newIDE/app/src/locales/hu_HU/messages.js
  • newIDE/app/src/locales/id_ID/messages.js
  • newIDE/app/src/locales/ig_NG/messages.js
  • newIDE/app/src/locales/it_IT/messages.js
  • newIDE/app/src/locales/ja_JP/messages.js
  • newIDE/app/src/locales/ka_GE/messages.js
  • newIDE/app/src/locales/km_KH/messages.js
  • newIDE/app/src/locales/ko_KR/messages.js
  • newIDE/app/src/locales/lt_LT/messages.js
  • newIDE/app/src/locales/lv_LV/messages.js
  • newIDE/app/src/locales/mr_IN/messages.js
  • newIDE/app/src/locales/ms_MY/messages.js
  • newIDE/app/src/locales/my_MM/messages.js
  • newIDE/app/src/locales/nl_NL/messages.js
  • newIDE/app/src/locales/no_NO/messages.js
  • newIDE/app/src/locales/pl_PL/messages.js
  • newIDE/app/src/locales/pseudo_LOCALE/messages.js
  • newIDE/app/src/locales/pt_BR/messages.js
  • newIDE/app/src/locales/pt_PT/messages.js
  • newIDE/app/src/locales/ro_RO/messages.js
  • newIDE/app/src/locales/ru_RU/messages.js
  • newIDE/app/src/locales/si_LK/messages.js
  • newIDE/app/src/locales/sk_SK/messages.js
  • newIDE/app/src/locales/sl_SI/messages.js
  • newIDE/app/src/locales/sq_AL/messages.js
  • newIDE/app/src/locales/sr_CS/messages.js
  • newIDE/app/src/locales/sr_SP/messages.js
  • newIDE/app/src/locales/sv_SE/messages.js
  • newIDE/app/src/locales/sw_KE/messages.js
  • newIDE/app/src/locales/ta_IN/messages.js
  • newIDE/app/src/locales/th_TH/messages.js
  • newIDE/app/src/locales/tr_TR/messages.js
  • newIDE/app/src/locales/uk_UA/messages.js
  • newIDE/app/src/locales/ur_PK/messages.js
  • newIDE/app/src/locales/uz_UZ/messages.js
  • newIDE/app/src/locales/vi_VN/messages.js
  • newIDE/app/src/locales/yo_NG/messages.js
  • newIDE/app/src/locales/zh_CN/messages.js
  • newIDE/app/src/locales/zh_TW/messages.js
  • newIDE/app/src/stories/componentStories/CommandPalette.stories.js
  • newIDE/electron-app/app/package.json

📝 Walkthrough

Walkthrough

This pull request introduces comprehensive improvements across multiple systems: replaces PNG icons with SVG variants in C++ extension definitions, adds memory tracking to event and object classes, refactors resource serialization with new helper methods, removes Algolia-based wiki search integration, converts UI components to compact variants throughout the IDE, enhances the JavaScript code editor with state persistence, adds secondary keyboard shortcuts, and improves extension/object import workflows.

Changes

Cohort / File(s) Summary
Icon/Asset Path Updates
Core/GDCore/Extensions/Builtin/AdvancedExtension.cpp, AsyncExtension.cpp, BaseObjectExtension.cpp, GDJS/.../MetadataDeclarationHelper.cpp, newIDE/.../TestExtensions.js
Replaced PNG icon references (res/function32.png, res/function24.png, res/behavior24.png, etc.) with SVG equivalents (res/functions/extension_black.svg, expression_black.svg, condition_black.svg, activate_black.svg, action_black.svg, object_black.svg).
Memory Tracking & Serialization Refactoring
Core/GDCore/Project/ObjectFolderOrObject.h, ResourcesContainer.h, ResourcesContainer.cpp, Core/GDCore/IDE/ObjectAssetSerializer.cpp, GDevelop.js/Bindings/Wrapper.cpp, postjs.js
Added gd::MemoryTracked member initialization to ObjectFolderOrObject, introduced UnserializeResourceFrom() static helper method for centralized resource deserialization, refactored ObjectAssetSerializer to delegate resource serialization, and extended JavaScript bindings to track ObjectFolderOrObject and JsCodeEvent for use-after-free detection.
JsCodeEvent Editor State Persistence
GDJS/.../JsCodeEvent.h, JsCodeEvent.cpp, newIDE/.../Renderers/JsCodeEvent.js
Added scroll position and cursor location tracking (scrollTop, cursorColumn, cursorLine) with getters/setters to JsCodeEvent, introduced private copy constructor, added MemoryTracked member, and wired CodeEditor to persist/restore editor state via new saveEditorState callback.
JavaScript Binding Updates
GDevelop.js/Bindings/Bindings.idl, GDevelop.js/types.d.ts, GDevelop.js/types/gdjscodeevent.js, GDevelop.js/types/gdresourcescontainer.js
Extended IDL declarations and TypeScript types to expose UnserializeResourceFrom() static method and JsCodeEvent state accessors (getScrollTop/setScrollTop, getCursorColumn/setCursorColumn, getCursorLine/setCursorLine).
CodeEditor Component Refactoring
newIDE/app/src/CodeEditor/index.js
Converted class-based CodeEditor to functional component using hooks, added props for initial editor state restoration (initialScrollTop, initialCursorColumn, initialCursorLine), implemented editorWillUnmount callback for state persistence, and refactored Monaco initialization to use hook-based patterns.
Algolia/Wiki Search Removal
newIDE/app/src/CommandPalette/CommandManager.js, CommandPalette/AutocompletePicker.js, CommandPalette/index.js, newIDE/app/src/Utils/AlgoliaSearch.js, newIDE/app/flow-typed/npm/algoliasearch_v3.x.x.js, newIDE/app/package.json
Removed Algolia search client integration, deleted GoToWikiCommand type and wiki result rendering, simplified CommandPalette to only show local commands, removed algoliasearch and react-instantsearch-hooks dependencies, and eliminated the AlgoliaSearch utility module.
Compact UI Component Migration
newIDE/app/src/ChoicesEditor/index.js, EventsBasedBehaviorEditor.js, EventsBasedBehaviorOrObjectPropertiesEditor.js, EventsBasedObjectEditor.js, index.js, CompactBehaviorTypeSelector.js, CompactPropertiesEditorRowField.js, PropertyListEditor/index.js, EventsFunctionsList/index.js, UI/CompactSelectField/index.js, CompactSemiControlledTextField/index.js, CompactTextAreaField/index.js
Systematically replaced standard UI components (TextField, SelectField, Checkbox, SearchBar) with compact equivalents (CompactSemiControlledTextField, CompactSelectField, CompactToggleField, CompactSearchBar, etc.), updated prop signatures (e.g., onChange handlers), added optional onFocus callbacks across compact field components, and added labelMaxWidth prop to CompactPropertiesEditorRowField.
Extension Function/Behavior Selector Dialogs
EventsFunctionsExtensionEditor/ExtensionFunctionSelectorDialog.js, BehaviorMethodSelectorDialog.js, ObjectMethodSelectorDialog.js, EventsFunctionTreeViewItemContent.js
Unified function list rendering via shared FunctionListItem component, exported getFunctionIconUrl() helper for icon selection by function type/name, refactored dialogs to use FunctionListItem with standardized props, and updated icon rendering to use SVG icon URLs instead of inline React components.
Custom SVG Icon Components Removal
newIDE/app/src/UI/CustomSvgIcons/Behaviors/Action.js, Activate.js, Condition.js, Create.js, Deactivate.js, Destroy.js, Expression.js, Function.js, Reload.js, Step.js
Deleted 10 unused custom Material-UI SvgIcon wrapper components that were superseded by external SVG assets and icon URL references.
Keyboard Shortcuts Enhancement
newIDE/app/src/KeyboardShortcuts/DefaultShortcuts.js, ShortcutsList.js, index.js
Added secondary keyboard shortcut support with new defaultSecondaryShortcuts map containing alternative OPEN_COMMAND_PALETTE: 'CmdOrCtrl+KeyK', updated shortcut resolution logic to fall back to secondary shortcuts when primary lookup fails, and updated UI to display both primary and secondary options.
Preferences & Type Error Display
MainFrame/Preferences/PreferencesContext.js, PreferencesDialog.js, PreferencesProvider.js
Added new showJsTypeError boolean preference with default false, integrated setter into preferences UI and persistence layer, and wired preference toggle in Advanced > Other settings.
Object Management & Dead Object Guards
ObjectsList/ObjectFolderTreeViewItemContent.js, ObjectTreeViewItemContent.js, index.js, InstancesEditor/CompactInstancePropertiesEditor/index.js
Added exceptionallyGuardAgainstDeadObject checks to prevent accessing deleted object/folder references, early-return empty results when objects are marked dead, and added behavior existence validation before retrieval.
Scene Editor & Object Import Enhancements
SceneEditor/EditorsDisplay.flow.js, MosaicEditorsDisplay/index.js, index.js, ObjectEditor/ObjectImporterDialog.js
Refactored editObjectByName callback signature to use structured object parameter with objectName, initialTab, and shouldSelectTheObject, added extension lifecycle callbacks (onWillInstallExtension, onExtensionInstalled) to import dialog, updated resource deserialization to use new unserializeResourceFromJSObject() helper, and enhanced behavior-related method calls with safety checks.
UI Event Handling & Context Menu Improvements
EventsSheet/EventsTree/Instruction.js, InstructionsList.js, UI/ClosableTabs.js, patches/react-monaco-editor+0.18.0.patch
Added event.preventDefault() calls before stopPropagation() in context menu handlers to suppress default browser menus, added editorWillUnmount prop to react-monaco-editor patch to enable cleanup callbacks on editor disposal.
Serialization Utilities
newIDE/app/src/Utils/Serializer.js
Added unserializeResourceFromJSObject() helper that converts JS objects to SerializerElement and delegates to ResourcesContainer.unserializeResourceFrom() for resource initialization.
Command Palette & Story Updates
MainFrame/index.js, stories/.../CommandPalette.stories.js, CommandPalette/CommandPalette/index.js
Updated MainFrame to use CommandPalette directly instead of CommandPaletteWithAlgoliaSearch wrapper, simplified story to remove wiki command examples, and updated story fixture to remove GoToWikiCommand union type.
Version & Locale Metadata Updates
newIDE/electron-app/app/package.json, newIDE/app/src/locales/LocalesMetadata.js, MainFrame/MemoryTrackedRegistryDialog.js
Bumped Electron app version from 5.6.261 to 5.6.262, updated translation ratios for multiple locales, and added ObjectFolderOrObject and JsCodeEvent to memory tracking dialog statistics.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

🐰 Our code now tracks its steps with care,
SVG icons float through the air,
Compact components shine so bright,
Algolia's gone—our search is light,
Editor state no longer lost,
All these changes worth the cost! 🎨✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 3dstickerpro

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@NBForgeLab NBForgeLab merged commit c437bca into master Mar 25, 2026
1 check was pending
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

View 7 additional findings in Devin Review.

Open in Devin Review

Comment on lines +575 to +579
{(property.getType() === 'String' ||
property.getType() === 'Number' ||
property.getType() === 'ObjectAnimationName' ||
property.getType() === 'KeyboardKey' ||
property.getType() === 'MultilineString') && (
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Duplicate default value controls rendered for MultilineString property type

When a behavior/object property's type is MultilineString, both a single-line CompactSemiControlledTextField AND a multiline CompactTextAreaField are rendered for the "Default value" field, because 'MultilineString' is included in the condition at line 579 that guards the single-line field. The old code used a single SemiControlledTextField with multiline={property.getType() === 'MultilineString'} to dynamically switch. The new code should exclude 'MultilineString' from the first condition (lines 575-579) since the dedicated CompactTextAreaField at line 603 is the intended replacement. Additionally, the CompactTextAreaField's placeholder check property.getType() === 'Number' ? '123' : 'ABC' (line 607) is dead code since it's always inside a MultilineString guard.

Suggested change
{(property.getType() === 'String' ||
property.getType() === 'Number' ||
property.getType() === 'ObjectAnimationName' ||
property.getType() === 'KeyboardKey' ||
property.getType() === 'MultilineString') && (
{(property.getType() === 'String' ||
property.getType() === 'Number' ||
property.getType() === 'ObjectAnimationName' ||
property.getType() === 'KeyboardKey') && (
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

floatingLabelText={<Trans>Description</Trans>}
helperMarkdownText={i18n._(
<CompactTextAreaField
label={i18n._(`Description`)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Missing t translation tag on Description label in EventsBasedBehaviorEditor

At line 106, the label uses i18n._(`Description`) (a plain template literal) instead of i18n._(t`Description`) (with the t tagged template). Without the t tag, the string "Description" won't be extracted by the @lingui/cli extraction tool into the translation catalog. The equivalent code in EventsBasedObjectEditor.js:91 correctly uses i18n._(t`Description`).

Suggested change
label={i18n._(`Description`)}
label={i18n._(t`Description`)}
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant