7.51.4

    Fix: Bambu Lab: register unknown print error to inform user
    Fix: All network cameras become disconnected after the printer is edited, forgotten, or reconnected.

7.51.3

    Fix: due to logic error in the software update code, the software restart(to install updates) can be called even when with an active ongoing print 
    Fix: BambuLab: external spools ID for dual extruder printers
    Fix: BambuLab: local cancel error not cleared in some cases, which prevents reconnection to the printer after cancel

7.51.2

    Fix: not reading custom status requesting gcodes from a printer profile

7.51.1

    Fix: always restoring the idle status gcodes to [M105, M27] instaead of the ones set in profile, after a print finish. Currently this will only affect Ultimaker 2 family of printers.

7.51.0

    Feature: WiFi access point for 3DPrinterOS RPi(manual installation or OS dependencies and scripts required for older images)
    Fix: makerbot 2nd gen crash on any error message

7.50.4

    Fix: crash in camera module
    Fix: crash when removing zipped log
    Fix: IPv6 adapter detection

7.50.3

    Fix: moonraker always show 100% progress
    Fix: mjpeg snapshot camera(used in Creatity and Octoprint) can crash due to race in PIL's internal streams

7.50.2

    Fix: unable to update on crashes in base_sender
    Fix: old api logout still used in some customer's UIs
    Fix: local profiles for some of Bambulab machines

7.50.1

    Fix: compatibility with Python 3.8

7.50.0

    Feature: support for Bambu Lab H2D, H2D Pro, H2S, P2S

7.49.1

    Fix: Bambulab: state dropping to ready when downloading finishes and before print starts
    Fix: PrusaLink: state dropping to ready when downloading finishes and before print starts
    Fix: PrusaLink: occasionally fails to start a job due failing to overwriting an existing file
    Fix: PrusaLink: displays of a second and invalid error message after local cancellation
    Fix: the application failed to cancel some of local web UI handlers causing a close delay
    
7.49.0

    Improvement: local MJPEG streaming on port 8009 is now compatible with base_cam and back in order. It is disabled by default in user settings/camera/http_output/enabled
    Improvement: better virtual camera
    Fix: yet another status parsing fix for FormLabs

7.48.6

    Fix: cloud job false fail on printer reconnection even when hostless_print set in a connection profile

7.48.5

    Fix: unable to connect to FormLabs 4B and 4BL due to faulty profiles

7.48.4

    Fix: creation of an empty integration request file and a new report file after logs clear 
    Fix: return of an Operation system field in a report problem upload

7.48.3

    Fix: logs are not recoded after logs send until application restart

7.48.2

    Improvement: Bambulab A1/P1 camera performance optimization
    Fix: crash of bambulab A1/P1 camera process when an URL line removed from just after appearing
    Fix: Bambulab job silently hangs waiting for it to start, when dev mode is disabled on the printer
    Fix: printer logs not erased after sending
    Development: camera logging now enabled by default, but logs connections, disconnections, activations, deactivations and crashes. Not frame send data as before.
    Development: virtual camera for development purposes

7.48.1

    Fix: no camera on MS Windows due to lack of paths patching code in new main cam module(uni_cam)

7.48.0

    Feature: multiprocessing new camera for Bambulab P1/A1 printers with a huge bunch optimizations

7.47.0

    Improvement: ability to print from a zip file
    Support: remove support access key auto add/remove on click to Enable support access / Disable support access
    Fix: fields with empty values where not displayed on the edit network printer page
    Fix: custom certificates(self signed) reinstallation after an update wasn't wasn't applied at runtime causing a connection fail before a restart

7.46.4

    Fix: MakerBot Method/MethodX: error when creating a connection

7.46.3

    Fix: Bambulab: error handling that prevents printer control until the printer is rebooted.

7.46.2

    Fix: skip_fps_set flag in camera settings now work in cv_cam - a new camera code of testing branch

7.46.1

    Fix: crash on camera start due to missing default setting field

7.46.0

    Feature: multiprocessing for camera, better camera names, no LAN bandwith load when camera isn't viewed, support for hot plug/unplug of USB cameras and net camera URLs
    Fix: crash on RPi when failed to import any GPIO backend library

7.45.0

    Feature: USB serial printers(Marlin, Prusa, Duet, etc) got ability get status, progress and even control ongoing SDcard print, even in serial gcode mode
    Improvement: yet another rework of printer error handing and reporting system. Faster reconnection after printer errors and more coherent and errors display in all of UIs
    Fix: camera crash on numpy 2.3.1+ due to removal of ndarray.tostringno 
    Fix: a moonraker error makes a print job to be in printing state indefinitely
    Fix: fail to start a print with sdcard_print_sender on any non RepRapFirmware based printer, due to use of specific gcodes
    Development: ability to store multiple tokens and credentials for future APIPrinter/StreamerAPI mode

7.44.0

    Feature: a detector for Bambulab printers
    Fix: Moonraker: klippy state checking, passing a cancel event triggered from a 3rd party UI, wrong progress on very quick prints, reset and emergency stop
    Fix: reject of upload logs command in error/connecting state

7.43.2

    Fix: MJPGS camera incorrect resize resulted in vertical frames
    Fix: crash in Downloader due to Max Recursion on very long waiting of job start value to go down
    Fix: crash in Downloader due to Key Error

7.43.1

    Fix: command execution fail result produced incorrect result(None instead of False)
    Fix: numerous local http API(/api2) related fixes

7.43.0

    Feature: automatic delay of print job start(not printing, but processing and upload to the printer) when where are too many(currently 3)
    Fix: checking for if command is allowed in error or connecting state
    Fix: logging of static printer detector
    Fix: one config's log message was misleading
    
7.42.6

    Fix: GPIO interface initialization silently failed
    Fix: Bambulab: hand on adding a camera of Bambulab X1 family

7.42.5

    Fix: exception on editing some network printers such as K1 Max
    Fix: no IP field for some network printers on Edit Printer page
    Fix: edit printer could have removed IP of the stored printer, not it is forbidden
    Fix: crash when Makebot 5th gen connected by USB

7.42.4

    Fix: printer detector for Makerbot 5th generation

7.42.3

    Improvement: local WebUI: edit printer page now show correct fields for the edited printer
    Fix: local WebUI: Back button on local files printer/delete page reverts file list to pre last action, instead of going back to manage printers page

7.42.2
    
    Fix: Bambulab: error on second print job start due to file parsing error
    Fix: mitigation of kernel/v4l2 bug of picamera on linux6.8+

7.42.1

    Fix: crash on network errors on login
    Fix: crash on exit from offline mode when in steamerapi mode
    Fix: left print time parsing on Bambulabs

7.42.0

    Feature: support of Formlabs Form4 printers family
    Feature: print time left parsing for Prusas and DuetWeb
    Feature: job owner information in API2 and QtUI
    Improvement: support of picamera with kernel 6.7+
    Improvement: installation of custom CA certificates doesn't require additional restart anymore
    Improvement: Formlabs network printers scanner fixed and improved
    Fix: numerous errors related to Bambulab print job upload and start
    Fix: logs uploading with custom CA certificates in obfuscated builds
    Fix: OFF id dict key for network printers was not processed
    Fix: alternative local print folder setting for QtUI was not processed
    Fix: filename filter prevented .bgcodes to be printed locally from QtUI

7.41.0

    Feature: edit network printer IP and password
    Improvement: threaded sender based printers are not faster to getting from connecting to ready states
    Fix: ugly error message when no file selecting for upload to local storage and the button is click
    Fix: BambuLab: shorter time between reconnection attempts

7.40.2

    Fix: disable of passive FTP mode for Bambulab X1E in attempt to mitigate the second print hang issue that exact model

7.40.1

    Fix: ability to add a same network printer several times 
    Fix: network printer detection page type selector now looks as selector and less ugly 
    Fix: continuous log "spam" on fail to one clients scanner port
    Fix: wrong python environment resulted in broken Raise3D on MS Windows. All MS Windows installations of 7.40.0 should be uninstalled to fix the problem

7.40.0
    
    Improvement: overhaul of local webUI related to printer control. Greatly improved usability of local printing.
    Improvement: faster and more reliable network printers detection
    Improvement: remade errors display system, for printer errors in the local webUI to more readable. No blinking errors anymore.
    Improvement: completely new printer detection logic and UI. Now really works and should cover most cases
    Improvement: Raise3D printers support
    Improvement: Bambulab: clean up of an uploaded print file after print start/fail/cancel
    Fix: impossible to detect a network connected Generic Duet, because it is detected as Fusion3 model
    Fix: print of zip files on Bambulab
    Fix: crash of local web UI for invalid progress percent value from Bambulab
    Fix: creation of a duplicate network printer instead of replacing existing on add with different password or serial number
    Fix: too many threads crash when using network printer detector

7.39.27

    Fix: fix of incorrect update of Z offset calibration wizard's macro z_offset.g use of G31 instead of G92. Got back to using G92

7.39.26

    Improvement: tool switching for QtUI joystick
    Improvement: better looking and more responsive update in Qt interface 
    Fix: crash of threaded_sender reading thread on ok timeout
    Fix: QtUI door dialog was always showing Close door and never Open door
    Fix: fixed callbacks for position responses
    Fix: Z offset calibration wizard
    Fix: Filament wizard crash in QtInterface
    Fix: serial read lag due to forcing read block size for all serial connections
    Fix: printer doors status now is properly updated from endstop value
    Fix: callback filtering out position responses caused Z offset calibration wizard to fail
    Fix: broken logic of Z offset calibration wizard made it's parsing code to finish too early, failing to get a new coordinate
    Fix: bugs in loop3dpxpt branch caused by reverting to old code without iteration over lines in _reading of threaded_sender
    Fix: sd card uploading in offline was interpreted as printer ready state, now it will be a downloading state
    Fix: print time left was never displayed in Qt interface
    Fix: sometimes cancel in pause state was unable to drop a pause flag causing print to stuck in false pause state
    Fix: lag on reading printer response due to read/readline bug in the serial connection code
    Fix: Qt Interface's local printing opens wrong path
    Fix: blurry doors icon in Qt Interface
    Fix: update from Qt Interface
    Fix: flashing of network error(wifi or offline mode selector on start)
    Fix: exception in QtUI when software update fails
    Fix: temperature regexps for waiting temperatures failed when a \t comes before target instead of a space 
    Fix: serial connection crash on communication errors 

7.39.16

    Fix: Original Prusa network connection: wrong progress percentage on print start
    Fix: Original Prusa network connection: job cancel/finish not always removing job_id record, causing false error about a job failed while a printer was offline
    Fix: Original Prusa network connection: change of misleading message from print in Attention state requires user action on a printer's screen

7.39.15

    Fix: crash on update, when the app installed inside a Creality printer's firmware using the install script 
    Development: better logging of import errors in the app module 

7.39.14

    Improvement: sort of network printer profiles by alphabet in local webUI
    Fix: crash of usb_detector on printer id duplication check

7.39.13:

    Feature: multiline printer response support for yet another quirk from RepRapFirmware
    Improvement: threadless mode for sdcard printing and macro like commands
    Improvement: detection of non printable characters in on connection printer responses
    Fix: baudrate selection algorithm failed to switch to a new baurate if some wrong baudrate was stores as a correct one
    Fix: incorrect exturder positioning mode could be set after a pause

7.39.11
    
    Fix: sdcard print sender crash

7.39.10

    Improvement: handing of external pause and resumes when printing from SD card on RepRapFirmware(experimental)
    Fix: serial connection data corruption on a first line after connect when running on GNU/Linux and other connection issues

7.39.9

    Fix Bambulab: not updating printer status when verbose logging mode enabled

7.39.8

    Improvement Bambulab: better build plate detection and proper handling of prints when no plate is detected
    Improvement Bambulab: more clear error message on printer connection fail

7.39.7

    Improvement: reconnection of a localUI frontend to a backend after it's restart
    Fix: incorrect main loop time calculation resulted in slower printer detection
    Fix: host interface switching was acting too fast and sometimes inconsistent 

7.39.5

    Fix: Upload issues for FlashForge Adventurer 3
    Improvement: Remove dependence from telnetlib in ff_socket_sender

7.39.8

    Fix: serial connection data corruption on a first line after connect when running on GNU/Linux

7.39.4
    
    Fix: camera type always saved as Disable on quit

7.39.3

    Fix: on desktop versions(MS Windows and MacOS) browser tabs opens twice
    Fix: not user login retry after a first fail even with pre_login_ui set to true

7.39.2

    Fix: lose of camera type change requests
    Fix: crash of local webUI after update on windows due to right to remove the update complete lock file 

7.39.0

    Improvement: a better error/warning display and sending system
    Improvement: auto update will now be applied when network or sdcard upload based printers are in "printing" state

7.38.2

    Fix: Prusa fail when upload from 3DPrinterOS Client to the printer is too slow

7.38.1

    Fix: upload to Prusa over network broken due to removal of file delete from our code and using Overwrite arg for put

7.38.0

    Feature: Bambulab bed type detection and warning propagation when it don't match

7.37.5

    Fix: lose of camera type change requests
    Fix: crash of local webUI after update on windows due to right to remove the update complete lock file 

7.37.4

    Fix: repeated errors were accumulated and affecting a printer even after they are gone
    Fix: a number of minor improvements to network Prusa code

7.37.3

    Fix: a first read attempt on connection using threaded sender always failed requiring a retry each time
    Fix: host_id retrial and update code wasn't taking in account some cases of delayed login, resulting it empty host_id

7.37.2

    Fix: Bambulab: not enough sanitizing of filenames caused upload fail for some files

7.37.1

    Fix: Bambulab: not closing sender after a on_disconnect MQTT event resulted in no operational error cause cloud job fail state and delay of reconnection

7.37.0

    Feature: Bambulab: warnings and errors handling, processing and propagation to the cloud's user interface
    Fix: yet another Bambulab stability improvement 
    Fix: crash of network FlashForge crash on Python3.13

7.36.10
    
    Fix: network Prusa on print finish rises error message and registers a job fail

7.36.9

    Fix: crash on network printers detection

7.36.8

    Improvement: Prusa: handling of support Prusa's Attention state
    Fix: Prusa: on local cancel caused states chatter: printing -> cancel -> printing -> ready.
    Fix: Prusa: no error/warning passed to cloud on many events, such as cancel from printer or job fail
    Fix: threaded_sender based printers never dropped after_crash_recover flag resulting in proper handling of second firmware crash
    Fix: K1 Max: a wrong working folder result in update fail

7.36.7

    Improvement: now can be send  from a console with command: python log.py 
    Improvement: diag.sh how checks HTTPS to the cloud
    Fix: auth errors on logs upload results in too many open files 
    Fix: restart on systems with init.d was not waiting for previous process to close on restart
    Fix: false warning about empty profiles on user login

7.36.6

    Fix: threaded_sender assumed connection error and dropped baudrate settings when close called during connection
    Fix: browser opening on application start even when it set to false the settings  

7.36.5

    Fix: Bambulab thread leak on reconnection
    Fix: Bambulab camera process leak
    Fix: commands to connect a printer where not received when some printers are on reconnection loop
    Fix: not logging exceptions on application crash due to lack of a dependency library
    Fix: crash on upload timeout on moonraker
    Improvement: custom_settings_home now can be read from user_settings.json too, in case of default_settings overwrite with update
    Improvement: a new settings group to disable explicitly some camera type, for now bambulab_lan_cam

7.36.4

    Fix: startup crash due to race between application web interface and its other threads
    Fix: camera module for Bambulab P1/A1 wasn't always able to properly stop camera process, resulting recourse overconsumption and bugs
    Fix: no Bambulab P1/A1 camera after switching camera back from Disable camera setting
    Fix: Bambulab material reporting now work properly when AMS turned on and off
    Fix: crash on getting local IP address on MS Windows
    Fix: better validation for requests to remember network printer from local web UI and the cloud
    Improvement: logging of machine model for SoCs

7.36.3

    Fix: yet another crash of HTTP printers detector
    Fix: MJPEG camera incorrect image resize 

7.35.5

    Fix: crash of HTTP printers detector on fail to get local interface address

7.36.2

    Fix: crash of HTTP printers detector on fail to get local interface address


7.36.1

    Fix: incorrect image size for some incoming resolutions
    Fix: after usb camera unplug or network camera error it keep sending last frame indefinitely
    Fix: camera crash when multiple camera modules enabled with settings camera/http_output set to true

7.36.0

    Feature: support of FlashForge Adventurer printers family

7.35.4

    Fix: startup crash on platforms with aiohttp>=3.10 due to breaking changes in the library

7.35.3

    Fix: startup crash when no user settings file found(should be created instead)
    Fix: webUI 504 error on local print start when it is too slow
    Fix: webUI fail to open websocket due to race error in javascript

7.35.2

    Improvement: re-design of printers html to make them improve readability
    Fix: multiple bugs on startup of a desktop version of application caused by remove code re-enabled by a merge error

7.35.1

    Fix: GPIO on RPi5

7.35.0

    Feature: print options(spool selector, etc) for BambuLab printers

7.34.1

    Fix: crash of http client on getting host id using subprocess on MS Windows with certain locales(ported from stable branch)

7.34.0

    Feature: modules for network connection to RepRapFirmware based printer using API of DuetWebUI 
    Fix: tray notification functionality 

7.33.0

    Improvement: refactored UI back and front code for main page. Big improvement in UI performance. 
    Improvement: loader animation for update and upload buttons
    Change: minor changes to front page design
    Fix: page fails to update on upload of a large file to a local storage

7.32.4

    Fix: GPIO on RPi5
    Fix: crash of http client on getting host id using subprocess on MS Windows with certain locales
    Fix: Restored comparability with BambuLab P1S firmware after update 01.06.00.00

7.32.3

    Fix: failed job start for Bambu Lab printers when AMS not connected

7.32.2

    Fix: not always setting state to connecting when printer connection to printer is lost
    Fix: not able to raise error 78 for not operational timeout reached

7.32.1

    Fix: inefficient RAM usage on print file loading for BambuLab printers
    Fix: cloud job failure on reconnection to a BambuLab printer 

7.32.0

    Improvement: printer reconnection remake to fix printer blinking when it is in error loop
    Feature: logging of under-voltage warnings on RaspberryPi
    Fix: Prusa over network was considered not operational when in Finished state
    Fix: thread leak in formLabs_sender 

7.31.0

    Improvement: snap_cam_url setting to change a source of frames for http snap camera
    Change: forced_settings.json 

7.30.5

    Fix: permanent error loop with "No such driver" when printer connection type in local and cloud's profiles mismatches
    Fix: connection data error in local profiles

7.30.4

    Fix: additional type selection was required when adding network Prusa
    Fix: crash of formlabs_sender when printer responding with null on information request 

7.30.3

    Fix: all FormLabs profiles mistake forced input of a password

7.30.2

    Fix: FormLabs crash on connecting to a printer that is offline

7.30.1

    Fix: connect network printer page was not showing serial number field input for printer's that require it, such as Bambulabs
    Fix: support for upload_to_printer server command on Formlabs
    Fix: reset printer type on a client was not applied until reconnection

7.30.0

    Improvement: camera multithreading for per capture thread as a solution to mitigate streams broken by inconsistent reading from a camera capture, when a lot of slow cameras are connection to one host
    Fix: cloud's printer connection wizard requests was not selecting printer model properly
    Fix: closing of modules for Bambulab and Formlabs improved to prevent leaks of threads, sockets and unhandled calls to OS
    Fix: support for upload_to_printer server command on Formlabs

7.29.6

    Fix: ok timeout bonus stuck at 0s
    Fix: on pause/resume position race caused invalid position to be stored sometimes

7.29.5

    Fix: some fields ascent when adding a network printer with v2 profile using local web ui
    Change: v2 profiles now automatically prioritised over old profiles
    Improvement: Python3.12 compatibility(experimental)

7.29.4

    Fix: relative positioning of extruder was not restored after resume

7.29.3

    Fix: duplication of records in printer type selector

7.29.2

    Fix: crash network detector on processing of version 2 profiles with network connection_type, but without a network_detector field

7.29.1

    Fix: crash of web_interface of connection_type selection

7.29.0

    Feature: unbind of printer type and printer connection profile. Version 2 profiles now can have several possible connection types per printer(USB to sdcard, USB serial, Network, etc)
    Feature: full support for setting connection type and printer type using cloud wizard

7.28.3

    Fix: groups management

7.28.2

    Fix: sender for Makerbot gen 1 and 2 crash on loading gcodes(ported from 7.27.8 stable)

7.28.1

    Fix: threaded_sender crash due to initialization race of variable for ok timeout bonus

7.28.0

    Improvement: rework of ok response timeout, custom timeouts for different gcodes, gcodes sender code overhaul
    Improvement: better and more reliable event reporting 
    Feature: settings option for continuous print - next job from the cloud's queue is automatically requested when previous is finished

7.27.7

    Fix: remember_printer arguments where incompatible with newer client-server protocol call format

7.27.6

    Feature: per camera reconnection on fail to grab frame
    Fix: crash on receiving host action command "start"
    Fix: main camera module was starting multiple times when bambulab camera module asked for restart
    Fix: camera mix up and random disconnection when one of cameras fails or got too slow

7.27.4

    Fix: a bambulab could stuck waiting for a job to start indefinitely

7.27.3

    Fix: bambulab camera not working on RaspberryPi
    Fix: protection against invalid calls to remember printer

7.27.2

    Feature: user can now connect a network printer using the cloud's UI
    Feature: cloud commands now accepted even when there is no printers connected to the 3DPrinterOS client
    Fix: general stabilization of Prusa's network connection

7.26.0

    Feature: support of network printing for PrusaMK4, Prusa Mini, Prusa Mini+ 

7.25.5

    Fix: printer interface hangs on camera module switch

7.25.4

    Fix: selecting camera type in the cloud was not reported back

7.25.3

    Fix: Crash of bambulab sender when using joystick/console

7.25.2

    Fix: PrusaMK4 sometimes is detected without serial number which is creating a new printer that is only a result of a bug
    Fix: Yet another attempt to mitigate oozing after resuming print after filament change on pause

7.25.1

    Fix: cloud's job stuck in progress when canceled from local UI
    Fix: stuck in pause state if some errors raised by printer after pause

7.25.0

    Feature: support for Klipper through Moonraker server

7.24.3

    Fix: invalid json in default_printer_profiles

7.24.2

    Fix: stuck in pause state when canceled using 3dprinteros after pause using printer screen

7.24.1

    Fix: cancel/pause from printer's own screen, due to host action command format with space before //

7.24.0

    Feature: camera support for Bambulab P1 and A1 printers
    Fix: all gcode based printer got a bug of req/resp error accumulation on cancel
    Fix: parsing temperatures from latest PrusaFirmware in format without space before /(target temp prefix)
    Fix: quirks in startup camera type selection

7.23.2

    Feature: support of Bambulab A1 Mini
    Fix: Bambulab job start issue

7.9.41

    Feature: support of Bambulab P1S

7.9.40

    Fix: skip of gcode line on fail to white to a port(until printer's firmware will not ask to resend from the correct line number)
    Fix: rewinding of current gcode line index to zero in case of malicious resend with line number larger that was send

7.23.1

    Change: on resume behavior: heatup before moving to restored position and don't heat up extruder before bed when heatup_on_resume is enabled
    Fix: handing host action commands with space in between // and action name

7.23.0

    Feature: ability to override settings and even printer profile field for a selected printer. Without a UI for now.
    Improvement: some updates to local web UI security
    Fix: emulated serial connection responded with multiple ok on M110 gcode

7.22.2

    Feature: a setting for klipper detector to detect old style serial number zero instead of new style serial number derived from a port path

7.22.1

    Change: Generic Duet3d switched to sdcard_print_sender
    Fix: crash of sdcard_printer_sender on flush_send_now_buffer
    Fix: new sequence of pause/store_position/restore_position to get coords only after head was lifted by the pause code to prevent damage to a print
    Fix: of crash in gpio_map detection and initialization when board is not detected
    Fix: attempt to fix emulated serial connection pause in sdcard printing mode

7.22.0

    Feature: complete rework of Klipper detection code. Multi Klipper support. Better automatic detection of Klipper's port
    Feature: gpio buttons and gpio uart now are can be enabled at the same time, but only when allow_use_with_buttons set to true
    Fix: a better handling of Bambulab's bug of stucking when a printer silently failing a job. Reconnection on cancel. 
    Fix: another crash on position restore when resuming after pause with restore_pos_on_resume enabled

7.21.4

    Fix: crash on position restore when resuming after pause with restore_pos_on_resume enabled

7.21.3

    Fix: Bambu Lab upload issue

7.21.2

    Fix: detection Formlabs printers 

7.21.1

    Fix: crash of printer_interface on connection errors and empty events queue

7.21.0

    Feature: API2 stabilized to release quality, documentation, support for keywords arguments in payload, many other fixes
    Feature: slave mode for running 3DPrinterOS client as a component of other software
    Feature: Octoprint plugin now can be build from 3DPrinterOS code
    Improvement: performance and stability of getting host_id on GNU/Linux by using ifaddr and /sys/class/net/dev/address
    Fix: gcode send-recv desync when printing with sdcard upload on RepRapFirmware

7.19.8

    Fix: detection of Formlabs printers 

7.19.7

    Fix: crash of printer_interface on connection errors and with empty event

7.19.6

    Fix: Reconnect printer on not operational timeout reached
    Fix: Bambulab disconnect/reconnect fix
    Fix: event could be not send to the cloud
    Fix: numerous host action commands related bugs

7.19.5

    Feature: support of Bambulab P1S

7.19.4

    Fix: crash of Makerbots 5th gen sender with Authentication error on fail to upload print file, without retry

7.19.3

    Fix: Multi camera crash
    Fix: slow upload of gcodes in sdcard upload mode due to buffer size set to 4096

7.19.2

    Fix: crash on bambulab sender start

7.19.1

    Fix: temperatures and progress requesting stuck after sending M98 when in sdcard printing mode
    Fix: threads race potentially could cause temperature requesting thread to not get back after calling its start

7.19.0

    Improvement: Bambulab camera support
    Fix: SD card upload printing caused gcodes to de-sync with ok response
    Fix: retrying read of host_id caused too many open files error

7.18.13

    Fix: double ok after M29 gcode caused all kinds of nasty problems due to desync of gcodes flow 
    Fix: gcode console was not displaying all the printer responses

7.18.10

    Update: TLS certificates version 2023.07.22 
    Improvement: upload and print start now can retry after a fail on Makerbot 5th generation 

7.18.8

    Fix: MakerBot 5th gen and laster was raising NotAuthenticated error when RPC method not found. This prevented Replicator+ from starting a print
    Fix: double processing of "Unknown command" response

7.18.6

    Fix: target temperature was not parsed properly in some cases when value is 0
    Fix: crash on parsing position response when there is only three coordinate in it
    Fix: resetting lines send counter when printer is requesting resend from line with number greater then current line number
    Fix: skipping line in send fail instead of attempting to resend
    Fix: temperature and sdcard progress requests send when during very long uploads to sdcard
    Change: auto recovery from waiting for ok response for too long(when not heating or paused) is now disabled by default
    Improvement: a backend for playing audio(for events notification)
    Improvement: more reliable platform detection
    Improvement: universal function for running shell commands
    Improvement: network detection of Dremel printers in the same LAN
    Improvement: custom port setting for updating
    Improvement: settings to control camera focus and exposure(experimental)

7.18.2

    Fix: makerbot 5th generation detection was not properly handling multiple printer's in the same LAN
7.18.1

    Improvement: support for echo:Unknown command response from a printer(previously we where waiting for ok)
    Fix: printer interface stuck with critical errors and is not closing
    Fix: http client incorrectly reads host_id stored in user login object

7.18.0

    Improvement: event like system to guarantee send of correct status and progress on print finish success or cancel
    Fix: stuck with not UI when stored login no longer valid due to credentials change on the cloud
    Fix: calling tests with fakeparent.FakeParent not creates a pretty settings filename

7.17.3

    Fix: no per printer logs written after logs send, until log file rotation occurs
    Fix: not reusing host_id on reconnection to cloud
    Fix: crash on handing of host some action commands due to invalid error registration

7.17.2
    
    Fix: crash on counting lines in gcodes_buffer on Python version < 3.7. Dynamic gcodes buffer will be disabled for old versions of Python.
    Fix: exception in web interface's coroutine due to printer disconnection during local printer start

7.17.1

    Feature: storing and reusing locally a detected correct baudrate after successful connection to a printer
    Feature: support for R arguments of temperature control gcodes
    Improvement: performance optimization in processing of sent gcodes
    Fix: too frequent notifications from tray icon
    Fix: pause caused printer object damage due to a delay before moving extruder

7.16.15

    Fix: too frequent notifications from tray icon

7.16.14

    Fix: fail to start prints on Makerbots of 5gen and later

7.16.13

    Fix: dremel's sender crashing on print start

7.16.11

    Fix: no connection to printer that are using threaded sender on  MS Windows due not resource module

7.16.10

    Fix: host action commands with words after action name (like '//action:pause filament_runout 0') now handled properly  

7.16.9

    Fix: camera was not restarting after hardware errors or re-pluging
    Fix: crash on start on MS Windows due to error in camera controller
    Fix: logging of downloader to the main log instead of printer's one 

7.16.8

    Fix: API2 crash when using printer_id key
    Fix: useless 20 second sleep during software update from QtUI
    Fix: crash on some some API2 call

7.16.7

    Improvement: Serial connection write fail/retry algorithm significantly imported by treating any number of send bytes as success and continuing without adding to fails counter. This way a we can write into even very slow port. 
    Fix: APIPrinter logs sending 

7.16.6

    Fix: invalid decoding of non-buffered gcodes send to threaded sender

7.16.5

    Fix: numerous fixes for sdcard printing and qt_interface
    Fix: local printed files removed after a print

7.16.4

    Feature: printing with uploading to printer's sdcard(still experimental)

7.16.1

    Fix: API2 now functional
    Fix: skip of login page caused by latest commit
    Fix: 'Go to your account button' shown in offline mode
    Fix: crash on quit on RPi 
    Fix: a bunch of minor stability improvements

7.16.0

    Feature: API2 for controlling a local print using HTTP protocol
    Feature: handling of cancel command send by 3rd to the printer's board, using host action commands 
    Feature: printer protocol and API now accept resume command to undo pause state
    Fix: crash on parsing of host action commands

7.15.1

    Port: fixes from beta 7.9.31 ported from beta branch

7.15.0

    Port: features from beta 7.9.30 ported from beta branch

7.14.0

    Merge: port of features from 7.9.25 and 7.9.26

7.13.8

    Improvement: skipping adding of N and *Checksum in threaded sender for lines listed in the printer_profile field

7.13.7

    Feature: support of printer connected with UART on GPIO pins

7.12.4

    Fix: performance optimizations for dynamic gcodes buffer

7.12.3

    Fix: gcode lines corruption by dynamic gcodes buffer

7.12.2

    Fix: action:start now calls bed_is_clear instead of next job 
    Fix: merge of fixes for Makerbot Method

7.12.0

    Feature: host action commands processing for start, pause, resume, cancel and many more

7.11.0

    Feature: network camera support
    Feature: mjpeg camera streaming local server

7.10.4

    Fix: downloader not functional

7.10.3

    Fix: camera restart loop

7.10.2

    Fix: Klipper detection now works

7.10.1

    Feature: experimental support for Klipper autodetection
    Feature: printer status in client scanner response

7.10.0

    Improvement: chunked loading of print file into memory to remove max file size limitation caused by RAM  (optional)
    Improvement: better camera detection and reconnection. Second and following cameras will be reconnected without camera module restart

7.9.39

    Fix: crash on parsing a position report without E coordinate

7.9.38

    Fix: makerbot 5th generation detection was not properly handling multiple printer's in the same LAN

7.9.37

    Fix: too frequent notifications from tray icon

7.9.36

    Fix: apiclient related paths

7.9.35

    Fix: backward compatible calls of apiclient without /api path

7.9.34

    Improvement: after heatup_on_resume execution now extruder heats up in parallel with bed to 

7.9.33

    Feature: relative mode for on pause/resume gcodes now unset after the gcodes, not after the resume
    Feature: command to remember position and be able to return to it. This is optional for on resume event

7.9.32

    Fix: fix job upload and print status for BambuLab P1P

7.9.31

    Feature: added cooldown on pause for particular printers
    Rework: heatup on resume code to support more that one extruder
    Fix: wx tray now starting
    Fix: empty log file of camera created in the code folder when camera logging is disabled
    Fix: Bambulab logging is not in the new style - separate file for every printer

7.9.30

    Feature: support of Bambulab printers

7.9.27

    Fix: wrong numeration in heatup_on_resume temperature template

7.9.26
    
    Feature: reimplemented on pystray library. Tray icon is back on all OS, not just MS Win.
    Feature: Heat up on resume for some printers(depending on the profile).
    Feature: on_pause and on_resume gcodes can now be customized for particular printer model.
    Fix: update delay can be delayed forever on printer reconnect loop
    Fix: of UI main screen clicks no always handled properly
    Fix: older openSSL imported on MS Win from python3X folder instead of latest from lient folder

7.9.25

    Feature: a new logging system, with better readability and even with separate per printer log file 
    Fix: the bug was creating a faulty duplicate of a printer when New Style SNR is enabled
    Fix: log spamming and high CPU consumption and log spam for a second after USB disconnection

7.9.24

    Fix: proper disconnect error handling for Makerbot 5th generation

7.9.23

    Fix: makebot and formlabs senders broken by filename attribute name change
    Improvement: minor performance optimization for reading thread of threaded_sender

7.9.22

    Fix: local web UI gcode console is now showing printer responses correct

7.9.21

    Improvement: performance optimizations for Gcode based printers
    Improvement: experimental code for better processing of CRASH_RECOVER events on PrusaFirmware

7.9.19
    
    Fix: crash on connection to Makerbot's 5th gen with exception of Z18
    Improvement: update of certifi from 2022.6 to 2022.12.7

7.9.18

    Fix: incorrect number of extruders in printer profiles of Makerbot Method 

7.9.16

    Fix: print stops due to error caused false positive check on max valid resend range 

7.9.15

    Feature: support for Makerbot Method 
    Fix: changes connection sync to prevent skipping of start gcodes on some printers
    
7.9.14

    Fix: slow printing on threaded sender when printing with file that contains comments(every file downloaded from cloud now)
    Improvement: logging of print read/ok/resend/etc rates for threaded sender

7.9.9

    Fix: unhandled exception backend.enumerate_devices PyUSB call in usb_detector
    Fix: downloader will now properly restart a gzip download in case of temporary connection lose

7.9.8

    Improvement: protection against an error on calling comports to detect a serial port of printer, by using a previous value

7.9.7

    Improvement: HTTP will now reconnect after 5 non OK responses
    Improvement: board error state detection in threaded sender for  error message like: kill, halt, etc
    Improvement: refactoring of print file downloader, better processing of disconnection/reconnection events
    Fix: downloader is not checking HTTP status
    Development: better logging for camera debugging

7.9.6

    Feature: better printer connection checking code, to support for printer with messed up firmware 
    Feature: cancel after a gcode resend request will now send command to reboot printer's board
    Feature: a pause after failed connection to a printer, to give a user some time to press Reset printer type
    Fix: a bug of printer interface's loop sleeping too long after loosing connection to the server
    Fix: threaded sender hang on empty line in not buffered gcodes
    Fix: logging of ok timeouts is fixed and now got more info

7.9.4

    Tuning: reduction of http connection max timeout
    Fix: better exception logging on authentication of Makerbot's of 5th gen
    Fix: Makerbot 5th generation with Python 3.10
    Fix: http_client logging fix, to prevent overriding of log_level between different clients

7.9.3

    Refactoring: wizards code
    Tune: force enable of gcode pause interception

7.9.2

    Feature: Formlabs Fuse1+ support
    Fix: not patching cloud URL shown in local WebUI
    Fix: filament wizards in Qt interface are not reacting to Next button

7.9.1

    Feature: experimental support for Formlabs Fuse 1, Formlabs Form 3(L, B, BL)
    Fix: no output in GcodesConsole in Qt Interface

7.9.0
    Feature: support for gzip downloads
    Fix: update command from the cloud

7.8.5

    Fix: getting mac address in QtUI on RPi
    Fix: crush on detection of Formlabs printers

7.8.4

    Improvement: new printer state - cancel
    Fix: double reconnection after cancel

7.8.3

    Improvement: pause gcodes interception is now controlled by the settings and is disabled by default
    Fix: above change expect to mitigate a bug of a printer stuck in printing_locally state after getting into paused by user state in some cases
    Fix: detector of 3DPrinterOS Client in same LAN

7.8.1

    Fix: crash on processing the cloud's command with payload
    Fix: checking for rights to control a backlight in unnecessary cases

7.8.0

    Improvement: UI for changing SSH password and generate, upload or revoke keys.
    Fix: platform detection for RPi images with aarch64 kernel
    Fix: formlabs_sender bug of .gcode/.go filename switch

7.7.0

    Improvement: unzip now done in a subprocess, so its CPU load cant affect ongoing printing 
    Improvement: memory check is now performed before loading gcodes, to ensure that a file will fit
    Improvement: optimized memory consumption on gcodes preprocessing

7.6.6

    Fix: removed a debug output line from printer interface and user login

7.6.5

    Improvement: detection of camera backend errors to recover a camera connection(disabled by default)
    Improvement: detection of printer board's firmware reboot now covering a case then it was in "paused for user" mode
    Improvement: Pi camera support is back. Meaning direct using picamera module, instead of through Dual Camera using v4l2
    Development: better logging of server requests and responses
    Fix: improper handling of server login with invalid credentials

7.6.4

    Improvement: a printer profile flag for no homing on connect
    Improvement: ability to force host for the updater
    Improvement: the code for timeout waiting ok was refactored and is now more reliable
    Fix: crash on quit from threaded sender due to missing skipped_line_numbers attribute

7.6.3

    Improvement: ability to install custom cacerts for private servers(merge)
    Improvement: updater server url prefix now is switchable(merge)
    Refactoring: cleanup of the code for kwargs processing in http client message packing
    Fix: action Quit is renamed to Restart on wrong platforms
    Fix: some invalid defaults in settings
    Fix: double logging of print time left

7.6.2

    Improvement: protection against double ok in threaded sender init
    Fix: incorrect line number offset in threaded sender
    Fix: stuck on N110 when using emulated serial connection

7.6.1

    Fix: sender crash on processing a filename

7.6.0

    Improvement: support for Formlabs printers
    Improvement: a fixes and refactoring to stabilize the gcode sending code
    Improvement: cloud job id, printer job id and job filename added to the protocol report section
    Improvement: faster stopping for main and printers loops
    Development: emulator for printer firmware now can: validate line number and checksum, heatup, block and request resend from line 
    Development: FakeApp now collects errors history
    Development: autoreport and update now will be enabled during the building process and disabled in dev
    Refactoring: all HTTP requests using urllib reimplemented using requests module
    Fix: network check of Qt interface now uses a correct URL instead of hardcode
    Fix: console login crash
    Fix: requests crashing on first import due to simplejson removal leftover(empty folder)
    Fix: numerous crash on json exceptions, due to exception class incompatibility of json and simplejson
    Fix: virtual printer using emulated serial connection and threaded_sender not connecting with "No serial port" error
    Fix: crash on quit due to calls to Qt objects that are already closed
    Fix: high CPU load when Dual camera module is enabled, but no cameras present

7.5.14

    Fix: Creality CR-10 temperatures processing

7.5.13

    Feature: M0/M1 and other pause/resume gcode are now pass to firmware if they got S or P arguments or if gcode line contains "3DPrinterOS pause pass"

7.5.12

    Feature: support for Creality CR-10 temperatures format with cryptic ==

7.5.11

    Fix: numerous errors caused by local cancel command processing

7.5.10

    Fix: crash of network printers detector on http detection when host is reported as iterable

7.5.9

    Fix: of comparison instead on assignments in crash on check for need to remote login

7.5.8

    Fix: crash on checking for a need to remote login

7.5.7

    Fix: crash on pause or resume gcodes

7.5.6

    Improvement: optional Formlabs support
    Improvement: faster stopping for main and printers loops
    Fix: incorrent platform detection on recent MacOS
    Fix: 3DPrinterOSAPI paths parsing 
    Fix: MacOS compatibility fix

7.5.5

    Fix: malfunction of Setup camera page in WebUI

7.5.4

    Improvement: better report problem title with version and OS
    Fix: quit and logout confirmation in local webUI 
    Fix: disable camera logging by default

7.5.3
    
    Fix: crash on startup due to removal of zeroconf library

7.5.2

    Improvement: HTTPS for updater

7.5.1

    Improvement: change of server command logic to make command execution possible even with unsent errors
    Fix: false no update when checked too fast of HTTP request error and base for other future improvements for updater
    Fix: crash of page_former on processing group selection for printer without profile
    Fix: crash of joystick_interface on console command to disconnected printer
    Fix: lost style tags in main page html 
    Fix: layout on joystick page
    Fix: temporary fix of multi ok response in joystick on clicks to some buttons
    Fix: WebUI path parsing refactored to work correctly

7.5.0

    Bundle: huge merge from 7.1.6+ version's branch, including print time left and pause on layer

7.4.4

     Fix: crash on handing of HTTP errors in camera code

7.4.3

    Fix: crash on handing of HTTP errors during user login

7.4.2
    
    Improvement: parsing of targetless temperature responses
    Fix: crash of network printers detector on /status path responding with non dict json

7.4.1

    Rework: HTTP errors will no longer cause switching to state "connecting"

7.4.0

    Rework: WebUI colors to match the cloud's new UI
    Improvement: Upload button on local printing page
    Improvement: two less buttons for every printer on the main screen
    Improvement: automatic local mode when user in on console or login page
    Fix: yet another crash on threaded sender close
    Fix: wrong redirect when selecting camera type during the wizard

7.3.26

    Improvement: settings UI rework in two columns
    Fix: exception on closing of threaded sender
    Fix: error on print cancel cancel in threaded sender

7.3.25
    
    Fix: vendor and product usb ids swapped in local web UI
    Fix: add missed pam library to requirements.txt
    Fix: README.md update

7.3.24

    Feature: requirements.txt added for manual dependencies installation 

7.3.23

    Fix: already printing error after successful cancel
    Fix: minor code logging bugs in threaded sender

7.3.22

    Fix: cancel on virtual printer

7.3.21

    Fix: exception on logging of an already printing error

7.3.20

    Fix: exception in network detect caused by unknown scanner name

7.3.19

    Fix: possible crash and memory leak in joystick interface when printer is disconnected
    Rework: minor changes in threaded sender in attempt to fix the already printing bug

7.3.18

    Fix: 3dprinteros protocol error on processing arguments that are equal to False
    Tuning: longer print thread join timeout 

7.3.17

    Fix: threaded sender reading crash on empty printer reply

7.3.16
    
    Fix: random reading thread crash
    Fix: numerous bugs after keyword "enqueuein" in printer responses
    Improvement: stability of serial connection
    Improvement: better response timeout event detection

7.3.15

    Fix: threaded sender stuck on resend
    Fix: threaded sender ignored a heating flag

7.3.14

    Fix: on some firmware heating mode not properly detected, causing a new gcode line to be sent too early

7.3.13

    Fix: error when turning off local mode on printer interface reconnection
    Fix: wrong resend line number due to threads race in threaded sender
    Rework: serial connection refactored to be more universal
    Improvement: add new settings port_parity_hack to solve some drivers issues

7.3.12

    Fix: crash of threaded sender on non printable chars in error message

7.3.11

    Fix: joystick's gcodes console not working

7.3.10

    Fix: temperatures not updating
    Fix: bug braking temperatures updating after adding callback(other than previous one)
    Fix: joystick UI(E coordinate and extruder temperature were swapped)
    Improvement: check of python version on start with clear error message

7.3.9

    Rework: compatibility with aiohttp version 3.0.1 to regain support for Ubuntu 18.04 
    Fix: printer identification using uuid.getnode is now same as in stable branch
    Improvement: logging of python version and some libs versions 

7.3.8

    Fix: cloud joystick

7.3.7

    Rework: camera selection now will fallback to default camera type(Dual Camera) when wrong camera type is selected
    Fix: crash of http detector on invalid response
    Improvement: JSON decoding errors handling are refactored to cover more cases

7.3.6

    Feature: verbose logging button and functionality to apply verbose flags at runtime
    Feature: pause checkbox on show logs page 
    Rework: threaded sender is now reporting all errors and warnings from the printer to the cloud
    Rework: minor code cleanup
    Fix: asycio coroutine crash on application quit

7.3.5

    Feature: added support of Repetier Server
    Rework: downloader now can pass file object instead of just file's contents 

7.3.4
    
    Fix: semaphore timeout bug in threaded sender

7.3.3

    Fix: crash of local joystick
    Fix: crash of virtual printer on print start and finish

7.3.2

    Improvement: M0 support
    Improvement: storing of printer type choices in offline mode
    Rework: printer status "closing" removed
    Fix: resend issue in threaded sender(Marlin, RepRapFirmware, Repetier, etc)
    Fix: numerous rare bugs in threaded sender(Marlin, RepRapFirmware, Repetier, etc)
    Fix: freeze on some failures of LAN clients detector
    Fix: crash when Qt interface module is not in the build, even if it is not turned on

7.3.1

    Rework: camera configuration reimplemented
    Improvement: more complex and realistic virtual printer 
    Fix: crash on autologin
    Fix: show release note 

7.3.0

    Rework: WebUI ported from http.server to aiohttp
    Improvement: security of WebUI
    Improvement: WebUI access cookies are now preserved between application restarts
    Fix: crash of local joystick
    Fix: error logging in pyusb_connection, birdwind sender and m5th_cam
    Fix: error on upload a file with empty or corrupted name
    Fix: printer interface crash instead of error report on fail of telnet connecting
    Fix: crash on connection reset of telnet connection

7.2.11

    Fix: reconnection bugs in telnet printers
    Fix: crash of downloader on failed download
    Rework: the way of storing a firmware information got from printer

7.2.10

    Rework: gcodes downloader code
    Fix: printer interface can stuck with connecting status

7.2.9

    Fix: crash when run on Python3.6 when generating certificates for HTTPS server
    Fix: printer interface restart(crash?) on print end or cancel
    Fix: error on botched download with invalid zip 
    Fix: error on entering joystick

7.2.8

    Feature: support of RepRapFirmware using telnet connection
    Improvement: threaded sender is now using semaphores to manage gcodes queue
    Fix: crash on applying serial port access rules on desktop linux
    Fix: software update requests in offline mode
    Fix: crash on empty homing gcodes

7.2.7

    Rework: software update button and it's page
    Rework: warning about selection of printer type is make more noticeable
    Improvement: disable PyUSB after a critical failure
    Fix: parsing of waiting temperature gcode acks(B:..., T?:...)
    Fix: threaded sender ignoring errors reported by a printer board and stated with B, T
    Fix: crash in FlashForge Dreamer's gcodes sender
    Fix: crash on some error in PyUSB backend
    Fix: marking of devices as identical even when they are not

7.2.6

    Fix: camera subprocess crash on platform other than MS Windows

7.2.5
    
    Fix: bug of printer duplication on MS Windows - pyusb and pyserial are getting different physical ports for same device

7.2.4

    Rework: printer type reset message and behavior. Should be more reliable and faster in offline mode.
    Fix: impossible to select a printer type in offline mode
    Fix: subprocess windows pop-ups on MS Windows 
    Fix: possible crash on login storage file corruption
    Fix: bug in log sending repetition protection

7.2.3

    Rework: protection against hanging of printer connection(and other application threads) on quit
    Rework: exceptions logging and sending will now recognize repeats and will process them less dumb 
    Rework: UI tweak - red color for "...select printer type" message
    Rework: tweaking for threads join timeouts to make quit sequence faster
    Rework: refactoring of usb detector
    Fix: occasional crash of printer interface when resetting or selecting printer type in offline mode
    Fix: crash instead of error report when makerbot 1 and 2th gen is receiving binary instead of gcodes
    Fix: virtual printer in the wizard lead to setting page
    Fix: fix version string position(this time for real)
    Fix: PRT in usb info was tuple, not string
    Fix: behavior of usb_detector with several printers of same usb info

7.2.2

    Fix: wizard crash on the client start
    Fix: crash when downloading and unpacking too large file
    Fix: update request timeout too low
    Tuning: update request is tuned to be more frequent

7.2.1

    Rework: UI tweaks(button color, version string position, etc.)
    Rework: Threaded Sender becomes better at handling exotic temperature responses
    Fix: Makerbot 5th generation
    Fix: UltiGcode Sender module was not ported to python3
    Fix: printer type selection and reset in local mode
    Fix: detection wizard crush on entering the integration form
    Fix: crash of threaded sender on connection with empty response
    Fix: crash on fail to resetting pyusb device configuration on MS Windows
    Fix: crash when Picamera is selected 
    Fix: crash on flawed OS configuration of MS Windows, that results in error of pyserial
    Fix: gcodes sender(threaded_sender) got several improvements for crash on crazy printer responses
    Fix: printer interface crash on requests to server inside printer login
    Fix: console login
    Fix: "--logout" command line argument
    Fix: several potential crashes on trying to log rare exceptions
    Fix: rare detection wizard crashes

7.2.0

    Feature: local printing and offline mode
    Feature: new printer type integration wizard
    Feature: better support for multiple printers with same(or invalid/empty) USB serial numbers
    Feature: GPIO toggling button in settings and backend for GPIO interface toggling at runtime
    Feature: support for Bosch Dremel new firmware(had broken API compatibility)
    Rework: some elements of web UI
    Rework: code of user login, main loop, http client, GPIO and web UI
    Rework: cookies logic and token generation for better security
    Removed: PiCamera removed due to library bug causing incompatibility with Python3.8.1
    Fix: improved security of 3DPrinterOS RPi image by switching to run as user
    Fix: file uploading
    Fix: logging of web interface's broken pipe errors as crashes
    Fix: multipart post reimplemented, because cgi implementation in python3 was broken
    Fix: launcher's double run prevention functionality
    Fix: crash on empty login password
    Fix: not removing log zip files on failed problem report sending
    Fix: prevent temperatures reset on USB reconnect for Bosch Dremel 
    Fix: wrong parsing of some temperature responses 
    Fix: occasional duplication of clicks in UI
    Fix: local joystick using remote js libs
    Fix: wizard hangs before workgroups page
    Fix: camera type switching from cloud making camera unusable
    Fix: camera subprocess prevent application quit on some errors from opencv
    Fix: numerous bugs in workgroups management
    Fix: account email with some special symbols are not working
    Fix: lack of https warning on remote login page 

7.1.40

    Fix: standard ca-certs are discarted after installing a custom ca-cert on the old OS images
    Fix: update of NetworkManager python wrapper to be compatible with a new NetworkManager and DBus

7.1.39
    
    Fix: restored cameras functionality broken in 7.1.37

7.1.38

    Feature: reimplementation of virtual printer to be the same in means of sender and USB identifiers

7.1.37

    Feature: ability to patch settings, install updates and install custom CA certs from USB drive, through QtUI

7.1.36

    Change: a better way of checking a sudo access

7.1.35

    Fix: reset cloud's job on printer_interface start

7.1.34

    Improvement: camera log sending on update logs
    Fix: removed redundant code the update_script.py

7.1.33

    Fix: crash on start due when not ['protocol']['custom_port'] field in present in settings
    Fix: false error logging on using wired connection

7.1.32

    Change: now connecting state will be threated as already connected by Qt UI
    Change: connecting state will only be triggered by complete network disconnect, not on every error
    Fix: estimated print time set to zero by after getting correct one from cloud
    Fix: job is not canceled in cloud on shutdown
    Fix: rare network state monitoring thread crash on getting local IP
    Fix: needless WiFi scans on every network state change

7.1.30
    
    Fix: filament wizards stuck on heating(code merge mistake)

7.1.29

    Fix: header not show in Advanced and Cloud submenus of settings
    Fix: confirmation UI bug
    Fix: z calibration UI bug

7.1.28

    Feature: menu item for cloud's queue check and job start
    Feature: print time left for local prints(estimation calculation by printing speed)
    Feature: support for "pause at layer" scripts
    Improvement: new sub-menu - Cloud
    Improvement: multiscreen sub-menus support
    Fix: gcode line numeration skips at comments only lines

7.1.27

    Feature: print time left
    Feature: wired connection detection and header icon for it
    Improvement: better print screen layout
    Improvement: smarter error reporting for Qt UI
    Refactoring: network model
    Fix: rare crash bug in printer interface

7.1.26

    Fix: cancel locally not sent to cloud
    Fix: hang of threaded sender on cancel
    Fix: keyboard pop-up in gcodes console
    Fix: error message cancelled locally could appear after cancel
    Improvement: button to hide a virtual keyboard
    Improvement: more space for gcodes console by hiding the header
    Improvement: local print from SD card now will note the user when loading if finished and sd can be removed

7.1.24

    Improvement: new wizard for calibration of Z endstop offset 
    Remake: wizard for changing a print head

7.1.5

    Fixed layout in printing screen

7.1.4

    Logs uploading for APIPrinter
    Logs uploading button for Qt UI
    Fix of broken layout
    Add downloading status to Qt UI

7.1.3

    Fixed update screen text
    Fixed a mistype in update process screen
    Changed the names of temperatures
    Remove dub bed and extruder names in joystick

7.1.2

    Qt interface RC2
    Offline mode(beta)
    Fixed temperatures displaying in Qt interface
    Removed line number from Qt interface

7.1.0

    Qt interface
    Duet3D support
    Fixed several connection bug in http client

7.0.0

    Application port to python3
    Removed MacOSX support
    Removed CloudSync
    Removed Linux system tray icon
    Removed HDCamera
    Errors system refactoring
    User interfaces start/stop refactoring
    HTTPS web initialization refactoring
    HTTPS warning-redirect refactoring

6.2.0

    New feature: single click login using 3DPrinterOS Cloud login credentials stored in browser
    Improvement: not accumulating multiple identical errors on error repeat - instead send only unique
    Fix: inability to reset printer type when printer connection gives an error
    Fix: rare HTTPClient connection closing error on exit

6.1.1

    Fixed the race to reset printer type on failing connection loop

6.1.0

    Implemented GPIO buttons
    Some fixes on printer workgroups saving

6.0.17
    
    Certificates in requests library updated
    
6.0.16

    Camera traffic optimization

6.0.15

    Some sleep was added on server error in HTTP client
    3DPrinterOS favicon was added

6.0.14

    File transfer USB endpoint autodetection was added to pyusb_connection (for new FlashForge printers)
    Fix problem with old makerbot_sender (remove .pyc file)
    Fix download percents for dremel_sender (2 stages: download from cloud and upload to printer)
    Some fixes in smoothie_sender
    Some fixes in Get updates form
    Update temps for dremel_sender to support two extruders

6.0.13

    Camera mode saving after change on cloud was added
    Some update for runnable plugins
    Fix problem with old makerbot_sender

6.0.12

    Some fixes in Beeverycreative sender
    "Report_problem" command was added to 6th client
    Filename was added for Makerbot 5th printers

6.0.11

    Some fixes for Makerbot 5th
    Some send logs fixes
    Some fix in gcodes command
    Makerbot Replicator 2 and 2X 3D printer plugin for 3DPrinterOS cloud client was added

6.0.10

    License update
    Some fixes in dremel sender
    Updates for correct working of FlashForge Guider 2
    Some fixes in camera subprocess terminate logic
    Some fixes on empty camera image for Makerbot 5th
    Some fixes for correct cancel on downloading and paused steps
    Some fixes for Makerbot Replicator+ camera
    Some fixes for Makerbot 5th
    Smoothie serial sender was added
    Blocking heating emulator was added to threaded sender

6.0.9

    Set only TLS1.2 version available for HTTPS
    Restrict weak ciphers for HTTPS
    Some updates in Makerbot 5th logging
    Add Makerbot 5th internal camera
    Store network detected printers to file
    Add simple protection from connecting - error - connecting cycles for Makerbot 5th printers
    Add confirm detect network printers page
    Fixing Makerbot 5th error message on unsupported USB connecting
    Fixing double commands in joystick
    Fixing CPU serial numbers with only zeros processing
    Fixing Dremel's cancel from 3DPrinterOS client

6.0.8

    Add HTTPS web server feature
    Add self-signed certificates auto generating for HTTPS

6.0.7

    Some fixes in Makerbot 5th printer's protocol connected with new firmware
    Fixing HTTPClient register_error on camera object

6.0.6

    Some fixes in Makerbot printers protocol
    Some updates in network detector
    Fixed possibility of same printer duplicating on new printer connecting
    Add g3drem file format as supported for directed printing on Dremel printers
    Fixed recovering of printing process by stop to wait for ok (threaded_sender)

6.0.5

    Fixed many bugs
    Zipped gcodes transfer support

6.0

    General refactoring - no more hacky code in application core
    Complete refactoring of commands and errors systems
    Large refactoring of web interface - links based instead of huge html
    Faster startup and majority of other operations
    Local control: joystick, console and print cancel
    Web camera optimizations for non HD cameras - less lag and better frame rate
    Sorting for printer type selection by alphabet
    Remote access: remote authentication, cookies, configuration, etc...
    Ability to detect other 3DPrinterOS clients inside your LAN
    Ability apply custom user settings on login
    Embedded settings editor(text)
    More buttons and menu interface to customize users settings
    Interface to manually install updates for zip archives
    Setting for main loop to optimize performance
    Settings to disable automatic logs sending(for privacy or any other reason)
    Automatic logs reporting on critical errors
    Upgrade of updates system - ability to update client from different release branches
    Setting to turn on camera log
    Fix of possible misreport of error state
    Fixes for number of bugs in network printer detection
    Fix of API crash on token login, when using nocache in path
    Change of the license. This release is no longer GPL, because nobody had collaborated in a year :(

5.9.15

    Changes in threaded_sender to fix the bug of unable to print after cancel
    Fixed of false error at end of print on printers of BOSCH Dremel family
    Fixed rare crash on start

5.9.14

    Update of network printers detection. Now you can add and remove them manually.
    Update script to fix hdcamera issues on RPi(will set video memory split to 128MB)
    Fixed release notes opening on Ubuntu
    Fixed infinite browser page refresh on logout

5.9.13

    Dremel 3D40 support
    FlashForge Dreamer support
    Cancel for both Dremels 3D20 and 3D40
    Huge stability update for Dremel 3D
    Dremel download percentage is now counting in gcode uploading to printer
    Local telemetry interface
    Cancel during heating on a Printrbot will now cause printer module reload, not just show warning
    Support for marlin-like firmwares that lack standard starting message
    Add check for build number to send to cloud
    Update of gcode sender for marlin-like printers to improve stability
    Fixed bug of opening too many ports for web interface
    Fixed display of unicode text on some pages
    Fixed print auto restart after fast printer reboot for marlin-like firmwares


5.9.12

    Browser tab will not open when login using API
    Protection from API re-login during a print
    Fixed log message "no handler found..."
    Support for OpenCV3 camera backend
    Added camera module for picamera
    Correct processing for stop button on BOSCH Dremel

5.9.11

    New version API protocol and refactoring of it's backend
    Protocol for API to check mac address and some statuses
    Second attempt to login using API now will respond with success if user is same
    Fix of rare crashes on login
    Fix of blinking of cmd windows in MS Windows, during application start

5.9.10

    Fix of client fails to process API some requests with nocache parameter
    Host server name to login screen
    Ids in html for parsing with API
    Ability for API to get client's MAC address
    Ability to display real login name for disposable token login
    Fix of workgroup selection page

5.9.9

    Fix for port collision of RPi's Apache and 3DPrinterOS client itself

5.9.8

    Refresh script for login page

5.9.7

    Web interface is now reachable from non local IPs(if remote control is enabled in config)
    Web interface port is now a setting
    Update of requests library to version 2.9.1
    Automatic restart after logout
    Additional command line arguments(to resolve some issues with corrupted user_settings, etc)

5.9.6

    Universal client for normal login and login using 3DPrinterOS API

5.9.5

    Fix of threaded_sender crashing

5.9.4

    Fix of ultigcodes sender
    Warning about double ok message was removed
    Remake of double ok protection
    Fix crash of threaded sender when receiving message with exactly one character
    Fix of protection again lost ok(it will no longer be spoofed by temperature requests)
    Smarter HTTP connection timeout - it will increase after each failed connection attempt
    Fix warning about when user can't access groups
    Fixed message when trying to rename printer or manage groups when disconnecting it
    Protection against error in printer interface with error deque mutation during iteration
    Add console/joystick support to virtual printer

5.9.3

    Major changes in threaded sender:
        Double ok protection
        Printer hanging warning
        More reliable printing/homing thread starting
        General refactoring
    Fixed rare bug of printer disconnection handling
    Fixed detection of two identical printers without serial numbers
    Add protection again USB detector backend errors
    Logs sending code refactoring
    New setting - verbose
    Fixed problem reporting and printer renaming using non-latin characters on Windows
    Client identification change - now we are using MAC address of an interface that connected to 3dprinteros.com
    More protection against password file corruption
    Fix of updater crash of empty download URL
    Fix of connection closing for printer interface and user login
    Fix of rare crash of http_client on send with ssl exception
    CloudSync wrong retrying to upload fixed
    Other minor bug fixes

5.9.2

    Quit confirmation paths fixed
    Speedup for startup, shutdown and printer detection
    Reduce of logging amount when idle
    Add warning when client version is too old to support printer type
    MS Edge is now supported
    Restore password button implemented
    Error displaying on main page fixed
    Refactoring of threaded sender print start code
    Add support for UltiGcodes printing throught USB(only Ultimaker 2 for now, and only on custom firmware)

5.9.1

    Fix of application closing from tray icon

5.9.0

    Makerbot 5th gen integrated
    Dremel 3D Idea Builder integrated
    Network printers support implemented(for now only Makerbot 5th gen)
    Major optimization of CPU usage from all Marlin/Repetier/GRBL printers
    Protection against corrupted update package
    Change of login/password storing mechanism, to prevent storage corruption even when filesystem fails
    Fix of interface hanging after unplugging printer during type selection/reset procedure.
    Protection against corruption of "N-1 M110..." gcode(reset current line number)
    Add support for disposable(one time) login tokens
    Confirmation for logout and quit added

5.8.7

    Fix bug when user_settings.json is not updated with new settings sometimes
    Log rotation reimplemented
    Fix of bug of Makerbot's motors stuttering on cancel
    Refactoring of HTTPClient network connection waiting
    Add license header to five new files
    .DS_Store and Thumbs.db files added to CloudSync ignore list
    Wrong placing CloudSync buttons fixed
    Wrong sending terminate signal to subprocesses on Windows fixed
    Hacky fix for duplicate USBIDs(same VID, PID and serial number)
    Async_sender was renamed to threaded_sender
    SerialConnection class moved from threaded_sender to separate module
    Registration button added to login page
    Add warning for printers with same VID PID and serial number
    Wrong sending unicode problem report fixed
    A tip for restore default settings button added
    Fix for processing long web-interface handler closing
    Tutorial wizard on start implemented

5.8.6

    Protection for application multi-launching when installing update added
    Protection from crashing when trying to start tray icon process on RPi added
    Improvements for hd camera

5.8.5

    Fix of numerous problems with user settings causing crashes
    Fix of potential updater when package is partially unpacked with error
    Fix of potential problems caused by importing updater.py into launcher.py
    Tray icon status and warning popups(for Linux using PyGTK)
    Add pretty formatting to user_settings.json instead of one huge line
    Fix of another bug of camera module crash on start
    Updates are now downloaded to user folder instead of app folder
    Platform aliases for server side are changed to be prettier
    Camera switch to current mode crash fixed
    Linux groups adding with gksu implemented
    Console login script implemented
    Identical logging message spam when app waits for action fixed
    A tip when pointing printer's serial number in web-interface added
    Toggling CloudSync from web interface by button implemented

5.8.4

    Tray icon status and warning popups(for MacOS X and Windows)
    Logic of message "3DPrinterOS client had stopped" was changed, as well as message it self
    New settings processing schema
    Web interface refactoring done
    Refactoring of usb_detector with fix of bug of serial number 'None'
    Fix of stuck on downloading after numerous cancels in async_sender
    Protection for camera long closing implemented
    End application notification changed

5.8.3

    New updater with much more advanced mechanics
    *This update is needed only for transition to 5.8.4

5.8.2

    Sailfish support
    Crash when trying to login with cyrillic email or password fixed

5.8.1

    Printing sometimes stuck on first gcode. Fixed.
    Fixed slow target temperature update after M109 or M190
    Extruder lift on pause reimplemented
    Fix of temperature not updating in ready(idle) state
    Crush when reporting problem with cyrillic symbols fixed

5.8.0

    Fix of async_sender crashing when joining homing thread
    Fix of upload_logs command from servers
    Tray icon in notification area

5.7.9

    Fix of printer_interface crashing on receiving error code in string
    HD camera processing error upgraded

5.7.8

    Virtual printer feature implemented
    Fix of high CPU usage of async_sender
    Async_sender now sends homing gcodes in separate thread
    Fixed bug of handing of async_sender when it is unable to send homing gcodes
    PyUSB library update - should increase overall stability
    Camera controller update to support HD camera identification scheme
    Update of temperature requesting mechanism to prevent M105 repeat after heating
    Fix of beeverycreative to support on async_sender
    Web-interface buttons freeze fixed
    Starting HD camera for printers with not selected type fixed

5.7.7

    Printer detection fixed for printers with no serial number
    Fix of rare bug of crashing of async_sender on print start

5.7.6

    HD Camera
    Printer rename
    Camera starting algorithm updated
    Texts were updated
    Fix of the bug of missed clicks
    Report problem button

5.7.5

    Printrun was removed - custom library(async_sender) is used instead
    Bugs of hanging and unable to connected were fixed in async_sender
    Downloader refactoring for better stability

5.7.3

    Improved connection algorithm for faster baudrate selection and prevention of serial port handing for async_sender
    Reduced pseudo error spam for async_sender
    Increased number is download resume retries from 3 to 15

5.7.2

    /folder path for web interface to open logs folder
    Log rotation is disabled due to numerous bugs in logging backend

5.7.1

    Fix of printing stop when using async sender

5.7.0

    New gcode sending module - async sender. It is intend to replace printrun and potentially all other senders    

5.6.6

    Fix of crashing when 3dprinteros path containes unicode

5.6.5

    Launcher was refactored
    Camera logging turned on(for debugging purposes)

5.6.4

    Problem reporting form implemented
    Refactoring of usb_detector to reduce interference with opencv
    Camera switching from server fixed
    Camera restart feature implemented

5.6.3

    Fix of printing stop when network connection is lost
    Fix of crash on end of failed download
    Fix of rare camera crash when numpy fails to allocate memory
    Fix of crash of HTTPClient when errors occurs on first connection
    Add M999 in reset of printer without DTR reset

5.6.2

    Restarting Client feature disabled
    Release notes display fixed
    Fix of phantom printer bug

5.6.1

    Fixed bug in updater

5.6.0

    Printer type selection on client side
    Workgroups functionality fully implemented
    Fix of bug of blocking interface update on connection fail
    Web interface writing pages and style reading back-end refactored
    Fix of bug of Z axis stroke on print start
    Fix of crash on app start - ssl error
    Reporting of printer connection problems occured before ready(idle) state
    ZMorph driver not included

5.5.0

    Core of the system is reworked, everything much smoother, faster and cleaner
    New completely reworked error reporting system
    New WebUI with ajax updating - 15 times faster

5.3.1

    Fix bug of RightsCheckerWaiter crash

5.3.0

    Waiters working schema unified
    Better fix for bug of stuck on print start
    Other reset schema for printer with to DTR(PrintrBots for example)
    Fixed bug of command #0 failing

5.2.1

    Fix for hanging on start print(right after gcode loading)
    Fix for job fail on start of actual print
    Fix for crashing when serial port detection can't detect serial port for serial printer
    Fix for not updating page of web interface
    Logging of firmware version implemented
    Fix for stuck on cancel in Printrbot and other boards with no reset be DTR

5.2.0

    Fast gcode loading for printrun(10-100 times faster)
    Fixed bug of high cpu usage when no camera present

5.1.2

    Experimental Beevery Creative support (only for Linux)
    Printer type selection notifier improved
    Fixed bug of launcher when process didn't starts because of false already running
    Fixes a number of download related bugs.
    Fixed bug of error reporting to server.

5.1.1

    New approach for getting machine_id - use board serial number instead of macaddr on RPi
    Fixed error on pause for makerbots
    Implemented ability to show release notes after update

5.1.0

    Fixed position requesting after joystick or console executing
    Modification of printrun to make gcodes processing faster (~7 times)
    Conveyor killer working schema upgraded
    Fixed rare main page failure

5.0.2

    Fixed bug in reaction on download failure
    Fixed bug in percent get while switching download_thread_flag
    Updated console by adding newer regexps and fixing makerbot console.

5.0.1

    Linux rights warning fixed for RPi
    Fix bug of cancel during gcodes loading, with cause print locally status.

5.0.0

    Cameras now uses single thread and single http connection, greatly decreases cpu usage for bot client and server
    New printer detection algorithm, support multiprinting even if pyusb can't read serial number
    Console/Joysting support
    Bug of cancel during loading gcode, was fixed
    Fixed camera switching page
    Refactoring of almost all code
    Profiles now are stored in memory(for better stability and cleaner code)
    General config reimplementataion(singleton)
    New unhandled exceptions catcher/logger(100% of code covered)
    utils was split in several separate modules
    Upgraded CloudSync launching and control schema
    Fix of path get for CloudSync
    Logs sender upgraded
    Logs writing path changed to user folder
    Linux rights warning schema upgraded
    User folder path for Darwin fixed
    ZMorph code updated to 5.0.0 architecture
    Makerbot conveyor service killing for linux
    Fix of exit sequence for printrun gcode sender

4.8.6

    Updater logic upgraded

4.8.5

    Fixed critical bug in app, which caused total fail of web interface when updater disabled.

4.8.4

    Fixed critical bug in Launcher for Ubuntu

4.8.3

    Fixed bug with unicode paths in CloudSync

4.8.2

    Reboot under Mac OS X disabled
    Additional protection against hanging on restart implemented

4.8.1

    Bug in exit message handler of web interface was Fixed
    App gain more protection for cleaner restart
    Build scripts fixed

4.8.0

    Add client reboot ability
    Automatic client reboot after logout or update implemented
    Launcher preventing multiple launches of 3DPrinterOS
    Fixed bug of exit in printrun sender
    Fixed exit bug during login
    Fixed several bugs in ZMorph
    Fixed ZMorph support for  Windows
    Commands to client with GET requests implemented (login, logout, quit)

4.7.0

    Smoothie printers partial support
    ZMorph support(dont work on MAC OS X)
    Fixed rare bug of too many opened files
    Camera selection page was updated
    Changed names of folders for CloudSync - Successful and Failed

4.6.2

    Numerous bug fixes, small performance and code improvements
    Code reorganized to improve memory usage and refuse some bugs (web interface)
    Support for current line reporting was added(should fix false job completion bug)
    Cloudsync

4.5.1

	HTTP with keep_alive - faster camera and status/command exchange between client and server
	State reporting mechanism fix
	Generic Reperier Firmware support
	MassPortal support
	Felix 3.0 support
	Printbot slicing settings fix
	Quit sequence was refactored and fixed
	Ability to disable camera
	New status message for printer waiting to type selection and link to manual how to do it
	Reworked update mechanism to fix slow auto update.
	Updated Printrun to fix very rare bug on gcode resend
