Skip to content

Releases: pyrevitlabs/pyRevit

pyRevit v6.5.3

Choose a tag to compare

@github-actions github-actions released this 25 Jun 20:48
b74f72a

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 CLI (Command line utility)

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

pyRevit v6.5

Choose a tag to compare

@github-actions github-actions released this 22 Jun 16:48

pyRevit v6.5.0

Highlights


Performance & C# Loader


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


UI & Tools


Extensions


Revit API & Core Library


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


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


⚠️ 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 CLI (Command line utility)

CI Binaries

CI Binaries Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jun 07:41
7c6859b

Pre-built bin/ from CI (anonymous download for pyrevit clone).

pyRevit v6.4.0

Choose a tag to compare

@github-actions github-actions released this 10 Apr 06:16

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

CLI

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_mode config 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: _WPFMixin shared by WPFWindow and WPFPanel; panels now support load_xaml() with locale and resource dictionaries. (#3177, #3146)
  • IFC export helper: ifc.py extended with config loader, export-options builder, and single-call IFCExporter. (#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 to filter_utils for 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; ParamDef extended 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

  • _WPFMixin refactor: Shared WPF behavior (resources, locale, UI helpers, dispatcher) extracted; WPFPanel brought to feature parity with WPFWindow via load_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; ParamDef extended; ParameterItemStyle.xaml updated 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 with load_config(), build_export_options() (decimal-separator workaround), and IFCExporter class. (#3147)
  • Distinct color generator: Greedy max-distance RGB algorithm, IronPython 2.7 compatible, deterministic seed support. (#3165)
  • elements_bounding_box: Optional elements argument for get_value_range. (#3128)
  • Mesh: Optional color override for Mesh.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 Roslyn MetadataReference list, replaced per-extension AppDomain scans with pre-built HashSet lookup — 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: layout field in bundle.yaml now 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_version filtering at extension and component level. (#3134)
  • Dynamo engine defaults: automate and clean default to false. (#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_mode config 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.py file 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 8 when ADC removed the compatible API DLL — Public API → Legacy API → process detection + workspace directory walking. (#3266)
  • Storage file handling: Refactored to use `Ro...
Read more

pyRevit v6.3.0.26091

pyRevit v6.3.0.26091 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Apr 10:50

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

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_mode config 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 _WPFMixin shared by WPFWindow and WPFPanel; panels now support load_xaml() with locale and resource dictionaries. (#3177, #3146)
  • IFC export helper: ifc.py extended with config loader, export-options builder (decimal-separator workaround), and single-call IFCExporter. (#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; ParamDef extended 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)
  • 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 _WPFMixin with shared WPF behavior (resources, locale, UI helpers, dispatcher); WPFPanel brought to feature parity with WPFWindow via load_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; ParamDef extended; ParameterItemStyle.xaml updated 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 with load_config(), build_export_options() (decimal-separator workaround), and IFCExporter class. (#3147)
  • Distinct color generator: Greedy max-distance RGB algorithm, 2.7/IronPython compatible, deterministic seed support. (#3165)
  • elements_bounding_box: Optional elements argument for get_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: HashSet guard prevents Roslyn CS0101 errors. (#3188)
  • Layout allowlist: layout field in bundle.yaml now 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_version filtering at extension and component level. (#3134)
  • Dynamo engine defaults: automate and clean default to false. (#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_mode config 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.py file 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 RootStorage class 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...
Read more

pyRevit v6.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Feb 23:27

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_box moved 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_date and 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 in events.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.py support; 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 🚀

Choose a tag to compare

@github-actions github-actions released this 01 Feb 22:32

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 GetRevitAddonsFilePath and 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.json cache 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!

@jmcouffin


Downloads

See Assets section below for all download options

pyRevit

pyRevit CLI (Command-Line Utility)

pyRevit v5.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 19:07

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 CLI (Command line utility)

Highlights

  • New Tool #2880: Enhancements for Measure 3D ❤️
image
  • New Tool #2873: New tool simple xls ex+import
image
  • New tool #2881: Sectionbox navigator 🚀
image
sbnavigator.mp4
  • Improved tool #2865 / #2866: View Range / Improved overall tool functionality
image
  • New feature #2793: Allow for an option to close other outputs for all scripts in pyrevit settings
image
  • 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
image
  • Improved #2827: Rewrite of the print_table function: module "output" init.py 🌟
  • New Tool #2792: Copy parameter values of selected parameters to another one 🚀
image
  • 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_parameters to 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_parameters to make the related functions more efficient

pyRevit v5.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 08:32

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 CLI (Command line utility)

Highlights

  • New Tool #2880: Enhancements for Measure 3D ❤️
image
  • New Tool #2873: New tool simple xls ex+import
image
  • New tool #2881: Sectionbox navigator 🚀
image
sbnavigator.mp4
  • Improved tool #2865 / #2866: View Range / Improved overall tool functionality
image
  • New feature #2793: Allow for an option to close other outputs for all scripts in pyrevit settings
image
  • 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
image
  • Improved #2827: Rewrite of the print_table function: module "output" init.py 🌟
  • New Tool #2792: Copy parameter values of selected parameters to another one 🚀
image
  • 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_parameters to 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_parameters to make the related functions more efficient