(changelog)=
# Change Log
```{note}
PME uses `major.minor.patch.hotfix` versioning.
- `major`: product generation
- `minor`: milestone / release train
- `patch`: feature release within that train
- `hotfix`: follow-up build on the same patch line
```
(changelog-2-1-0)=
## 2.1.0 (In Development)
### Toggle Side Area
- **Rebuilt Toggle Side Area to protect existing editor Areas** — PME now creates and tracks a temporary Area by splitting the configured main Area where the command runs. Existing adjacent Areas are no longer adopted, changed, or closed merely because their editor type or size matches. Run the command from that main Area or from the Area PME created for it; calls from unrelated Areas are cancelled. Existing saved commands with `Ignore Area` values still load, but those values no longer affect behavior. (Issue #1603, PR #1604)
- **Changed a tracked side Area to another editor in one Toggle** — Blender 5.1 and later switch a compatible non-file editor in place. On Blender 5.1, a switch that needs the experimental setting to move a preserved editor history may still replace its side Area. Blender 4.5/5.0 and switches away from File Browser or Asset Browser use Blender's native Area operations to replace only the PME-created companion without requiring a separate hide action. When a physical-replacement route reaches later orthogonal side Areas that prevent the target from sharing a complete edge with the main Area, PME temporarily unwinds owned survivors and replays their side, order, side-axis extent, editor type, and presentation after the requested operation. Only an ownership, geometry, active-Space, or generation failure leaves the layout unchanged. File Browser and Asset Browser remain supported as side Areas, but using either one as the main Area is cancelled before splitting because that host path can crash Blender. (Issue #1777, PR #1780, PR #1810, PR #1840)
- **Preserved orthogonal working state while switching L-shaped layouts on Blender 5.2** — In a tracked, verified L-shaped layout, switching a non-file side Area no longer closes or recreates an orthogonal Asset Browser or Text Editor, even when Experimental state preservation is enabled. PME returns the current supported editor state to the main Area when present and restores the requested supported state in the same side Area when present. This does not add state snapshots for Asset Browser or Text Editor themselves. Blender 4.5/5.0, Blender 5.1 switches that move preserved state, and switches away from File Browser or Asset Browser continue to replace Areas. (Issue #1777)
- **Kept existing Areas during tracked partial CLOSE on Blender 5.2** — In a tracked, verified L-shaped layout, PME closes only the requested target and keeps the Main Area and every tracked non-target Side Area with the same Area, active Space, Space membership, Regions, and working state. The Experimental setting does not choose this topology; it only controls whether a supported target's exact state can return to the Main Area. It does not add state snapshots for surviving Asset Browser or Text Editor Areas. Blender 4.5/5.0/5.1 partial CLOSE and physical Area replacement retain the existing unwind/replay route. This does not guarantee every direction, layout, or editor. (Issue #1777)
- **Restored Text Editor, Dope Sheet, Graph Editor, NLA Editor, Console, Spreadsheet, Video Sequence Editor, Movie Clip Editor, Image Editor / UV Editor, and Preferences working state on Blender 5.2** — With Experimental state preservation enabled, closing and reopening a supported editor restores the tested stable state for its base editor history. This includes Text and search settings; Dope Sheet / Graph / NLA modes, filters, display and supported view positions; Console history, scrollback and font size; Spreadsheet pin/display/filter settings and row filters; tested Sequencer Timeline/Preview/Combined display settings and visible view positions; the tested Clip, Graph, and Dope Sheet views in Movie Clip Editor; generated pinned Image/UV display, UV, zoom, and visible Window state; and the Preferences Display Filter and Navigation region visibility. Unmanaged Timeline, Drivers, or UV editors do not replace their saved canonical base history. Every RNA property, active modal state, draw/runtime caches, Spreadsheet tables or visible rows, Sequencer Region alignment/divider geometry or media/job/cache state, Movie Clip view-specific history or tracking/job/cache state, separate Image/UV histories, cross-mode viewport state, inactive Region proxies, `ui_mode`, render/paint/mask/job or computed-scope/cache state, the selected Preferences category, derived search results, Extensions/Add-ons work, Preferences view position or an active file selector, arbitrary existing workspaces, Main and Side Areas with the same base editor type, general Sidebar-tab memory, File Browser / Asset Browser, and Blender 4.5/5.0/5.1 are outside this added support. (Issue #1879)
- **Restored supported editor working state after closing its side Area** — Enable {guilabel}`Preserve Side Area State` in {guilabel}`Settings > General > Expert`. On Blender 4.5.x through 5.2.x, PME retains working state for supported base editor types, including Outliner, Properties, and Node Editor, during the current Blender session. Orthogonal unwind/replay itself is standard layout behavior and remains available while this setting is off. When the setting is on and every exact-state condition is admitted, PME additionally restores the same Space / Region state for supported survivors. All 19 official Windows x64 releases available on August 10, 2026 passed standard, non-orthogonal open/close/restore cycles for those three editor types. The feature is not restricted to listed build hashes; it validates the running structure for every operation. The setting is off by default. File Browser and Asset Browser, unsupported editors or structures, and history collisions continue with standard layout replay without exact working-state restoration. (Issue #1456, Issue #1777, PR #1810, PR #1840)
- **Retired separate Sidebar tab memory** — Toggle Side Area no longer reads or writes Sidebar tab names as a separate PME feature, avoiding a Blender crash path. The old setting remains readable for compatibility but no longer appears in Settings or affects behavior. Restoring a Blender-owned editor history may also return its visible panel, but this is not a general Sidebar-tab restoration guarantee. Sidebar visibility and the opened Area's width or height are still remembered during the current Blender session. (Issue #1603, Issue #1456, PR #1604, PR #1810)
(changelog-2-0-5-5)=
## 2.0.5.5 (2026.07.23)
- **Fixed Poll conditions for referenced and embedded menus** — Context-sensitive Polls such as `return C.mode == 'SCULPT'` now use the current Blender draw context when a Dialog or another PME menu is referenced. This prevents recursive Poll errors that could leave blocked menus visible and PM Health warnings active. Layout Panels and Floating Panels now follow the same context-aware availability path. (Issue #1496, PR #1538)
(changelog-2-0-5-4)=
## 2.0.5.4 (2026.07.20)
- **Fixed a Blender 5.1+ crash when opening a Pie Menu through `panel()`.** (Issue #1440, PR #1441)
(changelog-2-0-5-3)=
## 2.0.5.3 (2026.07.19)
- **Prevented a Blender 5.1+ crash in expanded Brush Settings inside Pie dialogs** — Brush Direction remains available as a dropdown while avoiding the native crash tracked by [Blender #161637](https://projects.blender.org/blender/blender/issues/161637). (Issue #1418, PR #1422)
- **Temporarily disabled in-session custom icon refresh on the 2.0.5.x line** — Refreshing the shared preview collection could invalidate icon IDs retained by PME's UI. Restart Blender after adding or changing custom icons. The refresh UI is planned to return in 2.1.0 after PME separates preview ownership for its internal icons and user custom icons. (Issue #1423, PR #1428)
(changelog-2-0-5-2)=
## 2.0.5.2 (2026.05.31)
- **Fixed Poll conditions reading stale context** — A Poll script such as `return C.mode == 'EDIT_MESH'` now reads the context the menu was invoked from, rather than a stale global Blender context. This fixes mode-gated menus that could fail to appear from the Mesh keymap or other context-sensitive invocation routes. (Issue #555)
(changelog-2-0-5-1)=
## 2.0.5.1 (2026.05.25)
- **Poll conditions now apply more consistently** — PME now checks Poll conditions not only for hotkeys, but also for HOLD / TWEAK / CHORD, script entry points such as `open_menu()` / `pme.invoke_pm()`, editor previews, Popup Dialog and regular menu drawing, and calls through Macro / Modal / Sticky / Floating Panel routes. This reduces cases where a menu that should not be available in the current Blender context could still be reached through another path. (PR #404, PR #406, PR #413)
- **Operators that cannot run safely are now cancelled** — When an operation does not satisfy Blender's context requirements, PME now cancels it safely and reduces cases where it is shown as a poll error. (PR #449)
- **Fixed Stack Key notification visibility** — Fixed an issue where the Stack Key notification label could keep appearing in situations where it was not needed. (PR #446)
(changelog-2-0-5)=
## 2.0.5 (2026.05.16)
### Menu Management / Editing
- **Added a shared menu-reference foundation** — PME can now track which menus reference other menus using both names and uids. This gives PME a consistent base for jumping to linked menus, inspecting incoming references, and diagnosing broken references. (PR #336)
- **Easier navigation to linked menus** — MENU slots now expose linked-menu navigation buttons. You can jump to related menus from the Slot Editor MENU tab, PM Editor slot rows, Popup Dialog / Floating Panel editor previews, and Dialog links in Panel Groups. (PR #336)
- **Incoming references are now visible** — Menus can show a linked-reference button next to the menu name when other menus point to them. If there is one source, PME jumps directly to it; if there are multiple sources, PME shows a list to choose from. (PR #336)
- **Assisted linked-menu creation** — When a MENU slot points to a menu that does not exist yet, PME can create the linked target menu from that spot. You can choose the new menu mode and set the MENU options that apply to that mode before linking it back to the slot. (PR #336)
- **Added the Editor Link Buttons setting** — Popup Dialog and Floating Panel editor previews can now show or hide linked-menu buttons. Toggle this from {guilabel}`Settings > General > Interface` or {guilabel}`Settings > Popup Dialog`. (PR #336)
- **Added developer-facing reference audit tooling** — PME now includes an audit command for inspecting existing menu references, missing targets, missing uids, and duplicate uids. This is intended as a support and cleanup aid, and as a foundation for future PME Doctor-style diagnostics. (PR #336)
- **Easier editing while moving to linked menus** — When adding slots to a menu through the context menu or similar flows, you can now move to the referenced linked menu. MENU slots used as panels or pointing to linked menus are marked with `[PANEL]` / `[LINKED]`. Clicking one lets you choose whether to replace that slot or move to the linked menu. (PR #340)
- **Disabled and broken references are easier to spot** — When a MENU slot references a disabled PME menu (PM) or a PME menu that cannot be found, PME now shows that state in the PM Editor, Slot Editor, Popup Dialog / Floating Panel editor previews, and embedded runtime displays. Disabled targets use the normal `UNLINKED` icon, while missing or ambiguous targets use an alerted `UNLINKED` icon, keeping them distinct from slots that are simply unset. (PR #392)
- **Improved Preferences list and Tree Mode UI** — The menu list width can now be adjusted or collapsed with a modal control, and Tree Mode can show item counts for groups. Narrow keymap rows also stay less crowded by showing the key browse button only when Advanced Settings are enabled. (PR #321)
- **Reorganized menu creation presets** — Poll condition presets now make it easier to choose Editor UI Type, Object Type + Mode, mesh selection counts, and similar conditions. A CUSTOM preset for showing Blender Quick Favorites was also added. (PR #399)
### Popup Dialog / Floating Panel
- **Added collapsible panels to Popup Dialog / Floating Panel** — You can now place another Popup Dialog / Floating Panel inside a Popup Dialog or Floating Panel as a collapsible panel. Add a panel row from the Row menu, then link the menu that should be shown in the panel body. Panel headers can also contain additional buttons, and the panel can be configured to start closed with the Default Closed option. This feature uses `UILayout.panel()` from Blender 4.2 or newer. In Blender 4.1 and older, this feature cannot be used or imported. (PR #317, PR #340)
- **Improved Popup Dialog / Floating Panel row editing** — PDI move and copy actions can now insert into the start or end of another row without requiring a placeholder slot first. Context-menu insertion into DIALOG / FPANEL layouts also exposes clearer row-edge add targets. (PR #316)
### GPULayout
- **Added Floating Panel tooltips** — Floating Panel COMMAND buttons can now show PME descriptions and COMMAND slot description overrides as GPU tooltips. Tooltip lifetime, placement, wrapping, and popup / subpanel close cleanup now follow GPULayout state. (PR #312, PR #314)
- **Improved GPULayout popup pointer state** — Fixed cases where dropdown popups stayed open after selection, reopened immediately from the owner button, or left stale hover / pressed visuals behind. (PR #318)
- **Improved GPULayout Boolean property widgets** — Boolean `layout.prop()` widgets now behave closer to Blender's standard UI, including icon toggles, split labels, disabled / inactive states, and `invert_checkbox` display handling. (PR #323)
- **Improved GPULayout icon fallback and FPANEL icon selection** — PME-owned fallback icons now use hidden internal assets, and unsupported Blender built-in icons are filtered out of the FPANEL icon selector. (PR #326)
- **Stabilized FPANEL target lifecycle and placement** — FPANELs now close safely when their bound area becomes invalid, while keeping panel state across unrelated context changes such as side area toggles. Root FPANEL placement is saved relative to the target area. (PR #331)
### Stack Key
- **Reworked Remember State around practical use** — Stack Key's {guilabel}`Remember State` has been used to remember the last selected slot position. However, when grouping similar tools under one hotkey, there are cases where it feels more natural to return to the previous tool by default and advance through the candidates only when the hotkey is pressed again quickly, instead of always advancing on every press. The setting has been renamed to {guilabel}`Remember Slot`, and Stack Key can now choose behavior that better matches how it is used. (Issue #35, PR #328)
- **Added Advance On for choosing how slots advance** — With {guilabel}`Every Press`, Stack Key advances to the next slot every time it is pressed, matching the previous behavior. With {guilabel}`Quick Repeat`, pressing the Stack Key after a pause recalls the previously used slot, while pressing it again quickly advances to the next slot. Existing Stack Key settings keep the {guilabel}`Every Press` behavior, so hotkey meaning does not change after updating. (Issue #35, PR #328)
- **Added icons to Stack Key slots** — Each Stack Key slot can now have an icon, and Stack Key notifications now show both the slot name and icon when a slot is invoked. (Issue #35, PR #328)
### Export / Import
- **Stabilized JSON export menu order** — JSON exports now keep the menu array in the same order as the Preferences menu list. Tree Mode display order and referenced-menu additions no longer change the serialized order, making it easier to re-import exported JSON while preserving the intended menu list order. The developer-facing sort option still exports by name when explicitly enabled. (PR #381, PR #385)
- **Preserved referenced menus in partial exports** — When exporting only part of the menu set, such as Current Menu, Tag, or Enabled, PME now uses a clearer dependency-closure path for including related referenced menus. Cycles and multiple paths to the same menu no longer duplicate output. Missing or ambiguous references are not guessed, keeping them available for future diagnostics instead. (PR #385)
- **Clarified the export UI wording** — The export item previously shown as {guilabel}`Selected Menu` is now shown as {guilabel}`Current Menu`, matching what it actually exports today. This avoids confusion with the future multi-select export mode. The file selector also includes {guilabel}`Include Referenced Menus` for controlling whether referenced menus are included. (PR #385)
- **Improved suggested export file names** — Manual exports no longer default only to `my_pie_menus.json`. The initial file name now reflects the export source: Current Menu uses `PME_