Developer Options

Added in version 2.0.3.

Advanced startup options for troubleshooting and loader validation.

These developer-facing details may change without notice.


boot_config.json

boot_config.json is an external config file read before addon startup. It lives under Blender’s CONFIG directory.

Keys

Key

Type

Default

Meaning

enable_public_api_alias

bool

false

Register the import pme alias in sys.modules

init_log_enabled

bool

false

Enable init logging during startup

persistence_backend

string

"prefs"

Persistence backend (currently only "prefs")

dev.use_loader_manifest

bool

true

Start with loader_manifest.json

dev.auto_generate_candidate

bool

false

Automatically create loader_manifest_candidate.json in the PME addon package after successful startup

Priority

command-line flags  >  boot_config.json  >  defaults

Tip

--pme-log-init overrides init_log_enabled.

Shape

{
  "version": 1,
  "enable_public_api_alias": false,
  "init_log_enabled": false,
  "persistence_backend": "prefs",
  "dev": {
    "use_loader_manifest": true,
    "auto_generate_candidate": false
  }
}

Update behavior

  • addon updates do not overwrite it

  • it is created automatically if missing

  • if it is broken, PME falls back to defaults


loader_manifest.json

loader_manifest.json defines the module load order used during startup.

Role

  • bundled static file included in release builds

  • used to resolve module load order quickly during startup

  • not normally edited directly by users

Shape

{
  "version": 1,
  "module_order": [
    "core.namespace",
    "infra.logging",
    "infra.boot_config",
    "..."
  ]
}

Fallback

If loader_manifest.json is missing or invalid, PME falls back to dependency-based dynamic discovery.

Module order resolution

  1. --pme-use-candidate-loader-manifest

  2. --pme-use-loader-manifest / --pme-no-loader-manifest

  3. boot_config.dev.use_loader_manifest

  4. loader_manifest.json

  5. dynamic discovery

  • normal startup uses loader_manifest.json

  • dev.use_loader_manifest = false switches startup to dynamic discovery

  • the candidate manifest is a developer-facing helper path and is not selected by this toggle

  • if a candidate manifest or loader_manifest.json cannot be used, PME falls back to dynamic discovery


loader_manifest_candidate.json

loader_manifest_candidate.json is a developer-facing candidate manifest used for validation runs.

Location

  • loader_manifest_candidate.json is created in the PME addon package

Role

  • stores the observed loaded module order from a successful startup

  • used for review and comparison before promotion into loader_manifest.json

  • not part of the Use Bundled Loader Manifest toggle contract

Creation

PME only creates loader_manifest_candidate.json when all of the following are true:

  • boot_config.dev.auto_generate_candidate == true

  • startup completed successfully

  • the staging path is writable

Promotion to loader_manifest.json

Startup never writes back to loader_manifest.json. Promotion only happens through an explicit action:

  • python3 tools/promote_loader_manifest.py

  • Preferences > Settings > DeveloperPromote Candidate to Bundled


Settings > Developer

Preferences > Settings > Developer is the editing surface for boot_config.json.

  • changes are written back to boot_config.json

  • the UI reflects the current boot_config.json values

  • boot-time flags such as import pme and init logging apply on the next startup

  • Use Bundled Loader Manifest switches between loader_manifest.json startup and dynamic discovery

  • Auto-Save Candidate on Startup creates loader_manifest_candidate.json after successful startup

  • Promote Candidate to Bundled copies the candidate manifest content into loader_manifest.json

Note

dev settings affect every PME install that shares the same Blender profile.