Releases: pyrevitlabs/pyRevit
Release list
pyRevit v6.5.3
Highlights
Command Line Utility (CLI)
- Resolved #3455: Fix CLI clone failure by replacing bin with build in deployments
Downloads
🔹 See Assets section below for all download options
pyRevit
- 📦 pyRevit 6.5.3.26176 Installer
- 📦 pyRevit 6.5.3.26176 Installer - Admin / All Users / %PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 6.5.3.26176 Installer - Admin / System %PATH%
pyRevit v6.5.2
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 whenTEMPis 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%); legacyinstall_a@jmcouffinl_usersmarker kept as fallback (#3452 @jmcouffin) - Single source of truth —
PyRevitInstallScope.GetActiveConfigFilePath()shared by@jmcouffinCLI, C# loader, and Pythonuserconfig.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=trueanddefault@jmcouffinenabled=Falsewith 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 improvements —
pyrevit envshows install scope and active config@jmcouffin shipped-clone resolution for enable/disable; newconfigs seedshippeddefaultscommand (#3452 @jmcouffin) - Bool@jmcouffinparsing fix — JValue-safe parsing in
PyRevitExtensionDefinitionfor reliable extension seeding (#3452 @jmcouffin)
WinGet Pipeline
- Automated WinGet manifests —
winget.ymlruns aft@jmcouffinr each published GitHub release; submits PRs to winget-pkgs forpyRevit.pyRevitandpyRevit.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
elevationProhibitedhandling — stripped from generated manifests before submit (WinGet validation VM runs as administrator-capable account)- CI reliabili@jmcouffiny —
wingetcreateinstalled before manifest jobs; skip redundantsubmit -rwhen replace and submit versions match (#3447 @jmcouffin)
CLI & Path Resoluti@jmcouffinn
- Recursive env expansion — new
CommonUtils.ExpandEnvironmentPathandGetUserTempDirectoryresolve nested%VAR%tokens (#3453 @jmcouffin) - Clone / deploy fixes —
--destand local image paths expand@jmcouffind inDeployFromImage/DeployFromRepo; replaces rawGetEnvironmentVariable("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 tests —
CommonUtilsPathTestscovers%LOCALAPPDATA%\Tempstaging 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 (
+HHMMsuffix) 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 6.5.2.26175 Installer — Per-user /
%LOCALAPPDATA% - 📦 pyRevit 6.5.2.26175 Admin Installer — All users /
%PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 6.5.2.26175 Installer — Per-user
- 📦 pyRevit CLI 6.5.2.26175 Admin Installer — All users / System
%PATH%
WinGet (after manifest PRs merge)
winget install pyRevit.pyRevitwinget install pyRevit.pyRevit.CLI
pyRevit v6.5
pyRevit v6.5.0
Highlights
- C# loader significantly matured: faster startup, improved caching, and richer instrumentation (#3388 @ChrisCrosley, #3397 @romangolev, #3420 @ChrisCrosley, #3439 @romangolev)
- Major CI/CD refactor: modular pipelines, signed releases, and cleaner artifact flow (#3403 @jmcouffin, #3393–#3401 @jmcouffin, #3425 @jmcouffin)
- New dockable UI: Custom Properties pane (#3378 @Wurschdhaud)
- Korean localization completed across UI and 286 bundle files (#3429 @J-Roc-H, #3430 @J-Roc-H)
- New extensions added: BMT, Seed43, P13, Wood Framing (#3436 @biminent, #3370 @Seed-43, #3347 @permpong13, #3348 @Swichllc)
- Revit 2027 compatibility updates (#3304 @app/copilot-swe-agent)
Performance & C# Loader
- Loader instrumentation for UI build + extension parsing timings (#3388 @ChrisCrosley)
- Attachment lookup caching for faster startup (#3420 @ChrisCrosley)
- Optional inline metadata parsing for reduced startup cost (#3397 @romangolev)
- Skip DLL rebuild when no changes detected via fingerprinting (#3439 @romangolev)
- Shared SmartButton initializer for reduced overhead (#3384 @ChrisCrosley)
- C# loader parity fixes and context directive corrections (#3419 @app/copilot-swe-agent)
- Python loader fallback for Revit 2019/2020 (#3358 @romangolev)
- UI filtering consistency across beta/version states (#3328 @romangolev)
Logging & Diagnostics
- Improved C# loader session logging + output handling (#3407 @romangolev)
- Fixed logger styling + emoji shortcode parsing (#3442 @ChrisCrosley, #3444 @app/copilot-swe-agent)
- Hooks logger moved to AppData path (no Desktop dependency) (#3376 @app/copilot-swe-agent)
- Encoding declaration added to hooks logger (#3392 @jmcouffin)
- Output window stability and stylesheet fallback improvements (#3299 @romangolev)
CI/CD & Release Pipeline
- Modular C# CI pipeline refactor (#3403 @jmcouffin)
- Workflow improvements: permissions, validation, signing, artifacts (#3393–#3401 @jmcouffin)
- Removed
bin/from repo; CI now distributes binaries (#3425 @jmcouffin) - Build fixes after bin removal (#3435 @jmcouffin)
- Signing process enhanced with file-type summary (#3426 @jmcouffin)
- NuGet version pruning in CI (#3427 @jmcouffin)
- Trusted signing restricted to release flow (#3374 @app/copilot-swe-agent)
- Legacy Go telemetry server removed (#3413 @dosymep)
UI & Tools
- Custom Properties dockable pane added (#3378 @Wurschdhaud)
- Keynote Manager improvements (wrap, expand/collapse, refresh) (#3333 @tay.0, #3340 @tay.0, #3391 @app/copilot-swe-agent, #3428 @jmcouffin)
- Batch Rename Sheets improvements (#3389 @app/copilot-swe-agent)
- PDF sheet renamer rewritten with locale support (#3422 @Wurschdhaud)
- Match Properties recall improvements (#3339 @Wurschdhaud)
- Filter pulldown region fallback (#3369 @Wurschdhaud)
- Keep Editable filter restored (#3362 @Wurschdhaud)
- Section Box Navigator crash fix (#3359 @Wurschdhaud)
- Ribbon icon sizing + inheritance config (#3350 @romangolev)
- Extension Manager improvements (#3417 @Wurschdhaud)
- Optional reload parameter support (#3373 @Wurschdhaud)
Extensions
- BMT extension added (#3436 @biminent)
- Seed43 extension added (#3370 @Seed-43)
- Wood Framing extension proposal (#3348 @Swichllc)
- P13 extension registry addition (#3347 @permpong13)
Revit API & Core Library
- Parameter + category query expansion (#3298 @Wurschdhaud, #3323 @Wurschdhaud)
- Linked picker filtering improvements (#3314 @Wurschdhaud)
- Filter performance improvements (#3318 @Wurschdhaud)
- ParameterFilterElement safeguards (#3325 @Wurschdhaud)
- Selection/pick point improvements (#3330 @Denver-22)
- Equality support for property history deduplication (#3332 @Wurschdhaud)
- Cloud/BIM360 support in central path (#3367 @Wurschdhaud)
- BIM360 custom cache path support (#3423 @Wurschdhaud)
- External event and execution context fixes (#3360 @Wurschdhaud, #3402 @Wurschdhaud)
- Save serialization fix for categories (#3404 @Wurschdhaud)
- XAML localization helper added (#3371 @Wurschdhaud)
Routes Server & Engines
- Python 3 / IronPython 3.4 compatibility fixes (#3287 @BIM4GIB)
- CPython initialization fixes (#3286 @tay.0, #3346 @tay.0)
- pythonnet 3.x compatibility test updates (#3288 @tay.0)
- Routes server query parameter preservation (#3437 @gokul-pascalls)
- Dynamo / Grasshopper bundle updates (#3289 @tay.0)
Localization
- Korean UI localization (#3429 @J-Roc-H)
- 286 bundle YAML translations (#3430 @J-Roc-H)
- Locale-aware PDF renaming (#3422 @Wurschdhaud)
CLI & Configuration
- Improved CLI Revit product resolution (#3398 @jmcouffin)
- INI quote handling centralized (#3406 @Tamás Déri)
- Telemetry escaping fix (#3337 @tay.0)
Bug Fixes & Polish
- Button Creator cancellation handling (#3291 @jmcouffin)
- Removal of repo-shipped Revit API DLLs (~506MB) (#3292 @jmcouffin)
- Output window title fix (#3294 @romangolev)
- Chart.js initialization race fix (#3297 @Wurschdhaud)
- Clipboard fixes (#3308 @Wurschdhaud)
- Parameter definition cleanup (#3309 @Wurschdhaud)
- Match History sync fix (#3315 @Wurschdhaud)
- Code deduplication refactors (#3321 @Wurschdhaud, #3322 @Wurschdhaud)
- Preflight/audit robustness improvements (#3368 @Wurschdhaud)
- Deprecated scripts removed (#3372 @Wurschdhaud)
- pyRevit doctor icon restored (#3431 @romangolev)
- Wrong branch commit fix (#3344 @jmcouffin)
⚠️ Deprecation Notice
Inline script metadata parsing is deprecated (#3397 @romangolev).
It is now opt-in only due to performance impact in the new C# loader. Extension authors should migrate metadata to bundle configuration files as future versions will progressively remove inline parsing support.
Downloads
🔹 See Assets section below for all download options
pyRevit
- 📦 pyRevit 6.5.0.26173 Installer
- 📦 pyRevit 6.5.0.26173 Installer - Admin / All Users / %PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 6.5.0.26173 Installer - Admin / System %PATH%
CI Binaries
Pre-built bin/ from CI (anonymous download for pyrevit clone).
pyRevit v6.4.0
Thanks to @Wurschdhaud, @tay0thman, @dnenov, @thumDer, @Denver-22, @OnePowerUser88, @vinnividivicci, @sweco-beb283, @jchristel, @924312, @jmcouffin, @thanhtranarch for the support, issue management, improvements and fixes.
Installers
pyRevit
- pyRevit 6.4.0 EXE (preferred)
- pyRevit 6.4.0 Admin EXE
CLI
- pyRevit CLI EXE(preferred)
Following installers are available at bottom of the page:
- pyRevit CLI Admin EXE
- pyRevit CLI Admin MSI
Highlights
- Match History Clipboard: Dockable pane storing up to 50 parameter name/value pairs with regex search, three load sources (element picker, view filters, eyedropper), three paste modes, category filtering — plus color value pick improvements and richer filter visualization. (#3185, #3197, #3206, #3280)
- Pick Elements by Parameter Value: New selection tool — pick a reference element, choose parameters, and rectangle-select matching elements; shift-click requires all values to match. (#3200)
- Keynote Manager overhaul: Modeless window, unified tree with drag-and-drop, text case conversion menu, debounced search, and ADC compatibility fix. (#3136)
- View Range Editor: Warns when view range is template-driven; edits apply directly to the view template. (#3155, #3192)
- Rocket Mode: New
rocket_modeconfig option skips icon pre-loading for faster startup. (#3121) - Revit 2027 support: Addin manifest path fix, updated hosts list, and ADC v2027 compatibility with three-tier filesystem fallback for .NET 8. (#3277, #3266)
- C# Loader performance: Loader now matches legacy IronPython load times — config and metadata caching, reduced per-file I/O, and icon pre-loading removed from the hot path. (#3268, #3270)
- C# Loader reliability: Multi-pass loading restored, digit-prefixed class name fix, duplicate class deduplication, version filtering, layout allowlist, F1 help parity, and WndProc crash fix. (#3188, #3179, #3111, #3134, #3281)
- WPFPanel parity:
_WPFMixinshared byWPFWindowandWPFPanel; panels now supportload_xaml()with locale and resource dictionaries. (#3177, #3146) - IFC export helper:
ifc.pyextended with config loader, export-options builder, and single-callIFCExporter. (#3147) - Output window: Ctrl+C and Ctrl+A keyboard shortcuts in ScriptConsole; fixed pyRevit/IronPython version showing "Unknown" on startup. (#3258, #3260, #3262)
- UpdaterListener: Now triggers on element addition and deletion, not just modification. (#3139)
- Logging level fix: pyRevit logging enum correctly translated to Python scale — no more unwanted console output on startup. (#3207)
Changes by Folder / Tool
extensions/pyRevitTools.extension
Match, Pick, Selection, ViewRange, Keynote, SectionBox, ColorSplasher, ReNumber, Measure
- Match History Clipboard: Persistent dockable pane with clipboard history, regex search, element/filter/eyedropper load sources, three paste modes, category awareness; companion Match Value Picker tool; shared
lib/match/library eliminating duplication. Color value pick now stores ElementId in a unified format; color helpers added tofilter_utilsfor better filter detection and warning bar color control. (#3185, #3197, #3206, #3280) - Pick Elements by Parameter Value: Rectangle-based selection filter matching parameter values from a reference element; shift-click mode for multi-parameter matching;
ParamDefextended with value badge and tooltip fixes. (#3200) - Keynote Manager: Modeless window architecture, unified hierarchical tree with drag-and-drop, text formatting menu (UPPER/lower/Title/Sentence), debounced search, UUID-based temp keys, null-safety, ADC ReadOnlyList monkey-patch. (#3136)
- View Range Editor: Template-driven warning dialog before editing; edits applied to the view template directly; correct level ID handling for templates vs views. (#3155, #3192)
- Section Box Navigator: Store set values across doc switching; levels-at-0 fix; additional bugfixes for document switching (#3145, #3130, #3261)
- Temp View mode: Warning displayed when the view phase is not changeable. (#3274)
- ReNumber: Shift+Click duplicate handling; restore non-integer support; switch to
EXEC_PARAMS.config_mode. (#3127, #3120, #3125) - 3D Measure: Improvement pass. (#3124)
- Convert CAD Import: Robustness improvements for FreeForm/DirectShape conversion. (#3126)
- ColorSplasher / Isolate: Visually distinct color generator added to lib. (#3165)
- ViewRange tool: Prevent duplicate windows, close crash fix, invalid value validation, DirectContext3D race condition fix, engine config correction. (#3240)
- Copy Sheets: Preserve view title position and extent when copying sheets. (#3186)
- ws4links: Script update. (#3143)
extensions/pyRevitCore.extension
Extensions, Settings
- Settings window: Section headers, separators, and slider control added. (#3132)
- Load Beta Tools: Fix setting + HelpUrl support improvement. (#3116)
extensions/pyRevitDevTools.extension
- Developer Sample Panel: Full-featured WPF pane example with inline docs, XAML, and locale resource dictionaries. (#3177)
- IFC export test script: Folder/config picker and output panel logging. (#3147)
extensions/extensions.json
- T3LabLite extension added. (#3208)
pyrevitlib/pyrevit/forms
_WPFMixinrefactor: Shared WPF behavior (resources, locale, UI helpers, dispatcher) extracted;WPFPanelbrought to feature parity withWPFWindowviaload_xaml(); resource setup ordering fixed. (#3177, #3146)StaticResourcecrash fix in forms loader. (#3123)- CPython compat fix. (#3115)
select_parameters: Enriched with current value display and richer metadata;ParamDefextended;ParameterItemStyle.xamlupdated with value badge. (#3200)- Locale-specific copied view detection fix. (#3175)
pyrevitlib/pyrevit/revit
query.py:get_name()updated with worksets support. (#3187)events.py:UpdaterListenernow registers element addition and deletion triggers. (#3139)
pyrevitlib/pyrevit — Lib Utilities
ifc.py: Extended withload_config(),build_export_options()(decimal-separator workaround), andIFCExporterclass. (#3147)- Distinct color generator: Greedy max-distance RGB algorithm, IronPython 2.7 compatible, deterministic seed support. (#3165)
elements_bounding_box: Optional elements argument forget_value_range. (#3128)Mesh: Optional color override forMesh.from_solid. (#3169)
pyrevitlib/pyrevit/routes
- Safe JSON serializer: Unicode-safe fallback for IronPython 2.7; handles NaN/infinity as null; float edge cases. (#3161)
- Content-Length fix: Consistent byte encoding and single accurate header, fixing issues with Routes in localized Revit. (#3161)
dev/pyRevitLoader — C# Loader / Session Manager
- Performance: Cached
PyRevitConfig.Load()as a static singleton, cached RoslynMetadataReferencelist, replaced per-extensionAppDomainscans with pre-builtHashSetlookup — loader now matches legacy load times. (#3268, #3270) - WndProc fix: Pre-cached .NET types restored to prevent IronPython crash in dockable pane message handling. (#3281)
- Multi-pass loading restored: All extension assemblies load before startup scripts execute, fixing cross-extension imports. (#3188)
- Digit-prefixed class names: Underscore prefix for names starting with digits (invalid C# identifiers). (#3188)
- Duplicate class deduplication: HashSet guard prevents Roslyn CS0101 errors. (#3188)
- Layout allowlist:
layoutfield inbundle.yamlnow acts as a strict allowlist, matching Python loader. (#3111) - F1 help parity: Template substitution, auto-discovery, relative path resolution for help URLs. (#3111)
- Revit version compatibility:
min_revit_version/max_revit_versionfiltering at extension and component level. (#3134) - Dynamo engine defaults:
automateandcleandefault tofalse. (#3179) - SVG icon filtering:
BitmapImageskips SVG, prefers raster formats. (#3179) - Environment variable expansion:
%USERPROFILE%and similar variables resolved in extension paths. (#3179) - Logging level translation: pyRevit enum mapped to Python logging scale (Quiet=WARNING, Verbose=INFO, Debug=DEBUG). (#3207)
- Rocket Mode:
rocket_modeconfig skips icon pre-loading for faster startup. (#3121) - AppDomain session environment dictionary populated. (#3122)
- Command Control Id exposed in session manager. (#3133)
- Toolbar disappearing fix after reload when tabs are renamed. (#3183)
SPECIAL_CHARSsanitization restored inSanitizeClassName. (#3184)- Docstring and tab visibility logic enhanced. (#3190)
- MinifyUI state desync fix on cross-model view switch. (#3196)
- Extension install path fix (not changeable). (#3198)
_script/.script.pyfile extensions allowed. (#3131)- Ribbon fixes: Tab downgrade, combobox crash, keys/values return, tooltip error message. (#3202)
- Version display fixed: pyRevit and IronPython version no longer shows "Unknown" in output window. (#3260, #3262)
dev/pyRevitLabs (TargetApps.Revit, Runtime, CommonUtils)
- Revit 2027 addin path: Fixed all-users addin manifest path for Revit 2027+. (#3277)
- ADC v2027 compatibility: Three-tier filesystem fallback for
.NET 8when ADC removed the compatible API DLL — Public API → Legacy API → process detection + workspace directory walking. (#3266) - Storage file handling: Refactored to use `Ro...
pyRevit v6.3.0.26091
pyRevit 6.3.0 Release Notes
Thanks to @Wurschdhaud, @tay0thman, @dnenov, @thumDer, @Denver-22, @OnePowerUser88, @vinnividivicci, @sweco-beb283, @jchristel, @924312 for the support, issue management, improvements and fixes.
Installers
pyRevit
- pyRevit 6.3.0 EXE (preferred)
- pyRevit 6.3.0 Admin EXE
CLI
Highlights
- Match History Clipboard: New dockable pane storing up to 50 parameter name/value pairs with search (regex), three load sources (element picker, view filters, eyedropper), three paste modes, and category filtering. (#3185, #3197, #3206)
- Pick Elements by Parameter Value: New selection tool -- pick a reference element, choose parameters, and rectangle-select matching elements; shift-click requires all values to match. (#3200)
- Keynote Manager overhaul: Modeless window, unified tree with drag-and-drop, text case conversion menu, debounced search, and ADC compatibility fix. (#3136)
- View Range Editor: Warns when view range is template-driven; edits now apply directly to the view template. (#3155, #3192)
- Rocket Mode: New
rocket_modeconfig option skips icon pre-loading for faster startup. (#3121) - C# Loader fixes: Multi-pass loading restored, digit-prefixed class names fixed, duplicate class deduplication, version filtering propagated, layout allowlist, F1 help parity with Python loader. (#3188, #3179, #3111, #3134)
- WPFPanel parity: Extracted
_WPFMixinshared byWPFWindowandWPFPanel; panels now supportload_xaml()with locale and resource dictionaries. (#3177, #3146) - IFC export helper:
ifc.pyextended with config loader, export-options builder (decimal-separator workaround), and single-callIFCExporter. (#3147) - UpdaterListener: Now triggers on element addition and deletion, not just modification. (#3139)
- Logging level fix: pyRevit logging enum correctly translated to Python scale -- no more unwanted console on startup. (#3207)
Changes by Folder / Tool
extensions/pyRevitTools.extension
Match, Pick, Selection, ViewRange, Keynote, SectionBox, ColorSplasher, ReNumber, Measure
- Match History Clipboard: Persistent dockable pane with clipboard history, regex search, element/filter/eyedropper load sources, three paste modes, category awareness; companion Match Value Picker tool; shared
lib/match/library eliminating duplication. (#3185, #3197, #3206) - Pick Elements by Parameter Value: Rectangle-based selection filter matching parameter values from a reference element; shift-click mode for multi-parameter matching;
ParamDefextended with value badge and tooltip fixes. (#3200) - Keynote Manager: Modeless window architecture, unified hierarchical tree with drag-and-drop, text formatting menu (UPPER/lower/Title/Sentence), debounced search, UUID-based temp keys, null-safety, ADC
ReadOnlyListmonkey-patch. (#3136) - View Range Editor: Template-driven warning dialog before editing; edits applied to the view template directly; correct level ID handling for templates vs views. (#3155, #3192)
- SectionBox Navigator: Store set values across doc switching; levels-at-0 fix. (#3145, #3130)
- ReNumber: Shift+Click duplicate handling; restore non-integer support; switch to
EXEC_PARAMS.config_mode. (#3127, #3120, #3125) - 3D Measure: Improvement pass. (#3124)
- Convert CAD Import: Robustness improvements for FreeForm/DirectShape conversion. (#3126)
- ColorSplasher / Isolate: Visually distinct color generator added to lib. (#3165)
- ViewRange tool: Prevent duplicate windows, close crash fix, invalid value validation, DirectContext3D race condition fix, engine config correction. (#3240)
- XLS Export / Create Workset For Linked Element: Translation updates. (#3119)
- Copy Sheets: Preserve view title position and extent when copying sheets. (#3186)
- ws4links: Script update. (#3143)
extensions/pyRevitCore.extension
Extensions, Settings
- Settings window: Section headers, separators, and slider control added. (#3132)
- Load Beta Tools: Fix setting + HelpUrl support improvement. (#3116)
extensions/pyRevitDevTools.extension
- Developer Sample Panel: Full-featured WPF pane example with inline docs, XAML, and locale resource dictionaries. (#3177)
- IFC export test script: Folder/config picker and output panel logging. (#3147)
pyrevitlib/pyrevit/forms
- WPFMixin refactor: Extracted
_WPFMixinwith shared WPF behavior (resources, locale, UI helpers, dispatcher);WPFPanelbrought to feature parity withWPFWindowviaload_xaml(); resource setup ordering fixed. (#3177, #3146) - StaticResource crash fix in forms loader. (#3123)
- CPython compat fix. (#3115)
select_parameters: Enriched with current value display and richer metadata;ParamDefextended;ParameterItemStyle.xamlupdated with value badge. (#3200)- Locale-specific copied view detection fix. (#3175)
pyrevitlib/pyrevit/revit
query.py:get_name()updated with worksets support. (#3187)events.py: UpdaterListener now registers element addition and deletion triggers. (#3139)
pyrevitlib/pyrevit -- Lib Utilities
ifc.py: Extended withload_config(),build_export_options()(decimal-separator workaround), andIFCExporterclass. (#3147)- Distinct color generator: Greedy max-distance RGB algorithm, 2.7/IronPython compatible, deterministic seed support. (#3165)
elements_bounding_box: Optional elements argument forget_value_range. (#3128)- Mesh: Optional color override for
Mesh.from_solid. (#3169)
dev/pyRevitLoader -- C# Loader / Session Manager
- Multi-pass loading restored: All extension assemblies load before startup scripts execute, fixing cross-extension imports. (#3188)
- Digit-prefixed class names: Underscore prefix for names starting with digits (invalid C# identifiers). (#3188)
- Duplicate class deduplication:
HashSetguard prevents Roslyn CS0101 errors. (#3188) - Layout allowlist:
layoutfield inbundle.yamlnow acts as a strict allowlist, matching Python loader. (#3111) - F1 help parity: Template substitution, auto-discovery, relative path resolution for help URLs. (#3111)
- Revit version compatibility:
min_revit_version/max_revit_versionfiltering at extension and component level. (#3134) - Dynamo engine defaults:
automateandcleandefault tofalse. (#3179) - SVG icon filtering: BitmapImage skips SVG, prefers raster formats. (#3179)
- Environment variable expansion:
%USERPROFILE%and similar variables resolved in extension paths. (#3179) - Logging level translation: pyRevit enum mapped to Python logging scale (Quiet=WARNING, Verbose=INFO, Debug=DEBUG). (#3207)
- Rocket Mode:
rocket_modeconfig skips icon pre-loading for faster startup. (#3121) - AppDomain session environment dictionary populated. (#3122)
- Command Control Id exposed in session manager. (#3133)
- Toolbar disappearing fix after reload when tabs are renamed. (#3183)
- SPECIAL_CHARS sanitization restored in
SanitizeClassName. (#3184) - Docstring and tab visibility logic enhanced. (#3190)
- MinifyUI state desync fix on cross-model view switch. (#3196)
- Extension install path fix (not changeable). (#3198)
_script/.script.pyfile extensions allowed. (#3131)- Ribbon fixes: Tab downgrade, combobox crash, keys/values return, tooltip error message. (#3202)
dev/pyRevitLabs (TargetApps.Revit, Runtime, CommonUtils)
- Storage file handling: Refactored to use
RootStorageclass with improved stream reading and error handling (OpenMCDF v3). (#3244) - Dependency updates: YamlDotNet v16, OpenMCDF v3, ControlZEx v7, NUnit v4, libgit2sharp 0.31.0, and other test/build dependencies. (renovate batch)
dev/pyRevitTelemetryServer
- Go dependency updates: go-sql-driver/mysql, go-sqlite3, lib/pq, gorilla/mux, gofrs/uuid, posener/complete v2, edwards25519. (renovate/dependabot batch)
pyrevitlib/pyrevit/routes
- Safe JSON serializer: Unicode-safe fallback for IronPython 2.7; handles NaN/infinity as null; float edge cases. (#3161)
- Content-Length fix: Consistent byte encoding and single accurate header, fixing issues with Routes in localized Revit. (#3161)
Docs / CI / Build
- pyrevit-hosts.json: Revit 2023.1.9 and 25.4.41.14 added. (#3180, #3162)
- Python version: Updated to 3.14 in Pipfile. (#3176)
- GitHub Actions: Workflow improvements, trusted-signing-action updates, release process enhancements. (#3245, #3249, #3251)
- Version bumped to 6.3.0. (#3250)
Installer / CLI
- Refactored storage file handling in CommonUtils for structured storage reliability. (#3244)
Full PR List (non-bot)
| PR | Title | Author |
|---|---|---|
| #3111 | Layout allowlist + F1 help parity with Python loader | @OnePowerUser88 |
| #3115 | Fix CPython compat | @Wurschdhaud |
| #3116 | Fix load beta tools setting + HelpUrl support | @OnePowerUser88 |
| #3119 | Update tr... |
pyRevit v6.1.0
Thanks a lot to @Wurschdhaud @romangolev @tay0thman @sanzoghenzo @OriAshkenazi for the support, issue management, improvements and fixes.
Installers
pyRevit
CLI
Highlights
- Extensions window: Custom extension install from UI (token auth, optional path), Deselect button, dynamic action buttons.
- pyrevit.forms: Backend split (IronPython/CPython), CPython stubs, WPF/resource and date-handling fixes.
- Loader: Inline engine override, before/after directives, multiline titles, parsing errors logged, unicode-safe paths.
- Section Box / Navigator: Temporary section box, temp switch, tooltips; new external event helper and Modeless example.
Changes by folder / tool
extensions/pyRevitCore.extension — Extensions
- Custom extension install from UI (token, repo URL, path); remove username/password; support any host (e.g. GitLab).
- Deselect button and action buttons that update with selection; full localization for custom-install section.
- Install path selection; remove private-repo UI; wider window; config save and lazy updates; small script/docstring cleanups.
extensions/pyRevitTools.extension — Section Box, ColorSplasher, ReNumber, Isolate, Pick, ViewRange, Measure
- Section Box Navigator: temp switch, tooltips, external event helper; SectionBox: temporary option, config fix,
elements_bounding_boxmoved to lib. - ColorSplasher: list-box error handling and cleanup; ReNumber, Isolate, Pick: add title for WPF; ViewRange, Measure: external helper and small fixes.
- XLS Export / Create Workset For Linked Element: script renames to avoid import namespace collision.
extensions/pyRevitDevTools.extension
- Bundle Tests: remove unused Dynamo scripts; Engine Tests: CPython/forms fixes; Developer Examples: generic external event handler and Modeless example; Test ComboBox: dynamic/rich ComboBox fix.
extensions/extensions.json
- Extension rename and repository URL updates.
pyrevitlib/pyrevit/forms
- Backend split (IronPython/CPython), CPython stubs, WPF resource merge fix;
ask_for_dateand non-US date fixes; ComboBox aliases and metadata fallback.
pyrevitlib/pyrevit/extensions (extpackages, extensionmgr)
- Config/path handling, install-path lookup, remove-flow and error-logging fixes; repo name from Git URL.
pyrevitlib/pyrevit/revit
- Updated
pick_point(); new external event helper inevents.py.
dev/pyRevitLoader
- Inline engine override; YamlDotNet parser aligned with legacy; parsing error logging; multiline title and unicode-safe user paths; before/after directives; panel background fix; ComboBox and
name_config.pysupport; locale/config and invoke/URL button fixes.
dev/pyRevitLabs (TargetApps.Revit, Runtime)
- Cache Revit product scan; registry/install-path handling; invoke and URL buttons fixed in Runtime.
dev/pyRevitTelemetryServer
- Go MongoDB driver bumped to v2.
docs / CLAUDE.md
- Forms backend and CPython contract documented; CLAUDE.md added (branch layout, docs URL, Revit/.NET versions).
pyRevit v6.0.0 🚀
This release is huge. Like… really huge.
Architectural improvements, enterprise installer behavior, future Revit support, global UI translations, combobox implementation, and foundational changes. If AI had something to do with it… we won’t deny it 🤖✨
Highlights 🌟
🚀 Brand New C# Loader (#2647)
Thank the man: @romangolev 👈
The pyRevit Loader has been fully rewritten in C# - the biggest architectural change in years:
- Faster startup and improved stability
- Better separation of bootstrap, runtime, and engines
- Cleaner support for future Revit versions
Huge credit to Roman for championing this rewrite. 🌟
🧭 Revit 2027 Support (#3034 + #3040)
pyRevit now supports Revit 2027 secure add-in install location before the product is even released:
- Secure manifest locations are recognized.
- .NET 10 migration support for Revit 2027 (#3040)
- Future-proof installer + loader logic for upcoming Revit versions
Installer Improvements 🏢
Enterprise environments rejoice - the installers behave in a much more predictable, IT-friendly way.
- Fix product database to use stable GUIDs (#3059)
- Fix Inno Setup installer GUIDs (#3058)
- SCCM / SYSTEM: run all admin installer steps as installer account (#3051)
- Add install scope marker for all-users installation (#3050)
- Refactor
GetRevitAddonsFilePathand add unit tests (#3049) - Fix PATH for correct user when installing per-user as admin (#3048)
- Revit 2027 secure location support (#3034)
These enhancements bring the installers more in line with enterprise expectations - reliable, repeatable, and manageable.
I tested it the best, I could, but if a specific fix is needed down the line, I will prioritize and release right away (You guys better appreciate and pitch in ;p)
CLI Enhancements
- Add install scope marker for all-users installation (#3050)
- Update
pyrevit-hosts.jsoncache logic (#3047) - Support for Revit 2027 secure manifest location (#3034)
- Include CPython engine version in environment output (#3028)
Tools & UX Improvements 🛠
- Split Button Functionality for Level Navigation (#3043)
- Print Sheets Improvements (#3027)
- Updated
pick_point()in selection (#3021 & #2928) - New C# Loader bug fixes propagated (#3008)
- Enhanced ColorSplasher & better localization (#3005 & #2932)
- Analysis bundle file issue resolved (#3009)
- Misc cleanup and small tooling fixes (#2936, #2915)
DotNet API
- .NET 10 migration support for Revit 2027 (#3040)
Wiki & Documentation
- Improved full support showcase for help-combobox (#3037)
Bundles
- Improved combobox showcase (#3037) @dnenov ⭐
- C# Loader refactor reflected in bundles (#2647)
- Feature-test combobox button bundle (#2963)
Localization & UI 🌍
Massive push for translations across tools and UI:
- Brazilian Portuguese UI & tools (#3038) @iorhanV
- Updated Create Workset For Linked Elements (#3031)
- Translation of remaining tools (#3020)
- Enhanced ColorSplasher localization (#3005)
- Added text toggle translations (#3012)
- English, French, Russian, Chinese, Spanish, German translations added (#3002, #2994, #2958)
- New helper script for localization workflows (#2948)
- Language helper improvements (#2959)
pyRevit is now fully localized in:
🇬🇧 English · 🇫🇷 French · 🇩🇪 German · 🇪🇸 Spanish · 🇨🇳 Chinese · 🇷🇺 Russian · 🇵🇹 Portuguese
Runtime & Python
- PyRevitRunner honors CPython hashbang (#3029)
- CPython engine version included in environment output (#3028)
Contributors 🙏
Huge thanks to the following people who made this release possible:
🌟 @romangolev - C# Loader & architectural work
🙏 @Wurschdhaud
🙏 @tay0thman
🙏 @MohamedAsli
🙏 @dnenov
🙏 @Isaiah-Narvaez-42
🙏 @WemyssJ
🙏 @ramyamaher
🙏 @Swichllc
🙏 @thumDer
🙏 @nasmovk
🙏 @Denver-22
🙏 @czwangxtt
🙏 @frank-e-loftus
🙏 @IGF-Zhang
And always appreciated in the background:
@sanzoghenzo · @dosymep
If your name isn’t here and should, let me know - *too many contributors to keep track of. You’re appreciated.
Closing Notes
pyRevit 6.0.0 isn’t just a version bump -it’s a new chapter:
- Bigger foundations
- Better enterprise support
- Global UI translation
- Future-proof Revit versioning
🎉 Enjoy and keep building amazing workflows!
Downloads
See Assets section below for all download options
pyRevit
- 📦 pyRevit 6.0.0.26032 EXE Installer – Admin / All Users / %PROGRAMDATA% _preferred in a managed environment (You have an IT guy on your back and need to ask permission 🤣 )
- 📦 pyRevit 6.0.0.26032 EXE Installer – Regular _preferred in a non-managed environment
pyRevit CLI (Command-Line Utility)
- 📦 pyRevit CLI 6.0.0.26032 Installer EXE – Admin / System %PATH% _ again preferred in a managed environment (You have an IT guy on your back and need to ask permission 🤣 ) But when you are using the CLI, you should already know that.
- 📦 pyRevit CLI 6.0.0.26032 Installer MSI – Admin / System %PATH% _ Same Same but Different_
- 📦 **pyRevit CLI 6.0.0.26032 Installer EXE - Regular preferred in a non-managed environment
pyRevit v5.3.1
This is a huge one. A great release with very sweet improvements! (Especially with the bug I missed about panelbutton @Wurschdhaud ;) , that explain the 5.3.1)
Maybe AI has something to do with it! Lots of new tools, lots of improvements, lots of fixes, lots of help.
I may forget quite a few people, some easily identified, others, more discrete: 🙏 🚀 🌟
@Wurschdhaud (Great newcomer), @tay0thman (Great help), @MohamedAsli (un grand merci), @Isaiah-Narvaez-42, @WemyssJ, @ramyamaher , @Swichllc, @thumDer, @nasmovk, @Denver-22, @czwangxtt, @frank-e-loftus, @IGF-Zhang
The usual suspects in the background: @sanzoghenzo and @dosymep
Downloads
🔹 See Assets section below for all download options
pyRevit
- 📦 pyRevit 5.3.1.25308 Installer
- 📦 pyRevit 5.3.1.25308 Installer - Admin / All Users / %PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 5.3.1.25308 MSI Installer - Admin / System %PATH%
Highlights
- New Tool #2880: Enhancements for Measure 3D ❤️
- New Tool #2873: New tool simple xls ex+import
- New tool #2881: Sectionbox navigator 🚀
sbnavigator.mp4
- New feature #2793: Allow for an option to close other outputs for all scripts in pyrevit settings
- Improved tool #2738: Toggle Grid Bubbles By Direction 🪨
- Improved tool #2864: feat: Print Sheets: DWG exporter, progress bar, crash prevention + more 🦾
- New Tool #2883: Add Relink Textures tool to pyRevitTools
- Improved #2827: Rewrite of the print_table function: module "output" init.py 🌟
- New Tool #2792: Copy parameter values of selected parameters to another one 🚀
- Improved #1809: Content bundle _content requirement removal ⭐
Changes
Tools
- Implemented #2847: linkify too long error message isn't descriptive
- Improved #2825: Enhancement for "Count Faces": Coarse+Fine
- Resolved #2812: Update pyrevitlib\rpws\server.py
- Resolved #2804: enhancenment for select all objects passing filter
- Resolved #2803: Prune old command 'Toggle Grid Bubbles in View'
- Implemented #2243: Isolate or Select By by Visibility Graphics Filter
- Improved #2797: Refactor Section Box Tool to Support Configurable Toggle for Visibility or Active State
- Improved #2782: added support for linked files - same as orient section box
- Improved #2773: Enhance get_view_filters function to support ordered retrieval of filters
- Improved #2754: Copy Sheets to Open Documents: add "Preserve detail numbers" option (default ON), safer param handling, and richer logs
- Improved #2745: Enhancement 1739 - Improve Copy Legend Functionality
- Resolved #2723: Enhance font replacement functionality in Revit families
- Implemented #2695: add a
iter_project_parametersto make the related functions more efficient - Implemented #2274: Water and Airflow parameters - Sum total tool unit fix
- Implemented #2386: "Orient Section Box to Face" works with Linked files
- Implemented #2317: Button to PIN all Links & Grids & Others
- Implemented #2243: "Isolate" or "Select By" by Visibility Graphics Filter
Runtime
- Resolved #2879: Update binary files (to preserve clone functionality
Engines
- Resolved #2877: Add clean option to bundle.yaml configuration
Extensions
- Resolved #2824: Adding Revitesse to extensions
Installer
- Resolved #2762: Add .NET 8 Runtime Check to Installer Scripts
- Resolved #2757: Fix: Create config directory before writing
Command Line Utility (CLI)
- Resolved #2757: Fix: Create config directory before writing
Python API
- Implemented #2695: add a
iter_project_parametersto make the related functions more efficient
pyRevit v5.3.0
This is a huge one. A great release with very sweet improvements!
Maybe AI has something to do with it! Lots of new tools, lots of improvements, lots of fixes, lots of help.
I may forget quite a few people, some easily identified, others, more discrete: 🙏 🚀 🌟
@Wurschdhaud (Great newcomer), @tay0thman (Great help), @MohamedAsli (un grand merci), @Isaiah-Narvaez-42, @WemyssJ, @ramyamaher , @Swichllc, @thumDer, @nasmovk, @Denver-22, @czwangxtt, @frank-e-loftus, @IGF-Zhang
The usual suspects in the background: @sanzoghenzo and @dosymep
Downloads
🔹 See Assets section below for all download options
pyRevit
- 📦 pyRevit 5.3.0.25308 Installer
- 📦 pyRevit 5.3.0.25308 Installer - Admin / All Users / %PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 5.3.0.25308 MSI Installer - Admin / System %PATH%
Highlights
- New Tool #2880: Enhancements for Measure 3D ❤️
- New Tool #2873: New tool simple xls ex+import
- New tool #2881: Sectionbox navigator 🚀
sbnavigator.mp4
- New feature #2793: Allow for an option to close other outputs for all scripts in pyrevit settings
- Improved tool #2738: Toggle Grid Bubbles By Direction 🪨
- Improved tool #2864: feat: Print Sheets: DWG exporter, progress bar, crash prevention + more 🦾
- New Tool #2883: Add Relink Textures tool to pyRevitTools
- Improved #2827: Rewrite of the print_table function: module "output" init.py 🌟
- New Tool #2792: Copy parameter values of selected parameters to another one 🚀
- Improved #1809: Content bundle _content requirement removal ⭐
Changes
Tools
- Implemented #2847: linkify too long error message isn't descriptive
- Improved #2825: Enhancement for "Count Faces": Coarse+Fine
- Resolved #2812: Update pyrevitlib\rpws\server.py
- Resolved #2804: enhancenment for select all objects passing filter
- Resolved #2803: Prune old command 'Toggle Grid Bubbles in View'
- Implemented #2243: Isolate or Select By by Visibility Graphics Filter
- Improved #2797: Refactor Section Box Tool to Support Configurable Toggle for Visibility or Active State
- Improved #2782: added support for linked files - same as orient section box
- Improved #2773: Enhance get_view_filters function to support ordered retrieval of filters
- Improved #2754: Copy Sheets to Open Documents: add "Preserve detail numbers" option (default ON), safer param handling, and richer logs
- Improved #2745: Enhancement 1739 - Improve Copy Legend Functionality
- Resolved #2723: Enhance font replacement functionality in Revit families
- Implemented #2695: add a
iter_project_parametersto make the related functions more efficient - Implemented #2274: Water and Airflow parameters - Sum total tool unit fix
- Implemented #2386: "Orient Section Box to Face" works with Linked files
- Implemented #2317: Button to PIN all Links & Grids & Others
- Implemented #2243: "Isolate" or "Select By" by Visibility Graphics Filter
Runtime
- Resolved #2879: Update binary files (to preserve clone functionality
Engines
- Resolved #2877: Add clean option to bundle.yaml configuration
Extensions
- Resolved #2824: Adding Revitesse to extensions
Installer
- Resolved #2762: Add .NET 8 Runtime Check to Installer Scripts
- Resolved #2757: Fix: Create config directory before writing
Command Line Utility (CLI)
- Resolved #2757: Fix: Create config directory before writing
Python API
- Implemented #2695: add a
iter_project_parametersto make the related functions more efficient