You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Split configuration persistence into two files that must never be confused: the bundled, build-generated <install>/5.0/config/mixar.json (backend URLs, environment, update channel — read-only in installed builds) and a new per-user overlay at <user config>/mixar/mixar.json. Reads merge the overlay over the bundled defaults; every key a running app persists (ui_mode, share_usage_data, the fallback device_id) now writes to the overlay only, via add_config(), and never to the bundled file.
Fixed a hang on installed Windows builds where clicking "Start with Zen Mode" or "Engine Mode" on the splash screen could freeze the app indefinitely. add_config() previously wrote into the install directory, which on Windows lives under C:\Program Files; CPython's tempfile.mkstemp treats a PermissionError there as a name collision whenever os.access(dir, W_OK) reports the directory writable (on Windows this only checks the read-only attribute, never the ACL), so it retried up to TMP_MAX (2**31) times on the main thread.
Replaced tempfile.mkstemp with a bounded exclusive-create helper (_create_temp_file, mixar/config/config.py) that lets a genuine PermissionError propagate on the first attempt and only retries real name collisions, capped at 8 attempts. A write failure now returns False immediately; the in-memory value still applies for the rest of the session.
Added tests/test_config_persistence.py, covering overlay/bundled read-merge precedence, write isolation between the two files, preservation of existing overlay keys, and fast-fail behavior on write errors.
Build
Version bump to 3.4.1 (VERSION, BKE_blender_version.h).
⚠️ Notes
Behavior change: add_config() no longer writes to the bundled install-directory config file under any circumstance — all runtime-persisted settings now live in a new per-user overlay file. Values previously written into the bundled file by older builds (e.g. dev builds, or macOS installs) are still read correctly, with the overlay taking precedence when both are present.