espruino / EspruinoWebIDE

The Espruino Web IDE - A Chrome Web App for programming Espruino
Apache License 2.0
367 stars 158 forks source link

Decode JS doesn't fully decode #297

Closed bobrippling closed 3 months ago

bobrippling commented 3 months ago

Possibly related to #283, I notice that the Decode JS functionality will occasionally not fully decode JS, for example with gatthrm's boot code is always shown with Decode JS, even after clicking Decode JS.

To reproduce:

thyttan commented 3 months ago

I seem to hit this with any pretokenized file as well. Been seeing it for a while.

Starting the Web IDE in chromium browser and triggering the bug:

Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
EspruinoWebIDE/#:1 Third-party cookie will be blocked. Learn more in the Issues tab.
settingsConsole.js:30 No chrome.serial - Chrome Serial disabled
settingsConsole.js:30 No chrome.sockets - Chrome Socket disabled
settingsConsole.js:30 serial_frame: Not running inside an iframe
settingsConsole.js:30 Remote Connection enabled
settingsConsole.js:30 UTF8 Library loaded successfully
settingsConsole.js:30 No chrome.storage API - disabling Offline mode
settingsConsole.js:30 GET window.localStorage = "{\"BAUD_RATE\":9600,\"SERIAL_IGNORE\":\"/dev/ttyS*|/dev/*.SOC|/dev/*.MALS\",\"SERIAL_FLOW_CONTROL\":true,\"SERIAL_AUDIO\":\"0\",\"WEB_BLUETOOTH\":true,\"WEB_BLUETOOTH_FILTER\":\"\",\"WEB_SERIAL\":true,\"EMULATOR_BANGLEJS\":true,\"WEBRTC_BRIDGE_ID\":\"\",\"RESET_BEFORE_SEND\":true,\"STORE_LINE_NUMBERS\":true,\"MODULE_URL\":\"https://www.espruino.com/modules|https://banglejs.com/apps/modules\",\"MODULE_EXTENSIONS\":\".min.js|.js\",\"MODULE_AS_FUNCTION\":true,\"MODULE_PROXY_ENABLED\":false,\"MODULE_PROXY_URL\":\"\",\"MODULE_PROXY_PORT\":\"\",\"ENV_ON_CONNECT\":true,\"BLOCKLY_TO_JS\":false,\"BLOCKLY_LANGUAGE\":\"en\",\"BLOCKLY_EXTENSIONS\":\"|bluetooth|robot|\",\"KEYMAP\":\"sublime\",\"THEME\":\"default\",\"INDENTATION_TYPE\":\"spaces\",\"TAB_SIZE\":2,\"DISABLE_CODE_HINTS\":false,\"BOARD_JSON_URL\":\"https://www.espruino.com/json\",\"SERIAL_THROTTLE_SEND\":0,\"COMPILATION\":true,\"COMPILATION_URL\":\"https://www.espruino.com/service/compiler\",\"UNICODE\":false,\"MINIFICATION_LEVEL\":\"\",\"MODULE_MINIFICATION_LEVEL\":\"ESPRIMA\",\"MINIFICATION_Mangle\":true,\"SHOW_WEBCAM_ICON\":0,\"WEBCAM_CONSTRAINTS\":0,\"FONT_SIZE\":12,\"UI_MODE\":\"Normal\",\"SHOW_CODE_LINK_ICON\":false,\"ENABLE_Testing\":false,\"Sound_Success\":\"\",\"Sound_Warning\":\"\",\"Sound_Error\":\"\",\"Sound_Info\":\"\",\"Speak_Success\":false,\"Speak_Warning\":false,\"Speak_Error\":false,\"Speak_Info\":false,\"SHOW_TERMINAL_LOGGER_ICON\":false,\"TERMINAL_LOGGER_SAVE_TO_LOCALSTORAGE\":false,\"PRETOKENISE\":false,\"SAVE_ON_SEND\":3,\"SAVE_STORAGE_FILE\":\"supaclk.app.js\",\"LOAD_STORAGE_FILE\":2,\"SET_TIME_ON_WRITE\":true,\"NOT_FIRST_RUN\":true}"
settingsConsole.js:30 Initialising SettingsConsole
settingsConsole.js:30 Initialising Utils
settingsConsole.js:30 Initialising Config
settingsConsole.js:30 Initialising HTML
settingsConsole.js:30 Initialising Notifications
settingsConsole.js:30 Initialising Status
settingsConsole.js:30 Initialising App
settingsConsole.js:30 Initialising File
settingsConsole.js:30 Initialising Serial
settingsConsole.js:30   - Initialising Serial Web Audio
settingsConsole.js:30   - Initialising Serial Web Bluetooth
settingsConsole.js:30 BT> bluetooth.getDevices exists - grab known devices
serial_web_bluetooth.js:88 Web Bluetooth is experimental on this platform. See https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md
settingsConsole.js:30   - Initialising Serial Web Serial
settingsConsole.js:30 Serial> serial.getPorts exists - grab known devices
settingsConsole.js:30   - Initialising Serial Remote Connection
settingsConsole.js:30   - Initialising Serial Emulator
settingsConsole.js:30 Initialising RemoteConnection
settingsConsole.js:30 Initialising Terminal
settingsConsole.js:30 Initialising CodeWriter
settingsConsole.js:30 Initialising Modules
settingsConsole.js:30 Initialising Env
settingsConsole.js:30 Initialising Flasher
settingsConsole.js:30 Initialising FlasherESP8266
settingsConsole.js:30 Initialising EditorBlockly
settingsConsole.js:30 Initialising EditorJavaScript
settingsConsole.js:30 Initialising Send
settingsConsole.js:30 Initialising MenuPortSelector
settingsConsole.js:30 Initialising MenuSettings
settingsConsole.js:30 Initialising MenuFlasher
settingsConsole.js:30 Initialising SettingsAbout
settingsConsole.js:30 Initialising SettingsFlasher
settingsConsole.js:30 Initialising BoardJSON
settingsConsole.js:30 Initialising VersionChecker
settingsConsole.js:30 Initialising Compiler
settingsConsole.js:30 Initialising Assembler
settingsConsole.js:30 Initialising GetGitHub
settingsConsole.js:30 Initialising Unicode
settingsConsole.js:30 Initialising Minify
settingsConsole.js:30 Initialising Tutorial
settingsConsole.js:30 Initialising Webcam
settingsConsole.js:30 Initialising FontSize
settingsConsole.js:30 Initialising UiMode
settingsConsole.js:30 Initialising URLHandler
settingsConsole.js:30 Initialising CodeLink
settingsConsole.js:30 Initialising Testing
settingsConsole.js:30 Initialising Notification_Sound
settingsConsole.js:30 Initialising Tern
settingsConsole.js:30 Initialising Debugger
settingsConsole.js:30 Initialising Tour
settingsConsole.js:30 Initialising SettingsProfile
settingsConsole.js:30 Initialising HelpLinks
settingsConsole.js:30 Initialising Arrows
settingsConsole.js:30 Initialising Storage
settingsConsole.js:30 Initialising KeyShortcuts
settingsConsole.js:30 Initialising TerminalLogger
settingsConsole.js:30 Initialising CoreModules
settingsConsole.js:30 Initialising Pretokenise
settingsConsole.js:30 Initialising SaveOnSend
settingsConsole.js:30 Initialising SetTime
settingsConsole.js:30 Handling URL "https://espruino.github.io/EspruinoWebIDE/#"
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
blockly_espruino.js:38 window.onload ?lang=en&Enable=%7Cbluetooth%7Crobot%7C
EspruinoWebIDE/#:1 Third-party cookie will be blocked. Learn more in the Issues tab.
settingsConsole.js:30 >>> Connecting...
settingsConsole.js:30 Set Slow Write = true ('Throttle Send'='Auto')
settingsConsole.js:30 BT> Starting device chooser
serial_web_bluetooth.js:140 Web Bluetooth is experimental on this platform. See https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md
settingsConsole.js:30 >>> Connecting to Bangle.js XXXX
settingsConsole.js:30 BT>  Device Name:       Bangle.js XXXX
settingsConsole.js:30 BT>  Device ID:         XXXXXXXXXXXXXXXXXXXXXXXX
settingsConsole.js:30 >>> Connected to BLE
settingsConsole.js:30 BT> Connected
settingsConsole.js:30 >>> Configuring BLE...
settingsConsole.js:30 BT> Got service
settingsConsole.js:30 >>> Configuring BLE....
settingsConsole.js:30 BT> RX characteristic:{}
settingsConsole.js:30 >>> Configuring BLE....
settingsConsole.js:30 >>> Configuring BLE.....
settingsConsole.js:30 BT> TX characteristic:{}
settingsConsole.js:30 >>> Configuring BLE.....
settingsConsole.js:30 Set Slow Write = false (forced)
settingsConsole.js:30 >>> BLE configured. Receiving data...
settingsConsole.js:30 Connected {portName: 'Bangle.js XXXX'}
settingsConsole.js:30 Received a prompt after sending newline... good!
settingsConsole.js:30 >>> Sending...
settingsConsole.js:30 ---> "\u0010print(\"<\",\"<<\",JSON.stringify(process.env),\">>\",\">\")\n"
settingsConsole.js:30 >>> Sent
settingsConsole.js:30 BT> Received packet of length 128 - assuming increased MTU
settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< << {\"VERSION\":\"2v22.5\",\"GIT_COMMIT\":\"52352efac\",\"BOARD\":\"BANGLEJS2\",\"RAM\":262144,\"FLASH\":1048576,\"SPIFLASH\":8388608,\"HWVERSION\":2,\"STORAGE\":8388608,\"SERIAL\":\"a9840d55-f1a01afb\",\"CONSOLE\":\"Bluetooth\",\"MODULES\":\"Flash,Storage,heatshrink,crypto,tensorflow,locale\",\"EXPTR\":669248,\"APP_RAM_BASE\":536884832} >> >\r\n>"
settingsConsole.js:30 >>> 
settingsConsole.js:30 [notify_info] Found BANGLEJS2, 2v22.5
settingsConsole.js:30 Loading https://www.espruino.com/json/BANGLEJS2.json
settingsConsole.js:30 Board JSON loaded
blockly_espruino.js:114 Blockly.setBoardJSON  {VERSION: '2v22.5', GIT_COMMIT: '52352efac', BOARD: 'BANGLEJS2', RAM: 262144, FLASH: 1048576, …}
settingsConsole.js:30 Firmware >1.43 supports faster writes over USB
settingsConsole.js:30 Set Slow Write = false ('Throttle Send'='Auto')
settingsConsole.js:30 FIRMWARE: Current 2v22.5, Available 2v22
settingsConsole.js:30 Device found {"portName":"Bangle.js XXXX"}
settingsConsole.js:30 [success] Connected to Web Bluetooth, Bangle.js XXXX
settingsConsole.js:30 >>> Connected to Web Bluetooth, Bangle.js XXXX
settingsConsole.js:30 Received a prompt after sending newline... good!
settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< <<\r\n\"sched.boot.js\"\r\n\"sched.js\"\r\n\"sched.img\"\r\n\"sched\"\r\n\"sched.settings.js\"\r\n\"sched.clkinfo.js\"\r\n\"sched.info\"\r\n\"textinput\"\r\n\"kbmulti.settings.js\"\r\n\"kbmulti.info\"\r\n\"messageicons\"\r\n\"messageicons.img\"\r\n\"messageicons.info\"\r\n\"messagegui\"\r\n\"messagegui.app.js\"\r\n\"messagegui.new.js\"\r\n\"messagegui.boot.js\"\r\n\"messagegui.img\"\r\n\"messagegui.info\"\r\n\"widmessages.wid.js\"\r\n\"widmessages.info\"\r\n\"messages\"\r\n\"messages.settings.js\"\r\n\"messages.info\"\r\n\"widmsggrid.wid.js\"\r\n\"widmsggrid.info\"\r\n\"msgwakefup.boot.js\"\r\n\"msgwakefup.info\"\r\n\"notify\"\r\n\"notify.info\"\r\n\"health.app.js\"\r\n\"health.img\"\r\n\"health.boot.js\"\r\n\"health\"\r\n\"health.settings.js\"\r\n\"health.info\"\r\n\"widminbate.wid.js\"\r\n\"widminbate.info\"\r\n\"podadrem.app.js\"\r\n\"podadrem.img\"\r\n\"podadrem.info\"\r\n\"spotrem.app.js\"\r\n\"spotrem.img\"\r\n\"spotrem.info\"\r\n\"android.app.js\"\r\n\"android.settings.js\"\r\n\"android.img\"\r\n\"widanclk.wid.js\"\r\n\"widanclk.info\"\r\n\"backswipe.boot.js\"\r\n\"backswipe.settings.js\"\r\n\"backswipe.info\"\r\n\"torch.app.js\"\r\n\"torch.img\"\r\n\"torch.settings.js\"\r\n\"torch.info\"\r\n\"calculator.app.js\"\r\n\"calculator.img\"\r\n\"calculator.info\"\r\n\"widbt_notify.wid.js\"\r\n\"widbt_notify.settings.js\"\r\n\"widbt_notify.info\"\r\n\"clock_info\"\r\n\"clock_info.settings.js\"\r\n\"clock_info.info\"\r\n\"smpltmr.app.js\"\r\n\"smpltmr.clkinfo.js\"\r\n\"smpltmr.img\"\r\n\"smpltmr.info\"\r\n\"stopw.clkinfo.js\"\r\n\"clkinfostopw.info\"\r\n\"runplus.img\"\r\n\"dtlaunch.img\"\r\n\"dtlaunch.info\"\r\n\"quicklaunch.settings.js\"\r\n\"quicklaunch.boot.js\"\r\n\"quicklaunch.app.js\"\r\n\"quicklaunch.info\"\r\n\"kineticscroll.boot.js\"\r\n\"kineticscroll.info\"\r\n\"widalarm.wid.js\"\r\n\"widalarm.info\"\r\n\"alarm.app.js\"\r\n\"alarm.img\"\r\n\"alarm.settings.js\"\r\n\"alarm.info\"\r\n\"recorder.img\"\r\n\"recorder.clkinfo.js\"\r\n\"recorder.settings.js\"\r\n\"recorder.info\"\r\n\"bthrm.app.js\"\r\n\"bthrm.recorder.js\"\r\n\"bthrm.0.boot.js\"\r\n\"bthrm.img\"\r\n\"bthrm.settings.js\"\r\n\"bthrm\"\r\n\"bthrm.default.json\"\r\n\"bthrm.info\"\r\n\"fastload.info\"\r\n\"agenda.app.js\"\r\n\"agenda.settings.js\"\r\n\"agenda.clkinfo.js\"\r\n\"agenda.img\"\r\n\"agenda.info\"\r\n\"edgeclk.app.js\"\r\n\"edgeclk.settings.js\"\r\n\"edgeclk.img\"\r\n\"edgeclk.info\"\r\n\"activityreminder.app.js\"\r\n\"activityreminder.boot.js\"\r\n\"activityreminder.settings.js\"\r\n\"activityreminder.alert.js\"\r\n\"activityreminder\"\r\n\"activityreminder.img\"\r\n\"activityreminder.info\"\r\n\"twenties.boot.js\"\r\n\"twenties.info\"\r\n\"autoreset.boot.js\"\r\n\"autoreset.settings.js\"\r\n\"autoreset.info\"\r\n\"chargent.boot.js\"\r\n\"chargent.info\"\r\n\"setting.app.js\"\r\n\"setting.img\"\r\n\"setting.info\"\r\n\".bootcde\"\r\n\"bootupdate.js\"\r\n\"boot.info\"\r\n\"backswipe.json\"\r\n\"dtlaunch.json\"\r\n\"fastload.json\"\r\n\"messages.settings.json\"\r\n\"mysetup.info\"\r\n\"android.settings.json\"\r\n\"health-2024-5.raw\"\r\n\"widbt_notify.json\"\r\n\"bthrm.json\"\r\n\"runplus.info\"\r\n\"chargent.json\"\r\n\"petStatus.json\"\r\n\"recorder.log20240521a.csv\\u0001\"\r\n\"dtlaunch.app.js\"\r\n\"dtlaunch.settings.js\"\r\n\"runplus.app.js\"\r\n\"runplus.settings.js\"\r\n\"runplus_karvonen\"\r\n\"edgeclk.settings.json\"\r\n\"android.boot.js\"\r\n\"android.info\"\r\n\"recorder.log20240527a.csv\\u0001\"\r\n\"exstats.json\"\r\n\"autoreset.json\"\r\n\"recorder.app.js\"\r\n\"recorder.wid.js\"\r\n\"fastreset.boot.js\"\r\n\"fastreset.info\"\r\n\"android.calendar.json\"\r\n\"health-2024-6.raw\"\r\n\"supaclk.img\"\r\n\"supaclk.info\"\r\n\"launch.cache.json\"\r\n\"setting.json\"\r\n\"quicklaunch.json\"\r\n\"recorder.log20240601a.csv\\u0001\"\r\n\"recorder.json\"\r\n\"clock_info.json\"\r\n\"fastload.5.boot.js\"\r\n\"fastload.settings.js\"\r\n\".boot0\"\r\n\"supaclk.app.js\"\r\n\"fastload.cache\"\r\n\"sched.json\"\r\n\"fastload.history.json\"\r\n\"activityreminder.data.json\"\r\n>> >\r\n>"
settingsConsole.js:30 >>> 
settingsConsole.js:30 Found StorageFile recorder.log20240521a.csv
settingsConsole.js:30 Found StorageFile recorder.log20240527a.csv
settingsConsole.js:30 Found StorageFile recorder.log20240601a.csv
settingsConsole.js:30 Found a prompt... great!
settingsConsole.js:30 >>> Sending...
settingsConsole.js:30 ---> "\u0010print(\"<\",\"<<\");(function(filename) {\nvar s = require(\"Storage\").read(filename);\nif(s){ for (var i=0;i<s.length;i+=384) console.log(btoa(s.substr(i,384))); } else {\nvar f=require(\"Storage\").open(filename,\"r\");var d=f.read(384);\nwhile (d!==undefined) {console.log(btoa(d));d=f.read(384);}\n}})(\"activityreminder.app.js\");;print(\">>\",\">\")\n"
settingsConsole.js:30 >>> Sent
settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< <<\r\nKKooKXuuYWN0aXZpdHlyZW1pbmRlcj1yZXF1aXJlKNEQYWN0aXZpdHlyZW1pbmRlcik7rWFjdGl2aXR5cmVtaW5kZXJfZGF0YT1hY3Rpdml0eXJlbWluZGVyLmxvYWREYXRhKCk7rVc9Zy5nZXRXaWR0aCgpO6pnZXRIb3Vyc01pbnMoZGF0ZSl7rGg9ZGF0ZS5nZXRIb3VycygpO6xtPWRhdGUuZ2V0TWludXRlcygpO6soIiIraCkuc3Vic3RyKC0yKSvRATorKNEBMCttKS5zdWJzdHIoLTIpO32qZHJhd0RhdGEobmFtZSx2YWx1ZSx5KXtnLmRyYXdTdHJpbmcobmFtZSwxMCx5KTtnLmRyYXdTdHJpbmcodmFsdWUsMTAwLHkpO32qZHJhd0luZm8oKXusaD0xOCx5PWg7Zy5zZXRDb2xvcihnLnRoZW1lLmZnKTtnLnNldEZvbnQo0QZWZWN0b3IsaCkuc2V0Rm9udEFsaWduKC0xLC0xKTtn\r\nLmRyYXdMaW5lKDAsMjUsVywyNSk7Zy5kcmF3TGluZSgwLDI2LFcsMjYpO2cuZHJhd1N0cmluZyjRDUN1cnJlbnQgQ3ljbGUsMTAseZZoKTtkcmF3RGF0YSjRBVN0YXJ0LGdldEhvdXJzTWlucyhhY3Rpdml0eXJlbWluZGVyX2RhdGEuc3RlcHNEYXRlKSx5lmgpO2RyYXdEYXRhKNEFU3RlcHMsZ2V0Q3VycmVudFN0ZXBzKCkseZZoKTt9qmdldEN1cnJlbnRTdGVwcygpe61oZWFsdGg9QmFuZ2xlLmdldEhlYWx0aFN0YXR1cyjRA2RheSk7q2hlYWx0aC5zdGVwcy1hY3Rpdml0eXJlbWluZGVyX2RhdGEuc3RlcHNPbkRhdGU7fapydW4oKXtnLmNsZWFyKCk7QmFuZ2xlLmxvYWRXaWRnZXRzKCk7QmFuZ2xlLmRyYXdXaWRnZXRzKCk7ZHJhd0luZm8oKTtCYW5nbGUuc2V0VUkoe21vZGU6\r\n0QZjdXN0b20sYmFjazpsb2FkfSl9cnVuKCk7fSkoKTs=\r\n>> >\r\n"
settingsConsole.js:30 >>> 
settingsConsole.js:30 View activityreminder.app.js
settingsConsole.js:30 Couldn't guess format
settingsConsole.js:30 View activityreminder.app.js
settingsConsole.js:30 Couldn't guess format
gfwilliams commented 3 months ago

Thanks - it was raw strings. Just fixed this - the github-hosted IDE should have the changes right away

thyttan commented 3 months ago

@gfwilliams

For long pretokenized files decoding doesn't work still (IIRC I have seen this also before raw strings were introduced).

Here's me connecting to my watch and trying to decode "alarm.app.js" that is pretokenized (if it's any help - it doesn't seem to tell very much):

Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
EspruinoWebIDE/#:112 Third-party cookie will be blocked. Learn more in the Issues tab.
settingsConsole.js:30 No chrome.serial - Chrome Serial disabled
settingsConsole.js:30 No chrome.sockets - Chrome Socket disabled
settingsConsole.js:30 serial_frame: Not running inside an iframe
settingsConsole.js:30 Remote Connection enabled
settingsConsole.js:30 UTF8 Library loaded successfully
settingsConsole.js:30 No chrome.storage API - disabling Offline mode
settingsConsole.js:30 GET window.localStorage = "{\"BAUD_RATE\":9600,\"SERIAL_IGNORE\":\"/dev/ttyS*|/dev/*.SOC|/dev/*.MALS\",\"SERIAL_FLOW_CONTROL\":true,\"SERIAL_AUDIO\":\"0\",\"WEB_BLUETOOTH\":true,\"WEB_BLUETOOTH_FILTER\":\"\",\"WEB_SERIAL\":true,\"EMULATOR_BANGLEJS\":true,\"WEBRTC_BRIDGE_ID\":\"\",\"RESET_BEFORE_SEND\":true,\"STORE_LINE_NUMBERS\":true,\"MODULE_URL\":\"https://www.espruino.com/modules|https://banglejs.com/apps/modules\",\"MODULE_EXTENSIONS\":\".min.js|.js\",\"MODULE_AS_FUNCTION\":true,\"MODULE_PROXY_ENABLED\":false,\"MODULE_PROXY_URL\":\"\",\"MODULE_PROXY_PORT\":\"\",\"ENV_ON_CONNECT\":true,\"BLOCKLY_TO_JS\":false,\"BLOCKLY_LANGUAGE\":\"en\",\"BLOCKLY_EXTENSIONS\":\"|bluetooth|robot|\",\"KEYMAP\":\"sublime\",\"THEME\":\"default\",\"INDENTATION_TYPE\":\"spaces\",\"TAB_SIZE\":2,\"DISABLE_CODE_HINTS\":false,\"BOARD_JSON_URL\":\"https://www.espruino.com/json\",\"SERIAL_THROTTLE_SEND\":0,\"COMPILATION\":true,\"COMPILATION_URL\":\"https://www.espruino.com/service/compiler\",\"UNICODE\":false,\"MINIFICATION_LEVEL\":\"\",\"MODULE_MINIFICATION_LEVEL\":\"ESPRIMA\",\"MINIFICATION_Mangle\":true,\"SHOW_WEBCAM_ICON\":0,\"WEBCAM_CONSTRAINTS\":0,\"FONT_SIZE\":12,\"UI_MODE\":\"Normal\",\"SHOW_CODE_LINK_ICON\":false,\"ENABLE_Testing\":false,\"Sound_Success\":\"\",\"Sound_Warning\":\"\",\"Sound_Error\":\"\",\"Sound_Info\":\"\",\"Speak_Success\":false,\"Speak_Warning\":false,\"Speak_Error\":false,\"Speak_Info\":false,\"SHOW_TERMINAL_LOGGER_ICON\":false,\"TERMINAL_LOGGER_SAVE_TO_LOCALSTORAGE\":false,\"PRETOKENISE\":false,\"SAVE_ON_SEND\":3,\"SAVE_STORAGE_FILE\":\"snappybtn.boot.js\",\"LOAD_STORAGE_FILE\":2,\"SET_TIME_ON_WRITE\":true,\"NOT_FIRST_RUN\":true}"
settingsConsole.js:30 Initialising SettingsConsole
settingsConsole.js:30 Initialising Utils
settingsConsole.js:30 Initialising Config
settingsConsole.js:30 Initialising HTML
settingsConsole.js:30 Initialising Notifications
settingsConsole.js:30 Initialising Status
settingsConsole.js:30 Initialising App
settingsConsole.js:30 Initialising File
settingsConsole.js:30 Initialising Serial
settingsConsole.js:30   - Initialising Serial Web Audio
settingsConsole.js:30   - Initialising Serial Web Bluetooth
settingsConsole.js:30 BT> bluetooth.getDevices exists - grab known devices
serial_web_bluetooth.js:88 Web Bluetooth is experimental on this platform. See https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md
settingsConsole.js:30   - Initialising Serial Web Serial
settingsConsole.js:30 Serial> serial.getPorts exists - grab known devices
settingsConsole.js:30   - Initialising Serial Remote Connection
settingsConsole.js:30   - Initialising Serial Emulator
settingsConsole.js:30 Initialising RemoteConnection
settingsConsole.js:30 Initialising Terminal
settingsConsole.js:30 Initialising CodeWriter
settingsConsole.js:30 Initialising Modules
settingsConsole.js:30 Initialising Env
settingsConsole.js:30 Initialising Flasher
settingsConsole.js:30 Initialising FlasherESP8266
settingsConsole.js:30 Initialising EditorBlockly
settingsConsole.js:30 Initialising EditorJavaScript
settingsConsole.js:30 Initialising Send
settingsConsole.js:30 Initialising MenuPortSelector
settingsConsole.js:30 Initialising MenuSettings
settingsConsole.js:30 Initialising MenuFlasher
settingsConsole.js:30 Initialising SettingsAbout
settingsConsole.js:30 Initialising SettingsFlasher
settingsConsole.js:30 Initialising BoardJSON
settingsConsole.js:30 Initialising VersionChecker
settingsConsole.js:30 Initialising Compiler
settingsConsole.js:30 Initialising Assembler
settingsConsole.js:30 Initialising GetGitHub
settingsConsole.js:30 Initialising Unicode
settingsConsole.js:30 Initialising Minify
settingsConsole.js:30 Initialising Tutorial
settingsConsole.js:30 Initialising Webcam
settingsConsole.js:30 Initialising FontSize
settingsConsole.js:30 Initialising UiMode
settingsConsole.js:30 Initialising URLHandler
settingsConsole.js:30 Initialising CodeLink
settingsConsole.js:30 Initialising Testing
settingsConsole.js:30 Initialising Notification_Sound
settingsConsole.js:30 Initialising Tern
settingsConsole.js:30 Initialising Debugger
settingsConsole.js:30 Initialising Tour
settingsConsole.js:30 Initialising SettingsProfile
settingsConsole.js:30 Initialising HelpLinks
settingsConsole.js:30 Initialising Arrows
settingsConsole.js:30 Initialising Storage
settingsConsole.js:30 Initialising KeyShortcuts
settingsConsole.js:30 Initialising TerminalLogger
settingsConsole.js:30 Initialising CoreModules
settingsConsole.js:30 Initialising Pretokenise
settingsConsole.js:30 Initialising SaveOnSend
settingsConsole.js:30 Initialising SetTime
Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'.
settingsConsole.js:30 Handling URL "https://espruino.github.io/EspruinoWebIDE/#"
blockly_espruino.js:38 window.onload ?lang=en&Enable=%7Cbluetooth%7Crobot%7C
settingsConsole.js:30 >>> Connecting...
settingsConsole.js:30 Set Slow Write = true ('Throttle Send'='Auto')
settingsConsole.js:30 BT> Starting device chooser
serial_web_bluetooth.js:140 Web Bluetooth is experimental on this platform. See https://github.com/WebBluetoothCG/web-bluetooth/blob/main/implementation-status.md
EspruinoWebIDE/#:1 Third-party cookie will be blocked. Learn more in the Issues tab.
settingsConsole.js:30 >>> Connecting to Bangle.js XXXX
settingsConsole.js:30 BT>  Device Name:       Bangle.js XXXX
settingsConsole.js:30 BT>  Device ID:         XXXXXXXXXXXXXXXXXXXXXXXX
settingsConsole.js:30 >>> Connected to BLE
settingsConsole.js:30 BT> Connected
settingsConsole.js:30 >>> Configuring BLE...
settingsConsole.js:30 BT> Got service
settingsConsole.js:30 >>> Configuring BLE....
settingsConsole.js:30 BT> RX characteristic:{}
settingsConsole.js:30 >>> Configuring BLE....
settingsConsole.js:30 >>> Configuring BLE.....
settingsConsole.js:30 BT> TX characteristic:{}
settingsConsole.js:30 >>> Configuring BLE.....
settingsConsole.js:30 Set Slow Write = false (forced)
settingsConsole.js:30 >>> BLE configured. Receiving data...
settingsConsole.js:30 Connected {portName: 'Bangle.js XXXX'}
settingsConsole.js:30 Received a prompt after sending newline... good!
settingsConsole.js:30 >>> Sending...
settingsConsole.js:30 ---> "\u0010print(\"<\",\"<<\",JSON.stringify(process.env),\">>\",\">\")\n"
settingsConsole.js:30 >>> Sent
settingsConsole.js:30 BT> Received packet of length 128 - assuming increased MTU
settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< << {\"VERSION\":\"2v22.15\",\"GIT_COMMIT\":\"bf68eb5c0\",\"BOARD\":\"BANGLEJS2\",\"RAM\":262144,\"FLASH\":1048576,\"SPIFLASH\":8388608,\"HWVERSION\":2,\"STORAGE\":8388608,\"SERIAL\":\"a9840d55-f1a01afb\",\"CONSOLE\":\"Bluetooth\",\"MODULES\":\"Flash,Storage,heatshrink,crypto,tensorflow,locale\",\"EXPTR\":670208,\"APP_RAM_BASE\":536884832} >> >\r\n>"
settingsConsole.js:30 >>> 
settingsConsole.js:30 [notify_info] Found BANGLEJS2, 2v22.15
settingsConsole.js:30 Loading https://www.espruino.com/json/BANGLEJS2.json
settingsConsole.js:30 Board JSON loaded
blockly_espruino.js:114 Blockly.setBoardJSON  {VERSION: '2v22.15', GIT_COMMIT: 'bf68eb5c0', BOARD: 'BANGLEJS2', RAM: 262144, FLASH: 1048576, …}
settingsConsole.js:30 Firmware >1.43 supports faster writes over USB
settingsConsole.js:30 Set Slow Write = false ('Throttle Send'='Auto')
settingsConsole.js:30 FIRMWARE: Current 2v22.15, Available 2v22
settingsConsole.js:30 Device found {"portName":"Bangle.js XXXX"}
settingsConsole.js:30 [success] Connected to Web Bluetooth, Bangle.js XXXX
settingsConsole.js:30 >>> Connected to Web Bluetooth, Bangle.js XXXX
settingsConsole.js:30 Found a prompt... great!
settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< <<\r\n\"sched.img\"\r\n\"sched.info\"\r\n\"kbmulti.info\"\r\n\"messageicons.info\"\r\n\"messagegui.img\"\r\n\"messagegui.info\"\r\n\"widmessages.info\"\r\n\"messages.info\"\r\n\"widmsggrid.info\"\r\n\"msgwakefup.info\"\r\n\"notify.info\"\r\n\"health.img\"\r\n\"health.info\"\r\n\"widminbate.info\"\r\n\"podadrem.img\"\r\n\"podadrem.info\"\r\n\"spotrem.img\"\r\n\"spotrem.info\"\r\n\"android.img\"\r\n\"android.info\"\r\n\"widanclk.info\"\r\n\"backswipe.info\"\r\n\"torch.img\"\r\n\"torch.info\"\r\n\"calculator.img\"\r\n\"calculator.info\"\r\n\"widbt_notify.info\"\r\n\"clock_info.json\"\r\n\"clock_info.info\"\r\n\"smpltmr.img\"\r\n\"smpltmr.info\"\r\n\"clkinfostopw.info\"\r\n\"runplus.img\"\r\n\"dtlaunch.img\"\r\n\"dtlaunch.info\"\r\n\"quicklaunch.info\"\r\n\"kineticscroll.info\"\r\n\"widalarm.info\"\r\n\"alarm.img\"\r\n\"alarm.info\"\r\n\"recorder.img\"\r\n\"recorder.info\"\r\n\"bthrm.img\"\r\n\"bthrm.default.json\"\r\n\"bthrm.info\"\r\n\"fastload.info\"\r\n\"agenda.img\"\r\n\"agenda.info\"\r\n\"edgeclk.img\"\r\n\"edgeclk.info\"\r\n\"activityreminder.img\"\r\n\"activityreminder.info\"\r\n\"twenties.info\"\r\n\"autoreset.info\"\r\n\"chargent.info\"\r\n\"setting.img\"\r\n\"setting.info\"\r\n\"boot.info\"\r\n\"backswipe.json\"\r\n\"autoreset.json\"\r\n\"dtlaunch.json\"\r\n\"fastload.json\"\r\n\"messages.settings.json\"\r\n\"widbt_notify.json\"\r\n\"mysetup.info\"\r\n\"android.settings.json\"\r\n\"health-2024-6.raw\"\r\n\"recorder.log20240604a.csv\\u0001\"\r\n\"sched.boot.js\"\r\n\"sched.js\"\r\n\"sched\"\r\n\"sched.settings.js\"\r\n\"sched.clkinfo.js\"\r\n\"textinput\"\r\n\"kbmulti.settings.js\"\r\n\"messageicons\"\r\n\"messageicons.img\"\r\n\"messagegui\"\r\n\"messagegui.app.js\"\r\n\"messagegui.new.js\"\r\n\"messagegui.boot.js\"\r\n\"widmessages.wid.js\"\r\n\"messages\"\r\n\"messages.settings.js\"\r\n\"widmsggrid.wid.js\"\r\n\"msgwakefup.boot.js\"\r\n\"notify\"\r\n\"health.app.js\"\r\n\"health.boot.js\"\r\n\"health\"\r\n\"health.settings.js\"\r\n\"widminbate.wid.js\"\r\n\"podadrem.app.js\"\r\n\"spotrem.app.js\"\r\n\"android.app.js\"\r\n\"android.settings.js\"\r\n\"android.boot.js\"\r\n\"widanclk.wid.js\"\r\n\"backswipe.boot.js\"\r\n\"backswipe.settings.js\"\r\n\"torch.app.js\"\r\n\"torch.settings.js\"\r\n\"calculator.app.js\"\r\n\"widbt_notify.wid.js\"\r\n\"widbt_notify.settings.js\"\r\n\"clock_info\"\r\n\"clock_info.settings.js\"\r\n\"smpltmr.app.js\"\r\n\"smpltmr.clkinfo.js\"\r\n\"stopw.clkinfo.js\"\r\n\"dtlaunch.app.js\"\r\n\"dtlaunch.settings.js\"\r\n\"quicklaunch.settings.js\"\r\n\"quicklaunch.boot.js\"\r\n\"quicklaunch.app.js\"\r\n\"kineticscroll.boot.js\"\r\n\"widalarm.wid.js\"\r\n\"recorder.app.js\"\r\n\"recorder.wid.js\"\r\n\"recorder.clkinfo.js\"\r\n\"recorder.settings.js\"\r\n\"bthrm.app.js\"\r\n\"bthrm.recorder.js\"\r\n\"bthrm.0.boot.js\"\r\n\"bthrm.settings.js\"\r\n\"bthrm\"\r\n\"fastload.5.boot.js\"\r\n\"fastload.settings.js\"\r\n\"agenda.app.js\"\r\n\"agenda.settings.js\"\r\n\"agenda.clkinfo.js\"\r\n\"edgeclk.app.js\"\r\n\"edgeclk.settings.js\"\r\n\"activityreminder.app.js\"\r\n\"activityreminder.boot.js\"\r\n\"activityreminder.settings.js\"\r\n\"activityreminder.alert.js\"\r\n\"activityreminder\"\r\n\"twenties.boot.js\"\r\n\"autoreset.boot.js\"\r\n\"autoreset.settings.js\"\r\n\"chargent.boot.js\"\r\n\"setting.app.js\"\r\n\".bootcde\"\r\n\"bootupdate.js\"\r\n\"chargent.json\"\r\n\"edgeclk.settings.json\"\r\n\"recorder.log20240606a.csv\\u0001\"\r\n\"android.calendar.json\"\r\n\"recorder.log20240607a.csv\\u0001\"\r\n\"mylocation.settings.js\"\r\n\"mylocation.info\"\r\n\"astrocalc.app.js\"\r\n\"astrocalc.img\"\r\n\"first-quarter.img\"\r\n\"last-quarter.img\"\r\n\"waning-crescent.img\"\r\n\"waning-gibbous.img\"\r\n\"full.img\"\r\n\"new.img\"\r\n\"waxing-gibbous.img\"\r\n\"waxing-crescent.img\"\r\n\"astrocalc.info\"\r\n\"runplus.app.js\"\r\n\"runplus.settings.js\"\r\n\"runplus_karvonen\"\r\n\"runplus.info\"\r\n\"snappybtn.info\"\r\n\"recorder.log20240609a.csv\\u0001\"\r\n\"recorder.json\"\r\n\"exstats.json\"\r\n\"snappybtn.boot.js\"\r\n\"burn.img\"\r\n\"activityreminder.data.json\"\r\n\"sched.json\"\r\n\"burn.app.js\"\r\n\"burn.info\"\r\n\"kcal.txt\\u0001\"\r\n\"smclock.img\"\r\n\"smclock.app.js\"\r\n\"smclock.settings.js\"\r\n\"smclock.info\"\r\n\"launch.cache.json\"\r\n\"fastload.cache\"\r\n\"setting.json\"\r\n\".boot0\"\r\n\"smclock.json\"\r\n\"quicklaunch.json\"\r\n\"fastload.history.json\"\r\n\"fileman.app.js\"\r\n\"fileman.img\"\r\n\"fileman.info\"\r\n\"alarm.app.js\"\r\n\"alarm.settings.js\"\r\n>> >\r\n>"
settingsConsole.js:30 >>> 
settingsConsole.js:30 Found StorageFile kcal.txt
settingsConsole.js:30 Found StorageFile recorder.log20240604a.csv
settingsConsole.js:30 Found StorageFile recorder.log20240606a.csv
settingsConsole.js:30 Found StorageFile recorder.log20240607a.csv
settingsConsole.js:30 Found StorageFile recorder.log20240609a.csv
settingsConsole.js:30 Found a prompt... great!
settingsConsole.js:30 >>> Sending...
settingsConsole.js:30 ---> "\u0010print(\"<\",\"<<\");(function(filename) {\nvar s = require(\"Storage\").read(filename);\nif(s){ for (var i=0;i<s.length;i+=384) console.log(btoa(s.substr(i,384))); } else {\nvar f=require(\"Storage\").open(filename,\"r\");var d=f.read(384);\nwhile (d!==undefined) {console.log(btoa(d));d=f.read(384);}\n}})(\"alarm.app.js\");;print(\">>\",\">\")\n"
settingsConsole.js:30 >>> Sent
2settingsConsole.js:30 >>> Receiving...
settingsConsole.js:30 Got "< <<\r\nTW9kdWxlcy5hZGRDYWNoZWQo0QpkYXRlX3V0aWxzLKooKXtleHBvcnRzLmRvdz0oYyxhKaJ7rGI9cmVxdWlyZSjRBmxvY2FsZSkuZG93KHtnZXREYXk6KCmiKGN8MCklN30sYSkuc2xpY2UoMCxhijI/MToxMDApO6thijI/Yi50b1VwcGVyQ2FzZSgpOmJ9LGV4cG9ydHMuZG93cz0oZCxjKaJ7rGE9W107pyisYj0wO2I8NztimClhLnB1c2goZXhwb3J0cy5kb3coYisoZKAwKSxjKSk7q2OKMj9hLm1hcChhomEudG9VcHBlckNhc2UoKSk6YX0sZXhwb3J0cy5tb250aD0oYyxhKaJ7rGI9cmVxdWlyZSjRBmxvY2FsZSkubW9udGgoe2dldE1vbnRoOigpoigxMSsoY3wwKSklMTJ9LGEpLnNsaWNlKDAsYYoyPzE6MTAwKTurYYoyP2IudG9VcHBlckNhc2UoKTpifSxleHBvcnRzLm1vbnRo\r\ncz1jonusYT1bXSxkPXJlcXVpcmUo0QZsb2NhbGUpO6corGI9MDtiPDEyO2KYKWEucHVzaChkLm1vbnRoKHtnZXRNb250aDooKaJifSxjKS5zbGljZSgwLGOKMj8xOjEwMCkpO6tjijI/YS5tYXAoYaJhLnRvVXBwZXJDYXNlKCkpOmF9fSk7Ck1vZHVsZXMuYWRkQ2FjaGVkKNEKdGltZV91dGlscyyqKCl7qnNhZmVUaW1lKGEpe6t7ZDphLmSgMCxoOmEuaKAwLG06YS5toDAsczphLnOgMH19rk9ORV9TRUNPTkQ9MWUzO65PTkVfTUlOVVRFPTYwKk9ORV9TRUNPTkQ7rk9ORV9IT1VSPTYwKk9ORV9NSU5VVEU7rk9ORV9EQVk9MjQqT05FX0hPVVI7ZXhwb3J0cy5lbmNvZGVUaW1lPWGiKGE9KHNhZmVUaW1lKGEpKSxhLmQqT05FX0RBWSthLmgqT05FX0hPVVIrYS5tKk9ORV9NSU5VVEUr\r\nYS5zKk9ORV9TRUNPTkQpLGV4cG9ydHMuZGVjb2RlVGltZT1honujKCi/YSlbMF2M0QFuKbDRHE9ubHkgYSBudW1iZXIgY2FuIGJlIGRlY29kZWQ7rGI9TWF0aC5mbG9vcihhL09ORV9EQVkpO2GXYipPTkVfREFZO6xjPU1hdGguZmxvb3IoYS9PTkVfSE9VUik7YZdjKk9ORV9IT1VSO6xkPU1hdGguZmxvb3IoYS9PTkVfTUlOVVRFKTthl2QqT05FX01JTlVURTusZT1NYXRoLmZsb29yKGEvT05FX1NFQ09ORCk7q3tkOmIsaDpjLG06ZCxzOmV9fSxleHBvcnRzLmZvcm1hdFRpbWU9YqJ7rGE9c2FmZVRpbWUoKL9iKVswXYrRAW8/YjpleHBvcnRzLmRlY29kZVRpbWUoYikpO6MoYS5kjDApsNEXZGF5cyBub3Qgc3VwcG9ydGVkIGhlcmU7oyhhLmg8MKBhLmg+MjMpsNEjSW52YWxpZCB2\r\nYWx1ZTogbXVzdCBiZSAwIDw9IGggPD0gMjM7oyhhLm08MKBhLm0+NTkpsNEjSW52YWxpZCB2YWx1ZTogbXVzdCBiZSAwIDw9IG0gPD0gNTk7q2EuaCvRATorKNEBMCthLm0pLnN1YnN0cigtMil9LGV4cG9ydHMuZm9ybWF0RHVyYXRpb249KGMsZCmie2Q9ZKAhMTusYT0nJyxiPXNhZmVUaW1lKCi/YylbMF2K0QFvP2M6ZXhwb3J0cy5kZWNvZGVUaW1lKGMpKTurYi5kPjCeKGGWYi5kK9ECZCApLGIuaD4wnihhlmIuaCvRAmggKSxiLm0+MJ4oYZZiLm0r0QJtICksYi5zPjCeKGGWYi5zK9EBcyksYT1hLnRyaW0oKSxkP2EucmVwbGFjZSjRASAsJycpOmF9LGV4cG9ydHMuZ2V0Q3VycmVudFRpbWVNaWxsaXM9KCmie6xhPbhEYXRlO6soYS5nZXRIb3VycygpKjM2MDArYS5nZXRNaW51\r\ndGVzKCkqNjArYS5nZXRTZWNvbmRzKCkpKjFlM319KTsKTW9kdWxlcy5hZGRDYWNoZWQo0QRidXp6LKooKXtleHBvcnRzLnBhdHRlcm49YaK4UHJvbWlzZShjonuqYigpe6MoYYonJymrYygpO6xkPWFbMF07YT1hLnN1YnN0cigxKTuuZT0uMjUsZj0xO65nPTEwMCxoPTIwMCxpPTUwMDtkitEBLj9CYW5nbGUuYnV6eihnLGUpLnRoZW4oKCmic2V0VGltZW91dChiLDEwMCkpOmSK0QEsP0JhbmdsZS5idXp6KGgsZSkudGhlbigoKaJzZXRUaW1lb3V0KGIsMTAwKSk6ZIrRAS0/QmFuZ2xlLmJ1enooaSxlKS50aGVuKCgponNldFRpbWVvdXQoYiwxMDApKTpkitEBOj9CYW5nbGUuYnV6eihnLGYpLnRoZW4oKCmic2V0VGltZW91dChiLDEwMCkpOmSK0QE7P0JhbmdsZS5idXp6KGgsZiku\r\ndGhlbigoKaJzZXRUaW1lb3V0KGIsMTAwKSk6ZIrRAT0/QmFuZ2xlLmJ1enooaSxmKS50aGVuKCgponNldFRpbWVvdXQoYiwxMDApKTpzZXRUaW1lb3V0KGIsMTAwKX1iKCl9KX0pOwpNb2R1bGVzLmFkZENhY2hlZCjRCWJ1enpfbWVudSyqKCl7ZXhwb3J0cy5wYXR0ZXJuPaooYixjKXusYT1bJycs0QEuLNEBOizRAi4uLNECOjos0QEsLNEBOyzRAiwsLNECOzss0QEtLNEBPSzRAi0tLNECPT0s0QMuLi4s0QM6Ojos0QMtLS0s0QM7Ozss0QM9PT1dO6t7dmFsdWU6TWF0aC5tYXgoMCxhLmluZGV4T2YoYikpLG1pbjowLG1heDphLmxlbmd0aC0xLGZvcm1hdDpiomFbYl2g0QNPZmYsb25jaGFuZ2U6YqJ7cmVxdWlyZSjRBGJ1enopLnBhdHRlcm4oYVtiXSksYyhhW2JdKX19fX0pOwpC\r\nYW5nbGUubG9hZFdpZGdldHMoKTsKQmFuZ2xlLmRyYXdXaWRnZXRzKCk7Cq5zZXR0aW5ncz1PYmplY3QuYXNzaWduKHtzaG93Q29uZmlybTq0LHNob3dBdXRvU25vb3plOrQsc2hvd0hpZGRlbjq0fSxyZXF1aXJlKNEHU3RvcmFnZSkucmVhZEpTT04o0QphbGFybS5qc29uLDEpoHt9KTsKrmZpcnN0RGF5T2ZXZWVrPShyZXF1aXJlKNEHU3RvcmFnZSkucmVhZEpTT04o0QxzZXR0aW5nLmpzb24stCmge30pLmZpcnN0RGF5T2ZXZWVroDA7Cq5XT1JLREFZUz02MjsKrldFRUtFTkQ9Zmlyc3REYXlPZldlZWs/MTkyOjY1OwquRVZFUllfREFZPWZpcnN0RGF5T2ZXZWVrPzI1NDoxMjc7Cq5JTlRFUlZBTFM9W9EDZGF5LNEEd2VlayzRBW1vbnRoLNEEeWVhcl07Cq5JTlRFUlZBTF9MQUJF\r\nTFM9W9EDRGF5LNEEV2VlayzRBU1vbnRoLNEEWWVhcl07Cq5pY29uQWxhcm1Pbj3RAQAr0UwYGIEAAAAAAAAABgBgDgBwHH44Of+cA//AB//gD+fwD+fwH+f4H+f4H+f4H+f4H+H4H/j4D/7wD//wB//gA//AAf+AAH4AAAAAAAAAO65pY29uQWxhcm1PZmY90QEAKyhnLnRoZW1lLmRhcms/0VAYGMEA/////wAAAAAAAAYAYA4AcBx+ODn/nAP/wAf/4A/n8A/n8B/n+B/n+B/nAB/mAB/geB/5/g/5tg/zAwfzhwPzhwHzAwB5tgAB/gAAeDrRUBgYwQD//wAAAAAAAAAABgBgDgBwHH44Of+cA//AB//gD+fwD+fwH+f4H+f4H+cAH+YAH+B4H/n+D/m2D/MDB/OHA/OHAfMDAHm2AAH+AAB4KTuuaWNvblRpbWVyT2490QEAKyhnLnRoZW1lLmRhcms/0VAYGMEA/////wAAAAAAAAAAAAf/4Af/\r\n4AGBgAGBgAGBgAD/AAD/AAB+AAA8AAA8AAB+AADnAADDAAGBgAGBgAGBgAf/4Af/4AAAAAAAAAAAADrRUBgYwQD//wAAAAAAAAAAAAAAB//gB//gAYGAAYGAAYGAAP8AAP8AAH4AADwAADwAAH4AAOcAAMMAAYGAAYGAAYGAB//gB//gAAAAAAAAAAAAKTuuaWNvblRpbWVyT2ZmPdEBACsoZy50aGVtZS5kYXJrP9FQGBjBAP////8AAAAAAAAAAAAH/+AH/+ABgYABgYABgYAA/wAA/wAAfgAAPAAAPAAAfgAA5HgAwf4BgbYBgwMBg4cH84cH8wMAAbYAAf4AAHg60VAYGMEA//8AAAAAAAAAAAAAAAf/4Af/4AGBgAGBgAGBgAD/AAD/AAB+AAA8AAA8AAB+AADkeADB/gGBtgGDAwGDhwfzhwfzAwABtgAB/gAAeCk7rGFsYXJtcz1yZXF1aXJlKNEFc2NoZWQpLmdldEFsYXJtcygpO2FsYXJt\r\ncy5mb3JFYWNoKGWiZS50nDg2NDAwMDAwKTuqaGFuZGxlRmlyc3REYXlPZldlZWsoZG93KXujKGZpcnN0RGF5T2ZXZWVrijEpe6MoKGRvdyYxKYoxKXtkb3eWMTI3O32koygoZG93JjEyOCmKMTI4KXtkb3eXMTI3O319q2Rvdzt9YWxhcm1zLmZpbHRlcihlomUudGltZXKLtykuZm9yRWFjaChhomEuZG93PWhhbmRsZUZpcnN0RGF5T2ZXZWVrKGEuZG93KSk7qmdldExhYmVsKGUpe65kYXRlU3RyPWUuZGF0ZZ5yZXF1aXJlKNEGbG9jYWxlKS5kYXRlKLhEYXR
settingsConsole.js:30 >>> 
settingsConsole.js:30 View alarm.app.js
settingsConsole.js:30 Couldn't guess format
settingsConsole.js:30 View alarm.app.js
settingsConsole.js:30 Couldn't guess format
gfwilliams commented 3 months ago

Ok, just sorted - it'll now always show you the text view when you click 'decode' - I think it was likely due to having non-ASCII characters in the strings - because the contents of strings don't get decoded.

I've now made them decode in a more espruino-y way as well though