Skip to content

Mixar 3.4.1

Choose a tag to compare

@mixar-ci-bot mixar-ci-bot released this 06 Sep 09:32
· 664 commits to main since this release

Config

  • 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.