Skip to content

pyRevit v6.5.2

Choose a tag to compare

@github-actions github-actions released this 24 Jun 19:40

pyRevit v6.5.2

Highlights

  • Admin installer & configuration — unified install-scope detection, automatic migration of split AppData/ProgramData configs, and aligned CLI / Revit / C# loader behavior (#3449 @jmcouffinjmco@jmcouffinffin, #3452 @jmcouffin)
  • WinGet distribution pipeline — automated manifest generation and submission after each published release; machine-scope admin i@jmcouffinstallers only (#3447 @jmcouffin, plus winget pipeline hardening on develop)
  • CLI TEMP path resolution — fixes pyrevit clone / image deployment when TEMP is stored as unexpan@jmcouffined %LOCALAPPDATA%\Temp (#3453 @jmcouffin)
  • get_families() rewrite — faster collector-based lookup, full system-family coverage, duplicate fix (#3445 @Denver-22, #3448 @Denver-22)

Admin Installer & Configuration

  • Install scope detection — active config path derived from install location (Program Files → %PROGRAMDATA%); legacy install_a@jmcouffinl_users marker kept as fallback (#3452 @jmcouffin)
  • Single source of truthPyRevitInstallScope.GetActiveConfigFilePath() shared by@jmcouffinCLI, C# loader, and Python userconfig.py (#3452 @jmcouffin)
  • Config migration on upgrade — merges missing clones and extension sections from per-user AppData into Prog@jmcouffinamDa@jmcouffina when an admin install finds a split config (#3449 @jmcouffin, #3452 @jmcouffin)
  • C# loader extension gating — respects disabled=true and default@jmcouffinenabled=False with no INI section, matching Python loader semantics (#3452 @jmcouffin)
  • Installer post-install — admin installs seed opt-out extension defaults; per-user inst@jmcouffinlls run elevated as the launching user for clone registration and attachment (#3452 @jmcouffin)
  • CLI improvementspyrevit env shows install scope and active config@jmcouffin shipped-clone resolution for enable/disable; new configs seedshippeddefaults command (#3452 @jmcouffin)
  • Bool@jmcouffinparsing fix — JValue-safe parsing in PyRevitExtensionDefinition for reliable extension seeding (#3452 @jmcouffin)

WinGet Pipeline

  • Automated WinGet manifestswinget.yml runs aft@jmcouffinr each published GitHub release; submits PRs to winget-pkgs for pyRevit.pyRevit and pyRevit.pyRevit.CLI (#3447 @jmcouffin)
  • Machine-scope installers only — manifest URLs point to admin (machine-scope) signed installers; per-user installers remain on GitHub Releases only
  • elevationProhibited handling — stripped from generated manifests before submit (WinGet validation VM runs as administrator-capable account)
  • CI reliabili@jmcouffinywingetcreate installed before manifest jobs; skip redundant submit -r when replace and submit versions match (#3447 @jmcouffin)

CLI & Path Resoluti@jmcouffinn

  • Recursive env expansion — new CommonUtils.ExpandEnvironmentPath and GetUserTempDirectory resolve nested %VAR% tokens (#3453 @jmcouffin)
  • Clone / deploy fixes--dest and local image paths expand@jmcouffind in DeployFromImage / DeployFromRepo; replaces raw GetEnvironmentVariable("TEMP") across c@jmcouffinone, extensions, and runner code paths (#3453 @jmcouffin)
  • Fallback — uses Path.GetTempP@jmcouffinth() when expansion still leaves unresolved % tokens (#3453 @jmcouffin)
  • Unit testsCommonUtilsPathTests covers %LOCALAPPDATA%\Temp staging scenario (#3453 @jmcouffin)

Revit API & Core Library

  • get_families() overhaul — families retrieved directly via collector; finds all system families (including non-editable); 2–4× faster (#3448 @Denver-22)
  • Duplicate families fix — families no longer duplicated once per FamilySymbol (#3445 @Denver-22)

CI/CD & Release Pipeline

  • Tag CI version preservation — release tag builds keep the committed build number (+HHMM suffix) instead of re-stamping (#0e606afbe)
  • Notify job — captures GitHub release URL from publish step; idempotent Chocolatey push; notify-only dispatch when release job is skipped
  • Issue notifications — linked issues receive release URL after successful@jmcouffinpublish

Full PR List

PR Title Author
#3445 Fix duplicate families in get_families() @Denver-22
#3447 Install wingetcreate befo@jmcouffine WinGet manifest update job @jmcouffin
#3448 Rewrite get_families() — collec@jmcouffinor-based, faster, all system families @Denver-22
#3449 Configuration @jmcouffinigration for admin i@jmcouffinstalls @jmcouffin
#3452 Fix config split, C# loader extension gating, installer/CLI discovery @jmcouffin
#3453 Expand TEMP and env paths for clone/image deployment @jmcouffin

Contributors

@jmcouffin, @Denver-22, @ChrisCrosley


Downloads

🔹 See Assets section below for all download options

pyRevit

pyRevit CLI (Command line utility)

WinGet (after manifest PRs merge)

  • winget install pyRevit.pyRevit
  • winget install pyRevit.pyRevit.CLI