Double-clicking a row in an editable script list starts an in-place edit
session on that cell. The map list's onEditStart handler opened the Mythos
editor window but never ended the session, leaving the row stuck in editing
state with the list's editing index pinned: a second double-click on the same
row was a no-op unless another row was selected first.
- MapEditorTabControllerImpl: open the editor from a cell startEdit()
override and clear the list's editing index (an EDIT_START event handler
cannot do this; ListCell.startEdit re-asserts the index after firing it).
- GlobalEditorTabControllerImpl: same latent defect in the global script
list; its no-op cancelEdit/updateItem calls are replaced with edit(-1).
- Add MythosEditorAbortReopenTest covering open, abort, and reopen of the
same row for both lists (red before the fix, green after), plus a
package-private EditorRegistry.get(Script) test seam.
Repaint the list after in-place script renames while retaining the same Script instances. Configure Surefire for classpath tests and cover map list refresh and reopen bookkeeping.
Gate live NAME notifications on the imported root block. Serialize only that root when extra top-level blocks exist, warn through the JavaFX dialog bridge, and leave the model untouched when the root is missing. Add Node and JUnit coverage for rename and Apply behavior. Include editor reopen bookkeeping and root-name synchronization.
Newer GraalVM native-image versions (25.x) require libsvm_container
for container-awareness support, but gluonfx-maven-plugin 1.0.26 (and
its underlying substrate library, even at its latest 0.0.69 release)
predates this and never adds -l:libsvm_container.a to the generated
link command, causing undefined references to
svm_container_physical_memory/initialize/active_processor_count.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The v12 revert restored the pre-v13 editor.html, which also removed the
user-agent fix that had been proven against the saloon O(n^2) import
(329 blocks, ~6.5s synchronous re-render per queueRender in JavaFX's
immediate-render mode). Blockly v12 has the same userAgent.JavaFx /
alwaysImmediatelyRender mechanism, so strip the JavaFX token from
navigator.userAgent before Blockly loads; the import then goes through
the standard rAF-batching path. Verified on JDK 17 / JavaFX 21.0.7:
saloon loads in ~275ms, 329/329 blocks rendered, engine alive. The
v12-era BLOCK_CREATE workaround stays (redundant under batching,
harmless). No-op on non-JavaFX browsers.
The core was previously a v12.4.1 build (815 bytes smaller). Upgrade
to the official npm package 12.5.1 to match blocks_compressed.js and
msg/en.js which were already at v12.5.1.
Restore blockly_compressed.js, blocks_compressed.js, and msg/en.js
from the last v12 release. Remove the v13-only drop.mp3 media file.
The pre-v13 editor.html contained three workarounds that are now
restored:
- BLOCK_CREATE re-render: re-queues descendants after creation
to fix white-blip/missing-shadow issues in JavaFX immediate
render mode
- Cross-window clipboard bridge: bridges copy/paste across
WebView's isolated JS contexts using getLastCopiedData/
setLastCopiedData
- Undo-delete monkeypatch: records parent connections before
unplug() so undo can reconnect restored blocks properly
The mythos_uncompressed.js is also reverted to its pre-v13 state.
- Add NativeEditorControl built on RichTextFX CodeArea with CSS-class
syntax highlighting (no canvas overlay), plus DARK/LIGHT EditorTheme
with WCAG AA contrast
- Syntax definitions: AppleSoftBasicSyntax (from Command.TOKEN values)
and MOS65C02AssemblySyntax (ACME 65C02 mnemonics, label forms,
$hex/0x/&octal/%binary numerics); MarkerRenderer surfaces
error/warning lines and is unit-testable without the FX thread
- Rewire IdeController/Program/editor.fxml to the native control, add
cut/copy/paste and symbol-table menu items; drop WebView (javafx.web
no longer required, org.fxmisc.richtext 0.11.7 added)
- Remove the vendored CodeMirror bundle (129 files, ~22k lines)
- Disk upgrade: validate the image is a Lawless Legends disk before
offering an upgrade, and verify save-game writes by re-reading them
- Add unit tests for the syntax definitions, marker renderer, and
editor control
Note: version.properties (local build overrides: mac lwjgl natives,
jacoco agent) is intentionally left uncommitted.
- Blockly v12.4.1 -> v13.2.1 (blockly_compressed.js, blocks_compressed.js,
msg/en.js, new media/drop.mp3)
- Fix v13 validation errors: nameless value input on set_<type> blocks,
guard null names in the variable/attribute dropdowns and create_<type>
inputs, ARIA label on the text-field editor textarea
- Fix O(n^2) import (the Windows-only 'JavaScript execution terminated'
crash): hide the JavaFX token from navigator.userAgent before Blockly
loads so render management uses the requestAnimationFrame batching path
instead of alwaysImmediatelyRender; domToWorkspace now renders once.
Saloon import drops from ~6.5s to ~250ms (329/329 blocks, verified on
macOS)
- Add init/load timing logs and a JS-engine liveness probe to the editor
controller for diagnosing WebView-level failures