title: Project Config # DEV. A fresh IronPython engine for every press: `lib/vibe` is re-imported # on each click, so an edit to a module this button uses is visible without # a Revit restart. It trades press latency (engine construction instead of # engine reuse) for restart-freedom. Second-hottest button on this ribbon -- # 14 commits to configmodel/configpage/configform/configdump/knowledge in the # seven days to 2026-08-30. # # Read docs/architecture-migration.md section 8 before trusting or removing # this. Two things it says that are not obvious: pyRevit's DEFAULT is already # a clean engine, and this extension gets one today only because # extension.json has no `url:` and so is never registered as a package -- # add a url and every button silently switches to the shared engine. This key # is the pin against that, not a new capability. # # REMOVE IT PER BUTTON as that button stabilises: delete the two lines below. engine: clean: true # No tooltip and no author on purpose. pyRevit renders both on hover; # the owner wants nothing there. Guarded by # WillTools.extension/tests/test_button_tooltips.py -- do not add them back. # # One line: this button is a row in a `.pulldown`, and a pulldown row renders # as text beside a 16px icon. A `\n` in it has nowhere to go. The dropdown # grows to fit the longest row, so the title may say what it means. # # "Project Config" rather than plain "Config": the button one level up is # already called Config, and a Config row inside a Config button reads like # a mistake even though the two name tables never collide.