Commit Graph

297 Commits

Author SHA1 Message Date
brett c38213fb58 Update and modernize create-executables action (#138)
* Modernize create-executables.yml

* Update version numbers

* Fix API version in test
2026-06-06 17:10:53 -05:00
brett 3486feaaf4 Add timeouts and fix multi-camera render issue (#136)
* Fix issue where add job window always submits to localhost, regardless of selected hostname

* Add lots of timeouts

* Fix issue where multiple cameras would not render
2026-06-06 17:01:37 -05:00
brett 141843c916 Fix issue where jobs were not always deleted (#137)
* Better job deletion logic

* Cleanup UI after deleting runs
2026-06-06 16:08:02 -05:00
brett 472c7968b3 Fix issue where add job window always submits to localhost, regardless of selected hostname (#135) 2026-06-06 15:05:31 -05:00
brett b8b71d1e16 Add Blender plugin (#134)
* Unbind hostname to allow localhost submissions

* Fix issue where multiple cameras were outputting to the same directory

* Add Blender plugin
2026-06-06 14:32:48 -05:00
brett f0be78adcc REST API endpoint streamlining and cleanup (#133)
* Consolidate engine_info api calls

* Change api methods to use POST when possible

* Delete engine API cleanup

* Remove redundant installed_engines endpoint

* Update proxy to use similar named methods to new API calls

* More API cleanup

* Jobs API cleanup

* More jobs API cleanup

* Fix add jobs error due to null queue

* Remove unnecessary full_status and snapshot API endpoints

* Streamline add job POST endpoint

* Fix test after method name change
2026-06-06 12:04:52 -05:00
brett 24eb7b5616 Add Unit Tests (#132)
* Add tests and new github workflow

* Add new unit tests

* Add Github CI workflow

* Workflow fix

* Add pytest install to workflow file

* More CI / test updates

* More test cleanup

* Whitespace cleanup and link complexity override

* More whitespace cleanup

* Make lint less strict

* More lint tweaks
2026-06-06 00:02:01 -05:00
Brett Williams 7bf5fb554e Merge remote-tracking branch 'origin/master'
# Conflicts:
#	server.py
2026-06-05 22:05:42 -05:00
brett fa4a97f6fa Refactor: ApplicationContext DI wiring (#131)
* refactor: wire all services through ApplicationContext

- Created src/application_context.py as DI container with TYPE_CHECKING imports
- server.py now instantiates all services in dependency order via ApplicationContext
- Fixed infinite recursion bug: 48 instance methods renamed with underscore prefix
  to avoid shadowing by same-named @classmethod forwarders
- ZeroconfServer: instantiate Zeroconf() in __init__, add _sync_class() to
  configure forwarder, direct _configure/_start calls during wiring
- Config, EngineManager, PreviewManager: all forwarders and _sync_class() intact
- RenderQueue: load_state and subscribe moved to __init__, threading.Lock retained
- DistributedJobManager: subscribe_to_listener moved to __init__

* fix: greedy regex in get_render_devices swallows BlenderKit log output

Changed regex from greedy [\s\S]* to non-greedy .*? with re.DOTALL
so it stops at the first ] (the end of the GPU data JSON array)
instead of matching through timestamped log lines like
[19:36:22.109, __init__.py:2881] that contain trailing brackets.

* fix: AttributeError on .enabled in update_job_count prevents options from rendering

* refactor: log silent AttributeError catches, add _sync_class to remaining services, drop dead ctx slot
2026-06-05 22:01:20 -05:00
Brett Williams b7ba1201e4 refactor: log silent AttributeError catches, add _sync_class to remaining services, drop dead ctx slot 2026-06-05 21:27:02 -05:00
Brett Williams c592236c98 fix: AttributeError on .enabled in update_job_count prevents options from rendering 2026-06-05 20:12:14 -05:00
Brett Williams 0c62f454a7 fix: greedy regex in get_render_devices swallows BlenderKit log output
Changed regex from greedy [\s\S]* to non-greedy .*? with re.DOTALL
so it stops at the first ] (the end of the GPU data JSON array)
instead of matching through timestamped log lines like
[19:36:22.109, __init__.py:2881] that contain trailing brackets.
2026-06-05 19:37:12 -05:00
Brett Williams 552c791207 refactor: wire all services through ApplicationContext
- Created src/application_context.py as DI container with TYPE_CHECKING imports
- server.py now instantiates all services in dependency order via ApplicationContext
- Fixed infinite recursion bug: 48 instance methods renamed with underscore prefix
  to avoid shadowing by same-named @classmethod forwarders
- ZeroconfServer: instantiate Zeroconf() in __init__, add _sync_class() to
  configure forwarder, direct _configure/_start calls during wiring
- Config, EngineManager, PreviewManager: all forwarders and _sync_class() intact
- RenderQueue: load_state and subscribe moved to __init__, threading.Lock retained
- DistributedJobManager: subscribe_to_listener moved to __init__
2026-06-05 05:34:32 -05:00
brett e8992fc91a Add missing docstrings and pylint improvements (#130) 2026-01-20 23:13:38 -06:00
brett 74dce5cc3d Windows path fixes (#129)
* Change uses of os.path to use Pathlib

* Add return types and type hints

* Add more docstrings

* Add missing import to api_server
2026-01-18 00:18:43 -06:00
brett ee9f44e4c4 Mix bad imports 2026-01-16 01:07:34 -06:00
Brett Williams 0a69c184eb Fix pyinstaller spec files 2026-01-12 09:08:35 -06:00
brett 8b3fdd14b5 Add Job Window Redesign (#128)
* Initial refactor of add_job_window

* Improved project naming and fixed Blender engine issue

* Improve time representation in main window

* Cleanup Blender job creation

* Send resolution / fps data in job submission

* More window improvements

* EngineManager renaming and refactoring

* FFMPEG path fixes for ffprobe

* More backend refactoring / improvements

* Performance improvements / API refactoring

* Show current job count in add window UI before submission

* Move some UI update code out of background thread

* Move some main window UI update code out of background thread
2026-01-12 09:06:53 -06:00
brett d8af7c878e Job submission code and API cleanup (#127)
* Refactor add jobs and make add_job api only be one job (instead of a list)

* Renamed to JobImportHandler and misc cleanup

* Dont bury exceptions in server proxy post_job

* Update code to create child jobs in a cleaner manner
2025-12-31 23:14:28 -06:00
brett e335328530 Improve server shutdown (#126)
* Cleaned up server shutdown process

* Fix exception on shutdown in Windows
2025-12-30 17:46:53 -06:00
brett f9b19587ba Ignore aerender in pytests until ready (#125)
* Ignore aerender in pytests until ready
* Disable pytest step in GitHub Actions workflow
2025-12-28 15:00:01 -06:00
brett 4704806472 Settings Window (#124)
* Initial commit for settings window

* More WIP for the Settings panel

* Added Local Files section to Settings

* More WIP on Settings

* Add ability to ignore system builds

* Improvements to Launch and Delete buttons

* Fix issue where icons were not loading

* Network password settings WIP

* Update label

* Import and naming fixes

* Speed improvements to launch

* Update requirements.txt

* Update Windows CPU name lookup

* Add missing default values to a few settings

* More settings fixes

* Fix Windows Path issue

* Added hard types for getting settings values

* More UI cleanup

* Correctly refresh Engines list after downloading new engine

* Improve downloader with UI progress

* More download improvements

* Add Settings Button to Toolbar
2025-12-28 12:33:29 -06:00
brett daf445ee9e Rename renderers to engines (#123)
* Bulk rename
* Fix build issues
2025-12-27 18:53:09 -06:00
brett 574c6f0755 Job Submission CLI (#122)
* Initial commit of job submission cli tool, with minor fixes in API code

* Refactored and further decoupled server / client code

* Clean up ServerProxy to not use hardcoded loopback addresses
2025-12-27 18:36:34 -06:00
brett 6bfa5629d5 GPU Reporting in UI (#120)
* Add basic GPU info reporting to UI

* Update GPU display to showcase multiple GPUs, if available

* Add fallback for Windows for fetching GPU info

* Improve Windows GPU lookup. Add GPUtil to requirements.txt

* Clean up GPU and CPU naming in UI

* Update Linux GPU fetching

* Update misc_helper.py

Fix getting GPU names on Linux

* Update .gitignore
2025-12-18 17:47:30 -06:00
Brett Williams 05cd0470dd Fix build issues using pyinstaller 2025-03-13 14:17:50 -05:00
Brett Williams 7827f73530 Show CPU brand in UI instead of arch. Resolves #110. 2025-02-28 19:54:58 -06:00
brett 562cb23da3 Feature/112 api version (#119)
* Add api_version to status api and server_proxy.py

* Add api_version to Zeroconf and filter out incompatible versions when finding available servers

* Filter incompatible versions from the UI
2025-02-28 19:39:32 -06:00
Brett Williams 6b68d42b93 Misc minor fixes 2025-02-28 18:50:44 -06:00
Brett Williams cdf4b2bbe1 Update the README.md with an app screenshot 2025-02-28 18:43:40 -06:00
Brett Williams dc8f4d3e2a Use Fusion Qt style on non-Mac platforms 2025-02-28 18:40:59 -06:00
brett 2548280dcc Add check for available software updates (#118)
* Add feature to check github repo for available updates

* Add Check for Updates to Help menu
2024-08-24 12:12:30 -05:00
Brett Williams 98ab837057 Fix issue where API server could fail to start 2024-08-24 03:00:57 -05:00
Brett Williams 3fda87935e Only prevent launch if we find unrelated processes 2024-08-24 02:22:38 -05:00
Brett Williams e35a5a689c Make sure only one instance is running at a time 2024-08-24 01:35:50 -05:00
brett dea7574888 Rename create_executables.yml to create-executables.yml 2024-08-23 19:52:41 -05:00
brett a19db9fcf7 Fix issue with create_executables.yml 2024-08-23 19:51:56 -05:00
brett 80b0adb2ad Create executables for all platforms, not just Windows 2024-08-23 19:46:35 -05:00
brett 18873cec6f Only generate Windows binaries when releases are created 2024-08-23 19:37:34 -05:00
brett af6d6e1525 Document all the things! (#117)
Add lots of docstrings everywhere
2024-08-23 19:26:05 -05:00
brett 8bbf19cb30 Fix accidental readme rename 2024-08-23 19:17:03 -05:00
brett 6bdb488ce1 Add "Create Executable" GitHub action for Windows (#116) 2024-08-23 18:36:14 -05:00
brett e792698480 Merge pull request #114
* Better exception handling / error reporting for add job screen

* Don't supress exceptions for potentially long running functions in bl…

* Increase Blender pack_project_file timeout to 120s
2024-08-20 15:20:24 -05:00
Brett Williams 751d74ced3 Fix issue where Stop Job button would never show 2024-08-15 23:20:04 -05:00
brett e8a4692e0f Update README.md 2024-08-15 15:10:37 -05:00
brett 49ae5a55d9 Add About window and basic commands to MenuBar (#113)
* Initial commit for about_window.py

* Add some basic actions to the MenuBar

* Fix keyboard shortcuts

* Fix path to icon for Windows
2024-08-15 14:27:29 -05:00
Brett Williams d04d14446b Update main.spec to include version numbers on Windows 2024-08-15 11:41:36 -05:00
brett 81e79a1996 Prevent subprocesses from constantly opening windows on Windows (#109)
* Add subprocess.CREATE_NO_WINDOW to blender_engine.py

* Convert ffmpeg_engine.py to use CREATE_NO_WINDOW

* Cleanup Blender implementation

* Cleanup subprocesses in base_worker.py

* Cleanup subprocesses in base_engine.py

* Fix main.spec for Windows (optimize=2 broke it)
2024-08-13 22:16:03 -05:00
Brett Williams d30978bef0 Update main.spec for Windows support 2024-08-13 18:02:40 -05:00
brett e2333c4451 Fix processes not ending when stopped (#98)
* Fix processes not ending when stopped

* Fix error when removing a job

* Better error handling

* Refactored killprocess code and fixed windows support

* Improved error handling

* Add try to code that deletes project files

* Wait for the thread to finish after killing the process

* Don't try to stop process multiple times

* Misc cleanup
2024-08-13 11:16:31 -05:00