TLDR
This release has a ton of bug fixes for crashes and other problems that were present in v4.0.4, improves stability by reducing baseline memory usage, and has several new features, notably
- GCode Single Stepping - see http://wiki.fluidnc.com/en/features/single_block_mode
- Unipolar motor support
- Telnet improvements
- Config files now allow comments at the end of a line, not only on lines by themselves
- GCode clustering for optimized transfer of laser rasters
- VFD improvements
- TMC driver improvements, mainly related to stallguard
- WebUI3 tablet improvements - single step mode support and visualizer handles nested files, parameters, and expressions
What's Changed
- Restore FatFs SD usage statistics by @figamore in #1780
- Add @tuning/@default_note config-item annotations by @MitchBradley in #1781
- Fixes #1775 - stalls in timed_engine - for both esp32 and rp2040 by @MitchBradley in #1778
- Fix telnet channel unresponsive after connect (#1776) by @MitchBradley in #1777
- [docs] added section covering updates by @tcurdt in #1734
- Fix #1786 - Init fnc_uart on core 0 using a task instead of IPC by @MitchBradley in #1790
- Fix xmodem by @MitchBradley in #1791
- Added per-spindle speed_map defaults by @MitchBradley in #1783
- feat(esp32s3): enable and optimize RMT step engine by @tt33415366 in #1622
- Revert "feat(esp32s3): enable and optimize RMT step engine" by @MitchBradley in #1792
- Max open SD files from 3 to 2, to avoid out of memory crashes by @MitchBradley in #1794
- Added ESP-Now to wifi_s3 build by @MitchBradley in #1795
- Fix ESP-NOW RX queue heap exhaustion by @figamore in #1803
- Fix SD card crash after WebUI uploads by @figamore in #1802
- Fix WebUI memory leak by @MitchBradley in #1806
- Multiple heap savings by @MitchBradley in #1807
- Fix telnet TX stall detector dropping healthy clients by @thcasssio in #1798
- Added HeapDiff tool, not built for production by @MitchBradley in #1808
- Run informational commands during a job: two-task command dispatch by @MitchBradley in #1811
- WIP: Test of VFD polling by @bdring in #1785
- WebUI: reap orphaned WebSocket channels by @MitchBradley in #1814
- channels: AllChannels::kill() reports queue-full failure by @MitchBradley in #1813
- WebUI: make WS_EVT_CONNECT exception-safe by @MitchBradley in #1812
- Fix stepping engine web UI by @MitchBradley in #1815
- ESP32: Fix guard disabling the task-watchdog layer by @f1adang in #1816
- platformio_override.ini silently disables the vtable-in-DRAM script by @f1adang in #1821
- esp32: keep state_is() and the spindle ISR dispatch out of flash by @f1adang in #1817
- Fix two channel-lifetime bugs in the job path by @f1adang in #1818
- Do not report a file read error as the end of a job by @f1adang in #1819
- Stop an exception in a support task from killing the controller by @f1adang in #1820
- Add ULN2003 support by @f1adang in #1797
- A WebClient can be freed while its command is still queued by @f1adang in #1822
- Tokenizer: accept inline # comments, matching standard YAML; support quoted keys by @MitchBradley in #1823
- Add clustered GCode support by @MitchBradley in #1730
- Answer ESP410 WiFi AP scans asynchronously (portable) by @MitchBradley in #1824
- Fix nested $sd/run losing the parent file by @MitchBradley in #1825
- Sensorless homing: per-phase StallGuard threshold (stallguard_seek) and homing_amps for SPI Trinamic drivers by @siganberg in #1765
- Generate the config validator schema from config_items.yaml; retire the hand JSON by @MitchBradley in #1828
- Fix task-watchdog stall on soft reset in S3/RP2040 step engines (#1775) by @MitchBradley in #1827
- Fix stepping stutter by @MitchBradley in #1831
- Fixed atc_manual return to location by @bdring in #1830
- ESP-NOW: stage heap allocation, deferring ~29K until first use by @MitchBradley in #1833
- Remove libstdc++ iostream/locale from the image (~4.4 KB RAM, ~46 KB flash) by @MitchBradley in #1838
- WebUI /command: run as a plain channel, drop the background task by @MitchBradley in #1839
- Merge the output task into the polling task by @MitchBradley in #1840
- Telnet: strip IAC negotiation; let ~ escape a motionless Hold by @MitchBradley in #1837
- Fix swapped miso/mosi arguments in ETH.begin() for SPI Ethernet PHYs by @YORROY123 in #1835
- Single block (single step) mode by @MitchBradley in #1832
- Fix hosted builds after addition of new FreeRTOS call to Protocol by @MitchBradley in #1841
- Add Wasm port for running FluidNC in a browser as a demonstration. by @MitchBradley in #1842
New Contributors
- @tcurdt made their first contribution in #1734
- @tt33415366 made their first contribution in #1622
- @thcasssio made their first contribution in #1798
- @f1adang made their first contribution in #1816
- @siganberg made their first contribution in #1765
- @YORROY123 made their first contribution in #1835
Full Changelog: v4.0.4...v4.1.0