* Beginning refactor: renaming 'device' to 'peripheral', shortening function names, reordering functions, etc.
* Continuing refactoring: renaming some functions to be more verbose in the runtime, adding JSDocs, etc.
* Changing 'device' to 'peripheral', etc.
* Changing 'session' to 'socket'.
* Fixing EV3 menus and menu arg validation, reordering functions, etc.
* Add _send, add some references to documentation, etc.
* Factored out _outputCommand and _inputCommand, renamed some enums, etc.
* Fixed _outputCommand, some other minor cleanup.
* Make _outputCommand and _inputCommand public.
* Added TODO.
* Renamed BLE UUID enums to be clearer.
* Change WeDo2 in comments to WeDo 2.0, etc.
* Changed some WeDo2Motor command names, cleaned up some JSDocs.
* Beginning a major EV3 refactor.
* WeDo2 formatting and comment changes.
* Motor refactoring in EV3: motorTurnClockwise and motorTurnCounterClockwise initial working state.
* Add reminders to possibly cast motor menu args in WeDo2.
* Continue to move motor commands in EV3 to EV3Motor class, don't create new EV3Motor on every poll cycle, etc.
* Factoring EV3 polling value commands, etc.
* Fixing EV3 motor power, position and button pressed, and some commenting, etc.
* Move EV3 motor position parsing to EV3Motor class, move directCommand and directCompoundCommand functions, some commenting, etc.
* Changed WeDo2 motor label enum name.
* Removed some EV3 motor functions that aren't needed, changed menu label enum names, moved some opcodes up to enums.
* Fixing comments and documentation.
* Some commenting.
* Adding further documentation and references to PDFs, changed reply check to be safer, etc.
* Some comment changes.
* Moving some functions around in EV3 and WeDo2 to match.
* Commenting, etc.
* Some renaming of session, etc.
* Fix stopAllMotors in EV3.
* Fixing clearing of motors in EV3.
* Some comment changes.
* Change runtime .extensions/registerExtension to .peripheralExtensions/registerPeripheralExtension.
* Renaming outputCommand/inputCommand to generateOutputCommand/generateInputCommand, etc.
* Moved motorCommandIDs to EV3Motor class, renamed directCommand to generateCommand, etc.
* Adding a reminder to rename something.
* JSDoc fix in EV3Motor class.
* Fixing microbit function name.
* Adding a todo item.
* Changing Ev3 menu formats to be backwards compatible, moving a BLE function up.
* Fixing EV3 ports again, and button pressed returning a boolean.
* Fixing menu value to be a string in EV3.
* Initial version of token bucket
* Add rateLimiter util
* Remove check for motor.isOn in stopAllMotors
* Fix unit test
* Fix unit test with stubbed timer, and cleanup
* Add comment
* Reduce WeDo rate limit to 20 sends/sec
* Move rate limit into a constant
* Stop button stops motors and tone even if rate limit exceeded
* Resolving #1492: No longer trying to make WeDo2 backwards compatible with Scratch Link API v1.0.
* Closing the socket on all BLE/BT errors.
* Adding BT disconnection.
* Fixing #1353: Stop button should stop EV3 beep sound.
* Fixing #1358: EV3 and Microbit: shouldn't send requests if not connected?.
* Fixing #1373: EV3 motor does not brake at the end of a motor command.
* Starting on #1491: use 'startNotifications' instead of 'read'. Still need to make backwards compatible.
* Fixing #1489: WeDo2 set light color block should wrap values to 0-100.
* Fixing #1488: WeDo2 should not clear LED light on stop button.
* Fixing to support negative LED light color inputs.
* Removing a binding.
* Using wrapClamp for inputHue for LED color block.
* Replace micro:bit block text with formatMessage calls
* Add l10n support to micro:bit block menus
* Remove A, B button translation, update some l10n descriptions
* Fix mismatched l10n description
* Adding WeDo2 connection/disconnection over Scratch Link BLE.
* Testing motor and LED output.
* Reading sensor attachment and registering for sensor notifications.
* Motor indexing.
* Some refactoring notes. Moving some functions around.
* Refactoring and enums.
* Removing some comments
* Fixing linting error.
* Fixing tilt reporter values and added stopAll bound to stop button to stop piezo, LED and motors.
* Add set voice block
* Store voice in custom state
* Use a regex to preserve punctuation in kitten language
* cleanup
* don’t re-use args
* add todo comment about locale
* Use voice Id strings and add puppy
* Cleanup and comments
* Use extension name “Text-to-Speech”
* Add issue link in comment
* Turn speech block text into i18n messages.
* Update message descriptions and other code review comments.
* fix typo
* Add bit about not translating Google to message description.
* Change default when I hear text
* Add motor rotate, without coasting yet. Fixed some todos.
* Removing logging.
* Implemented motor set position, motor set power, and beep note for time blocks. Changed labels on motor blocks. Tracking motor speeds for all ports.
* Fixing motor ports to 0-3 and then output bit field when sending commands.
* Added stop all motors with stop button. Added port masking function. Some cleanup. Moved beeping up an octave.
* Combine device list polling and sensor polling into a single timeout call, device list requested every 20 times.
* Don't reset sensors on device update. Don't store undefined sensor/motor values. Some comments.
* Fixing some linting.
* First microbit gui tests
* Fixed JSONRPC inheritance. Renamed ScratchBLE/ScratchBT files. Removed ScratchBT test code from Microbit extension. Renamed addLine to log.
* Fixed log comments. Removed addLine from Microbit.
* Adding auto-connect to Microbit at extension loading. Adding hack for displayText block to Scratch-Link.
* Resolved merge conflicts and brought in latest microbit extension example code.
* Updated microbit write tests for displayText and displaySymbol blocks. Some linting.
* Some linting and adding of BLE Characteristic consts.
* Linting fixes.
* Moving micro:bit device connection code all to the MicroBit class, decoupling Scratch3MicroBitBlocks from connection code.
* Removing old disconenct handlers from MicroBit class. Moved service into new BLEUUID data structure.
* Renamed _write to _send. Moved all BLE encoding concerns to the _send method.
* Using the util log. Some linting.
* Added _read method to MicroBit class. Renamed _send to _write.
* Some linting and formatting comments.
* First pass at peripheral chooser pattern for ScratchBLE.
* Testing characteristicDidChange events, and some changes to ScratchBLE on ready events.
* Refactoring work on PeripheralChooser and ScratchBLE.
* Some variable renaming and method signature stubs.
* Peripheral chooser method signatures.
* Moved base64 encoding/decoding to util. Some method signature formatting.
* Adding test stubs for new util and io classes.
* Adding test stub for MicroBit extension.
* Clean up for PR.
* Clean up for PR.
* Final cleanup for PR.
* Removed logging to console.
* Adding 'btoa' and 'atob' node modules and using them in Base64Util.
Added formatMessage to the name attribute for:
* music
* pen
* translate
* video motion
Skipped speak extension - trademarked name
Skipped extensions that are not yet localized at all.
* Add micro:bit Scratch 3.0 extension
* Fix lint errors in micro:bit extension
* Fix doc. Incorrect return type
* Check for valid pin in when pin connected block
* Drop mapping function
* Drop question mark from tilt hat block
* Generate list of symbols from object keys
* Trim display text block to max 20 characters
Set the video device state and transparency to the values in the stage target
when the video sensing extension is loaded. Changing video state and
transparency from the extension's blocks will also store that setting to the
stage target.
- motionVector takes motion component and returns a 2d vector
- scratchAtan2 takes a y and x value and returns an angle in degrees
referencing Scratch's coordinate system
- Rename UV to UV_CELL, UV cannot be rendered in a non-cell format
Modify C and AB views as well to better represent in color the work being done.
If you watch the debug views with XY_CELL, AB_CELL, C_CELL, and UV_CELL you can
see how AB_CELL and C_CELL affect UV_CELL in similar color patterns.
These two blocks were not doing the same shade-oriented math as
`setPenShadeToNumber`: effectively these blocks were using the new color
model instead of Scratch 2.0's hue-shade model. This change pulls the
hue-shade color update logic into a separate function, now called by all
the legacy pen blocks.
* localize the block and menu strings in the pen extension
* adds .tx/config to be able to push translations to transifex
* includes format-message to localize strings and extracting them.
* add setLocale function to VM to allow GUI to pass in locale data.
* refresh block definitions when the locale changes.
### Still to be decided
For now just extracting messages from the pen extension into their own file. We’ll need to decide if each category gets its own file, or group all the strings into one resource.
* Move drums into their own folder
* Load instrument samples
* Play notes
* Concurrency limit is shared across drums and instruments
* Increase MIDI note range
* Set instrument directly on musicState object
* JSDoc
* Clean up the play note functions and add comments
* Cleanup
* Check for audioEngine in playDrumNum
* JSDoc and comments
* Round the instrument number
* Fix unit test for set instrument
* Comment fixes
* Nit (condense onto single line)