* Zeroconf logging improvements
* Ignore RuntimeErrors in background threads - Prevents issues during shutdown
* Migrate start up code from api_server.py to init.py
* Add error handlers to the API server to handle detached instances
* Integrate RenderQueue eval loop into RenderQueue object
* Silently catch RuntimeErrors on evaluate_queue
* Stop background queue updates in prepare_for_shutdown
* Add a watchdog to base_worker
* Logging cleanup
* Prevent multiple watchdogs from running if render process restarts
* Add process timeout parameter to Config
* Refactor
* Add error handling to process output parsing
* Fix issue where start_time was not getting set consistently
* Add benchmark.py
* Add cpu / disk benchmark APIs
* Add cpu_benchmark method to distributed_job_manager.py
* Do a better job of storing hostnames =
* Remove hostname from Zeroconf cache if server goes offline
* Add cpu / disk benchmark APIs
* Add cpu_benchmark method to distributed_job_manager.py
* Do a better job of storing hostnames =
* Remove hostname from Zeroconf cache if server goes offline
* Wrap main code in try finally block to always stop zeroconf
* Add missing import
* Add benchmark.py
* Add cpu / disk benchmark APIs
* Add cpu_benchmark method to distributed_job_manager.py
* Make sure cpu_benchmark is an int
* Improve distributed_job_manager test
* Misc fixes
* Misc cleanup
* Add all_versions to blender_downloader.py
* More cleanup
* Fix issue with status not reporting engine info
* Misc fixes
* Misc cleanup
* Add all_versions to blender_downloader.py
* More cleanup
* Fix issue with status not reporting engine info
* Stop previously running zeroconf instances
* Lots of formatting fixes
* Use f-strings for time delta
* More line fixes
* Update requirements.txt
* More misc cleanup
* Simplify README.md
* Remove legacy client
* Misc cleanup
* Add message box after submission success / fail
* Use a new is_localhost method to handle localhost not including '.local'
* Code cleanup
* Fix issue where engine browser would think we're downloading forever
* Add message box after submission success / fail
* Use a new is_localhost method to handle localhost not including '.local'
* Code cleanup
* Fix issue where engine browser would think we're downloading forever
* Add pubsub messages to serverproxy_manager.py
* Add resolution, fps and renderer versions to add_job.py
* Add cameras to add_job.py
* Add message box after submission success / fail
* Use a new is_localhost method to handle localhost not including '.local'
* Code cleanup
* Fix issue where engine browser would think we're downloading forever
* Add message box after submission success / fail
* Code cleanup
* Add cameras to add_job.py
* Add dynamic engine options and output format
* Move UI work out of BG threads and add engine presubmission tasks
* Submit dynamic args when creating a new job
* Hide groups and show messagebox after submission
* Choose file when pressing New Job in main window now
* Zeroconf.found_clients() now returns dicts of clients, not just hostnames
* Adjustments to distributed_job_manager.py
* Undo config change
* Report system metrics (cpu, os, etc) via zeroconf_server.py
* Zeroconf.found_clients() now returns dicts of clients, not just hostnames
* Adjustments to distributed_job_manager.py
* Undo config change
* Zeroconf.found_clients() now returns dicts of clients, not just hostnames
* Adjustments to distributed_job_manager.py
* Undo config change
* Adjustments to distributed_job_manager.py
* Undo config change
* Rename ZeroconfServer.found_clients() to found_hostnames()
* Initial commit for new UI
* Initial commit for new UI
* WIP
* Status bar updates and has an icon for online / offline
* Add log_viewer.py
* Use JSON for delete_engine_download API
* Fix class issue with Downloaders
* Move Config class to new ui
* Add engine_browser.py
* Add a close event handler to the main window
* Fix issue with engine manager not deleting engines properly
* Rearrange all the files
* Add icons and resources
* Cache system info in RenderServerProxy
* Toolbar polish
* Fix resource path in status bar
* Add config_dir to misc_helper.py
* Add try block to zeroconf setup
* Add add_job.py
* Add raw args to add_job.py
* Fix issue with engine not being available to download
* Add version caches to ffmpeg downloader
* Remove some test parameters
* "releases" should be "release" in linux ffmpeg url
* CPU was incorrectly reported as OS
* Fix naming structure for FFMPEG downloads for linux
* More linux ffmpeg work
* Improved error handling
* WIP
* Consolidate platform reporting to not use platform directly
* Fix missing folder name
* Fix project output naming
* Undo config.yaml commit
* Add is_engine_available API call
* Fix issue where subjobs would not find servers
* Add is_engine_available_to_download API call
* Fix issue with worker never throwing error if engine is not found
* Add API call to get most recent engine version
* Fix some minor import issues
* Fix web urls
* Fix default server log level
* Add progress bar for project download worker_factory downloads missing engine versions
* Better error handling when invalid version is given
* Add timeouts to engine downloaders
* Added system_safe_path to convert paths to Windows
* Fix issue where engines would not be reported unless a system engine was installed
* Platform independent searching for binaries in engine directory
* Add missing package to requirements.txt
* Better error handling for ffmpeg.get_all_formats()
* Add system_safe_path to more locations in api_server.py
* Fix naming issue with Blender on macos
* Fix path lookups and add engine_path to workers
* Report installed renderers in status
* Remove files included by accident
* Add blender_downloader.py
* Add engine_manager.py
* Add additional methods to engine_manager.py
* Refactor file layout to make engines on par with workers
* Add system platform info to status response
* Default to using system platform / cpu if none are provided
* Add API to download an engine and some general cleanup
* Add method to delete downloaded engine
* Add API calls to download engines and delete downloads
* Misc fixes