ioBroker.javascript icon indicating copy to clipboard operation
ioBroker.javascript copied to clipboard

[Bug]: SAVE | CANCEL buttons for Blockly removed with 9.0.2

Open EvilEls opened this issue 6 months ago • 36 comments

I'm sure that

  • [x] This issue is still present in the current beta version of this adapter
  • [x] There is no other (open) issue with the same topic (use the search!)
  • [x] This issue is not described in the adapter documentation / FAQ (read the docs!)

Script type

Blockly

The problem

When upgrading to Version 9.0.2 in /opt/iobroker/node_modules/iobroker.javascript, node: v20.19.1, js-controller: 7.0.7 there are no longer SAVE | CANCEL buttons after editing a Blockly. Same issue with 9.0.3

Last working version 8.9.2

iobroker.current.log (in debug mode!)

No response

Version of nodejs

20.19.1

Version of ioBroker js-controller

7.0.7

Version of adapter

9.0.x

EvilEls avatar Jun 12 '25 22:06 EvilEls

I can confirm the same issue. It only happens on a script where I declare and use a function. Once I delete the entire block calling the function the cancel and save buttons come back. The behavior is repeatable.

bergteam avatar Jun 13 '25 11:06 bergteam

Can confirm this issue, too. Happens with pretty simple scripts, too.

Image

Horgul123 avatar Jun 13 '25 14:06 Horgul123

Same here on 9.0.3. No SAVE / CANCEL Buttons anymore...

jonnycastaway avatar Jun 14 '25 05:06 jonnycastaway

Same issue here for all versions so far after 8.9.2 (I've tried every single release, all have the same problem)

GitHoubi avatar Jun 14 '25 11:06 GitHoubi

Same issue here for all versions so far after 8.9.2 (I've tried every single release, all have the same problem)

Same for me. Went back to 8.9.2 and Save/Cancel is working again.

wendy2702 avatar Jun 15 '25 10:06 wendy2702

Just tried 9.04, same issue, save is not possible. so back to 8.9.2 again :)

GitHoubi avatar Jun 16 '25 16:06 GitHoubi

Just tried 9.04, same issue, save is not possible. so back to 8.9.2 again :)

this only affects older scripts for me, new ones can be saved

ammawel avatar Jun 17 '25 07:06 ammawel

Tried 9.0.4. Issue persists if there's a function present. For old an also for new Skripts.

jonnycastaway avatar Jun 17 '25 08:06 jonnycastaway

Just tried 9.04, same issue, save is not possible. so back to 8.9.2 again :)

this only affects older scripts for me, new ones can be saved

Can you save new one if theres a function block present? In my system that's not possible.

jonnycastaway avatar Jun 17 '25 08:06 jonnycastaway

For me with 9.0.4 the buttons are still missing if a blockly script contains a function.

Diginix avatar Jun 17 '25 09:06 Diginix

Same here on 9.0.4. No SAVE / CANCEL Buttons anymore...

guc206 avatar Jun 17 '25 09:06 guc206

Just updated to 9.0.4 and Save/Cancel available

Image

Tested with FF

Maybe clean cache helps.

@Diginix @jonnycastaway If i start with a new script and first add the function block the save/cancel buttons are missing. If i start i.e. with a trigger save/cancel is working. I can also add a function later without problems.

Image

wendy2702 avatar Jun 17 '25 11:06 wendy2702

Maybe it works with new scripts, but how should we save already existing ones that were changed? Imho this is still an issue/bug and should be fixed all-encompassing. And what happend if you change something after you have save a new script with trigger and function. Maybe SAVE is gone then too.

Diginix avatar Jun 17 '25 11:06 Diginix

@Diginix > Maybe SAVE is gone then too.

Did you test or is it only an assumption?

My first video shows an existing script. As soon as i add any new Block or modify any parameter i get the buttons.

Is that nor working for you?

Image

Image

wendy2702 avatar Jun 17 '25 11:06 wendy2702

Did you test or is it only an assumption?

This is a question, because your second video ends before such a step.

My first video shows an existing script. As soon as i add any new Block or modify any parameter i get the buttons.

In scripts with functions and adding new blocks, no SAVE appears. In old scripts without function block any changes leads to a SAVE button.

I'm back to 8.9.2. So, I can't do further tests.

Diginix avatar Jun 17 '25 12:06 Diginix

I did some tests with a new script. I can add an element from system and i can save the script. I add step by step elements from other

Image

an I can edit and save the script. But when I add one element from "Sendto" (z.B. telegram) than there is no button to save the script.

guc206 avatar Jun 17 '25 12:06 guc206

When I export an existing script that contains a telegram function and import it into a new script, it shows an error:

Image

guc206 avatar Jun 17 '25 12:06 guc206

@guc206 You should split this in a new issue.

Diginix avatar Jun 17 '25 12:06 Diginix

I just wanted to point out that when importing into a new empty script the button "save" does not appear.

guc206 avatar Jun 17 '25 12:06 guc206

I've just tried 9.0.5. As soon as there is a function in the script, the save button is not available. when there is no function present, it works as expected. this seems to apply for both old and new scripts.

GitHoubi avatar Jun 17 '25 13:06 GitHoubi

Unfortunately, I have the same problem with v9.0.5. I’ve included "Send To (Telegram)" in almost every script. For scripts without "Send To", the save button appears.

AlyxAbyss avatar Jun 17 '25 16:06 AlyxAbyss

Unfortunately, I have the same problem with v9.0.5. I’ve included "Send To (Telegram)" in almost every script. For scripts without "Send To", the save button appears.

same here. only seldom a script without telegram send to or function inside.

GitHoubi avatar Jun 17 '25 17:06 GitHoubi

Sorry the bug is not fully fixed, it's better but not solved. for me the problem occurs when I add a function, after that I cant save anymore.

krobipd avatar Jun 17 '25 19:06 krobipd

If I add an element, e.g. debug, the two buttons appear. If I then copy a part from an old blockly and press save afterwards, the debug element is saved, but the old copied part is not.

It is basically gone.

gm1962 avatar Jun 18 '25 06:06 gm1962

If I add an element, e.g. debug, the two buttons appear. If I then copy a part from an old blockly and press save afterwards, the debug element is saved, but the old copied part is not.

It is basically gone.

I cannot reproduce it. What is the exaclty step by step instructions?

  • Create a fully new Blockly Script (e.g. "Test 1")
  • Add Debug block
  • Go to old Blockly script, select a block(s) and press Ctrl+C
  • Go to "Test 1" and press Ctrl+V
  • Save the blockly script
  • Refresh Browser

In my case the modified blockly "Test 1" is saved.

P.S. With Telegram Block I can reproduce it. But really when pressing F12 I can see an error

Image

Is it really so hard to press F12???

GermanBluefox avatar Jun 18 '25 08:06 GermanBluefox

I can confirm that adding a "send to Telegram" block also does it and nearly all my scripts contain that block so... yeah :D this needs fixing!

sargonphin avatar Jun 18 '25 08:06 sargonphin

Hi,

I recorded a short video demonstrating a problem I encountered with the current version of the JavaScript adapter. When I try to drag a function into the script editor, it doesn't allow me to save the script afterward.

Apologies for the brief misclick during the recording – it happened spontaneously – but the issue is clearly visible in the video nonetheless.

https://power-dreams.com/javascript.mov

krobipd avatar Jun 18 '25 15:06 krobipd

EDIT: Yes I updated to 9.0.6

@GermanBluefox I am now getting a different error in all old scripts, which doesn't seem to be related to Telegram anymore. I cannot save/cancel just as before, the trace below appears in Firefox console when I make a change (sanitized):

Uncaught ReferenceError: Input "RETURN" doesn't exist on "procedures_defnoreturn"
    valueToCode https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1400
    procedures_defreturn https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/own/blocks_procedures.js:196
    blockToCode https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1399
    workspaceToCode https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1397
    blocklyCode2JSCode https://<controller_address>:<controller_port>/adapter/javascript/assets/index-Cek-i92T.js:1155
    onChange https://<controller_address>:<controller_port>/adapter/javascript/assets/index-Cek-i92T.js:1156
    onBlocklyChanged https://<controller_address>:<controller_port>/adapter/javascript/assets/index-Cek-i92T.js:1156
    changeTimer https://<controller_address>:<controller_port>/adapter/javascript/assets/index-Cek-i92T.js:1156
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    setTimeout handler*kc/< https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    componentDidUpdate https://<controller_address>:<controller_port>/adapter/javascript/assets/index-Cek-i92T.js:1156
    fireChangeListener https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1138
    fireNow$$module$build$src$core$events$utils https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:66
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    setTimeout handler*kc/< https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    utils https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:65
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    Pd https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    fireInternal$$module$build$src$core$events$utils https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:65
    fire$$module$build$src$core$events$utils https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:64
    fireDragEndEvent https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1219
    endDrag https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1223
    endDrag https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1256
    onDragEnd https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1472
    handleUp https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:726
    f https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:87
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    Bd https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    id https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    conditionalBind$$module$build$src$core$browser_events https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:87
    bindMouseEvents https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:724
    doStart https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:723
    handleWsStart https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:732
    handleFlyoutStart https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:732
    blockMouseDown https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1425
    f https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:87
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    Bd https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    id https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15
    conditionalBind$$module$build$src$core$browser_events https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:87
    addBlockListeners_ https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1424
    layout_ https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1437
    show https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1417
    updateFlyout_ https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1636
    setSelectedItem https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1635
    onClick_ https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:1624
    f https://<controller_address>:<controller_port>/adapter/javascript/google-blockly/blockly_compressed.js:87
    i https://<controller_address>:<controller_port>/adapter/javascript/assets/index-JSzqpJXf.js:15

sargonphin avatar Jun 18 '25 17:06 sargonphin

just wanted to paste the very same error message @sargonphin ;)

@GermanBluefox that's nothing about telegram anyways it's only in scripts using the actual time function as far as i can see right now

€ alright, tested a bit further - it's only this one: (very first in date and time)

<xml xmlns="https://developers.google.com/blockly/xml">
  <block type="time_compare_ex" id="TqMt3{cv#Kcdv_n[;/DH" x="288" y="63">
    <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>
    <field name="USE_ACTUAL_TIME">TRUE</field>
    <field name="OPTION">&lt;</field>
    <value name="START_TIME">
      <shadow type="text" id="%Y8w}.z$UrEWXp11JN)7">
        <field name="TEXT">12:00</field>
      </shadow>
    </value>
  </block>
</xml>

:)

pandorra2 avatar Jun 18 '25 17:06 pandorra2

I would like to add that I just made a new script before which also uses this exact block. It worked fine, but I think there is a problem with older scripts that use this block

sargonphin avatar Jun 18 '25 17:06 sargonphin