Skip to content

Merge maintenance/mps20261 into master - #3527

Merged
mps-ci-buildbot merged 12 commits into
masterfrom
merge/master
Oct 1, 2026
Merged

mps-ci-buildbot merged 12 commits into
masterfrom
merge/master

Conversation

@mps-ci-buildbot

Copy link
Copy Markdown
Contributor

Merge changes from maintenance/mps20261 to master.

danielratiu and others added 5 commits September 5, 2026 16:11
init(project) calls setProject() right after constructing the search
viewer, which can be the very first access to the tool's ToolWindow
during early project startup. The scope-setter methods deferred their
getToolWindow()/setTitle() call via bare
ApplicationManager.getApplication().invokeLater(...), which only posts
to the next EDT event and does not wait for the tool-window
infrastructure to be ready. On current IntelliJ platform versions this
can run before the frame's default tool-window pane is initialized,
causing:

  IllegalStateException: You must not register toolwindow
  programmatically so early. Rework code or use
  ToolWindowManager.invokeLater

Switch setGlobal/setProject/setModel/setModule to
ToolWindowManager.getInstance(project).invokeLater(...), the mechanism
the platform's own exception message recommends, which defers until
tool-window registration is actually safe.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbbY1sD8fEje7gfEiNLYKj
ImageWord stores a ${module}-relative path, but ${module} was resolved
against the node's own module. That holds while authoring in the image's
home module, but once the word renders in a transient/execution model (a
running tutorial) the own module is no longer the image's module, so the
path resolved to nothing and the image came up blank -- and the base Image
editor's isValid gate compounded it into "invalid path" before the loader
even ran.

Resolution now goes through a new getEffectiveModule(): the configured
module (moduleId) first, else the node's own module, so one place decides
what ${module} means. The rendered view uses a custom cell loading via the
explicit-module createImageCell overload (sidestepping the getModule(node)
path that blanks in transient models); the authoring select-button resolves
its preview the same way. The own-module fallback keeps the authoring window
(moduleId not yet set) silent; a remaining "unknown macro" is raised only on
a genuinely unresolvable module -- an honest dev-time signal kept on purpose,
since no recovery would preserve the intended path.
ExerciseExecutor.start() re-ran its whole onceEditorReady wiring on every
call. Retriggering a step whose editor was still open readied the same
editor again, re-added the same selection listener, and tripped the platform
SelectionManager assertion. That wiring (component handle, dispose + selection
listeners, hint setup) is all first-activation work, so start() now splits:
reuse an open editor (editNode + focus) vs. open a fresh one and wire it once.

initHints() now rebuilds the editor after setInitialEditorHints, so the
rendered view shows on the first invocation rather than one build later,
with no state where the hint is set but unapplied.

Deliberate consequence: re-entering an open step no longer re-asserts the
hint, so a user's manual rendering-mode change is preserved rather than
overridden -- removing the hint takes intent, and temp-model hints are
ephemeral (a restart restores the default).

Also: once-assigned fields made final, and getSandboxExercise moved to the
TempModuleOptions createEditable overload.
…tration

fix: defer MbeddrSearchViewer tool-window registration until safe
sergej-koscejev and others added 7 commits September 29, 2026 08:45
editingGuide: reliable tutorial image rendering and execution-mode lifecycle in packaged distributions
: Conflicts:
:	code/platform/com.mbeddr.mpsutil/languages/com.mbeddr.mpsutil.editingGuide/models/editor.mps
:	code/platform/com.mbeddr.mpsutil/solutions/com.mbeddr.mpsutil.editingGuide.execution/models/com/mbeddr/mpsutil/editingGuide/execution.mps
…tch-mpsextensions251

fix(deps): update dependency de.itemis.mps:extensions to v2025.1.3668.61e8b2c (maintenance/mps20251)
Merge maintenance/mps20251 into maintenance/mps20261
@mps-ci-buildbot mps-ci-buildbot self-assigned this Sep 30, 2026
@mps-ci-buildbot
mps-ci-buildbot merged commit d67b690 into master Oct 1, 2026
5 checks passed
@mps-ci-buildbot
mps-ci-buildbot deleted the merge/master branch October 1, 2026 08:15
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.

4 participants