@cheton cheton released this Feb 10, 2018 · 32 commits to master since this release

Assets 11


  • Avoid using expressions in inline comments as it may cause parsing errors with TinyG controller (6bc53fe, #244)
  • Ensure the %wait command will wait until the planner buffer is empty (599206f, #244)
  • Adds ability to toggle between multiple cameras (dc16440, #274)

Bug Fixes

  • Fixed a pagination issue that caused macros and MDI commands not able to display more than 10 records (39f55f1, #270)
  • Fixed a warning that each child in an array should have a unique "key" prop (6239f7d)

@cheton cheton released this Feb 3, 2018 · 44 commits to master since this release

Assets 13

What's New

This release contains several enhancements and usability improvements for connection, console, and axes widgets. See below for details:

Connection Widget

Since CNCjs 1.9.12, the node-serialport library has been upgraded from v4 to v6, however, it caused a breaking change to the default hardware flow control option where RTS/CTS will be disabled by default on Windows, and it may lead to unexpected result for certain boards connecting with Windows devices. The "Enable hardware flow control" option is added in 1.9.13 for addressing this issue, you can turn on this option if you ran into trouble on connecting to the board while using Windows devices.


Console Widget

Adds color schemes and fixed a copy/paste issue in CNCjs 1.9.12.


Axes Widget

Usability improvements for jogging and quick access buttons


Custom Commands

Now you can go to Axes Settings to add custom commands and enable manual data input (MDI) support.


Toggle MDI mode


Change Logs


  • Adds support for enabling hardware flow control (776c836, #243)
  • Adds context menu support for editable content and selectable text with Undo, Redo, Cut, Copy, Paste, and Select All actions (55a3350, 50a3318, #241)
  • Console widget enhancements (753abec, #241)
  • Support for custom MDI commands (2dc9480)
  • 6-axis (B and C) support (8100d0d)


  • Constancy with Axes menu order (1ccc359)
  • [Electron] Remember window size and position (221bab9, #230)
  • Support for validating dataBits, stopBits, parity, and flow control settings (rtscts, xon, xoff, xany) (39c5b3a)
  • M2 and M30 do not pause workflow (97d778d, PR #248 by @MitchBradley)
  • Improves usability of Axes widget (99946d0)
  • Reloading commands and macros when the config file has been changed (dfac6bc)

Bug Fixes

  • Fixed an issue where RTS/CTS must be turned on for certain controller boards when connecting to Windows host (1f97f89, #243)
  • Convert line endings from LF to CRLF for the pasted text (#241)


  • Drops support for armv7l target as it is currently broken (2a0a776)
  • Improves naming conventions (80739ef)


  • Updates German translation
  • Updates Japanese translation
  • Updates Simplified Chinese translation
  • Turkish (Türkçe) language support

@cheton cheton released this Dec 5, 2017 · 144 commits to master since this release

Assets 11

Major Update

  • Upgrades to serialport v6 (eec27be, #217)

  • Support for Marlin 3D printer firmware

    • Marlin controller
    • Marlin widget w/ heater controls

Bug Fixes

  • Fixed a bug that may cause blank screen due to incorrect widget settings (0a8a924)
    Note: For CNCjs 1.9.11 and earlier versions, if it always shows a blank screen, try clearing the Local Storage using browser's Developer Tools to fix the problem.

  • Fixed a compatibility issue that the includes() method is not available in Node.js v4 and v5 (88d4dec, #232)

  • [Grbl][Marlin][Smoothie][TinyG] Fixed a bug that will not continue program execution after the %wait command (a5f86d9)

  • Fixed a bug introduced in CNCjs 1.9.11 that will accidentally trigger feeder.hold({ data: "M0" }) or sender.hold({ data: "M0" }) when parsing lines containing variables (af60e47)

    The following line

    G0 X[xmin] Y[ymin]

    will become

    G0, X0, X0, M0, I0, N0, Y0, Y0, M0, I0, N0
  • [Security] Fixed a security issue that one can use an unauthorized token to access the server (1f7bae4, #234)

  • Fixed a bug that sender may emit the 'end' event multiple times (1aa9625, PR #235)

  • Fixed a bug that caused browser crash if filename contains double-byte characters (232307a)


  • Adds support to listen on specific address and port by passing command line options to Electron application (56ad797)
    Note: For Electron macOS app, use the open command to pass arguments to the application:

    open -a /Applications/CNCjs.app --args -p 8000
  • Adds an "ignoreErrors" option that allows continuing program execution on errors (485bc7c, #233)

  • Support for proxying requests starting with a mount path to an external url (a1cbada)

    cnc -vv -p 8000 \
        --mount /tinyweb:/path/to/tinyweb/src/ \
        --mount /widget:https://cncjs.github.io/cncjs-widget-boilerplate/v1/


  • Uses ResizeObserver to detect DOM changes (2bf0e2c)

  • Redirects URL path without a trailing slash to URL with a trailing slash (dff47b0)

  • Implements serial connection library for serial port communication (74700aa)

  • Removes comments that start with a semicolon ; (a108668)

  • Uses babel-polyfill for Node.js app (ed5667d)

  • Allows pasting commands into the terminal (b038cbc)

  • Passes context as second parameter connection.write(data, context) (cdc6d87)

  • Runs CI with Node.js v8 (f4a2c7c)

  • Improves usability when signing in from a pendant UI (25c8dd8, 1b06d45)

  • Replaces "clusterize.js" with "react-tiny-virtual-list" (6927d0b)

@cheton cheton released this Oct 13, 2017 · 247 commits to master since this release

Assets 9

This update contains M6 tool change support, various enhancements and bug fixes, including:

Tool Change

See the wiki page at https://github.com/cncjs/cncjs/wiki/Tool-Change


Breaking Changes

  • No longer control workflow state (i.e. workflow.pause() and workflow.resume()) when performing a "Feedhold" or "Cyclestart" action (c02c28d)
  • [Modal state] Renamed coordinate to wcs (699f9b5)
  • Remove the socket parameter from the controller command (bf83165)
    • Before: controller.command(socket, cmd, ...args)
    • After: controller.command(cmd, ...args)
  • Pause execution when the CNC milling controller detects an error in the G-code program (d16264a, #175)


  • Google Analytics tracking (07c8db3)
  • Unit tracking enhancement (6f11c9a, #206)
  • Support for pausing gcode execution with M0, M1, M2, M6, and M30 (c61299b, #118, #212)
  • Show notification message on Program Pause (M0, M1), Program End (M2, M30), and Tool Change (M6) (2546e05, #118, #212)
  • Pop up a confirmation message asking for resuming program execution after M6 tool change (6c95bc8)
  • Show a modal window asking user to continue for M0, M1, M2, M30, and M6 commands when executing a macro (e8e431e)
  • New controller commands
    • "feeder:feed" - Append new commands to the feeder queue
    • "feeder:start" - Start
    • "feeder:stop" - Stop
  • Spindle and coolant enhancements (c2ad073)
  • Feeder enhancements for better processing M0/M1/M2/M30/M6 commands among multiple browsers (a707c62)
  • Sender enhancements for processing M0, M1, M2, M30, M6, and %wait commands (3141966)
  • Support for using modal group variables in a macro (d858ca7)
  • Use the new line character to separate M7 and M8 to avoid modal group violation (a6aa326, gnea/grbl#289)

Bug Fixes

  • Move the stripComment function from sender to controllers (88ccccd, #210)
  • Fixed a bug that causes authentication failure with the download link (0cb6c1a, #211)
  • Fixed a bug that cannot check for updates (02738a7)

New Language

@cheton cheton released this Sep 22, 2017 · 319 commits to master since this release

Assets 9


  • Multiple mount points (a1bc674)

    cnc -vv -p 8000 \
        --mount /static:/path/to/static \
        --mount /widget:/path/to/cncjs-widget-boilerplate/dist

    For Electron macOS app, you can use the open command to pass arguments to the application:

    open -a /Applications/CNCjs.app --args --mount /widget:/path/to/cncjs-widget-boilerplate/dist
  • Custom widget support (5fa5110, b366a8c, #85)
    See development guide and boilerplate code at https://github.com/cncjs/cncjs-widget-boilerplate


  • [Electron] Support for adding mount paths to the applcation menu (8eac37b, #199)

  • [Grbl] Support for gCarvin firmware (113553a, #203)

  • Axes labeled in cm in mm mode (3c7b6ba, #205)

Bug Fixes

  • Incorrect work offset setting in inch mode (47255cb, #204)


@cheton cheton released this Aug 31, 2017 · 384 commits to master since this release

Assets 11

Recommended update for the desktop application built with Electron

Bug Fixes

  • [Electron] Fixed a bug that may break workspace settings due to asynchronous file writing (3ddb776, #185)
  • Fixed an issue that G10 L20 P0 is not currently implemented in TinyG and G2core (7da19b0, #191)


  • Electron build process enhancements
  • Homing support for TinyG and g2core (673b5af, #194)
  • Prompt the user for the corrupted workspace settings (55b7947, #185)
  • Ability to import and export workspace settings


  • Concurrent execution among multiple browsers without the need of manually refresh browser window (#195)
    • Emit gcode:load and gcode:unload events to all connected browsers (e7e7147)
    • Add serialport:change event listener to detect port changes (a591533)
  • [Performance] Use a debounced function to persist settings only if 100ms have passed without it being called (3ddb776)
  • [UX] Improvements for primary and secondary widget toolbar (1073e5c)

Other Changes

  • Renamed cncjs to CNCjs

@cheton cheton released this Aug 24, 2017 · 418 commits to master since this release

Assets 11

Important Notice

This is a recommended update for CNCjs 1.9.3 to 1.9.7. It resolves a critical issue that may consume all available receive buffer on Grbl especially when running a G-code program with slow feed rate.

If you're using CNCjs between 1.9.3 and 1.9.7, please update to 1.9.8 to have the latest stability fixes.

Bug Fixes

  • Resolved a critical issue that ay consume all available receive buffer on Grbl (or Smoothieware) when running a G-code program (0148f35, #176, #186)
  • Fixed an issue that may stop sending lines if the G-code sender is in the hold state (%wait) and a buffer overflow is being occurred (c091ec1)


  • Workspace toolbar enhancements (7ea3ffe)

  • A new option to toggle the visibility of grid line numbers (708cc38, #182)

  • Navigation button for the A-axis (4fb3b0e, #122)

  • Go To Work Zero and Go To Machine Zero buttons are now configurable (4fb3b0e, #181)

Other Improvements

  • Automatically refresh the list of ports when the port is disconnected (3ca043d)
  • Do not force reset Grbl when a G-code program has completed (3f77c61, #170)
  • Marlin ignores G90 (or G91) command when combining with other commands in the same line (dd4a754, 0ae507b)

@cheton cheton released this Jul 21, 2017 · 477 commits to master since this release

Assets 11

Bug Fixes

  • [Smoothieware] Fixed an issue that the UI does not correspond to machine position in inch mode (de54114, resolves #177)
  • Convert the characters &, <, >, ", and ' in string to their corresponding HTML entities (26f41c3, resolves #178)


  • New events: system startup, open a serial port, close a serial port (88969e8, closes #180)