Compile Time Changes

class LazyBasicSnapperButton

Removed: public Margins margins;
Replacement: final public Margins margins()
Replacement: public void setMargins(int left, int upper, int right, int lower)
Replacement: public void setMargins(pointI p)
Replacement: public void setMargins(int x, int y)
Replacement: public void setMargins(int m)

Old: public constructor(Window parent,
                        // inherited key arguments
                        Font font=controlFont,
                        Brush brush=null,
                        FrameStyle frameStyle=selectButtonFrame,
                        frame3DState frameState=frameStateDown,
                        pointI pos=(0, 0),
                        sizeI size=(-1, -1),
                        pointI margins=(2, 2),
                        alignment align=up,
                        ControlGroup group=null,
                        function (Control control) callback=null,
                        str label=null,
                        color labelColor=color(0, 0, 0),
                        bool threeState=false,
                        // extends arguments
                        alignment textSide=undefinedAlignment,
                        symbol snapperPkg=null,
                        str snapperName=null,
                        Image image=null,
                        str c3CatalogId=null,
                        SnapperSpawner snapperSpawner=null,
                        AnimationSpawner animationSpawner=null,
                        SrcRef src=#:src)
New: public constructor(Window parent,
                        // inherited key arguments
                        Font font=controlFont,
                        Brush brush=null,
                        FrameStyle frameStyle=selectButtonFrame,
                        frame3DState frameState=frameStateDown,
                        pointI pos=(0, 0),
                        sizeI size=(-1, -1),
                        pointI margins=(2, 2),
                        alignment align=up,
                        ControlGroup group=null,
                        function (Control control) callback=null,
                        str label=null,
                        color labelColor=color(0, 0, 0),
                        bool threeState=false,
                        // extends arguments
                        alignment textSide=undefinedAlignment,
                        symbol snapperPkg=null,
                        str snapperName=null,
                        Image image=null,
                        str c3CatalogId=null,
                        SnapperSpawner snapperSpawner=null,
                        AnimationSpawner animationSpawner=null,
                        bool facelift=false,      // New argument
                        SrcRef src=#:src)

class LazySnapper3DButton

Old: public constructor(Window parent,
                        // inherited key arguments
                        Font font=controlFont,
                        Brush brush=null,
                        FrameStyle frameStyle=selectButtonFrame,
                        frame3DState frameState=frameStateDown,
                        pointI pos=(0, 0),
                        sizeI size=(-1, -1),
                        pointI margins=(2, 2),
                        alignment align=up,
                        ControlGroup group=null,
                        function (Control control) callback=null,
                        str label=null,
                        color labelColor=color(0, 0, 0),
                        bool threeState=false,
                        alignment textSide=undefinedAlignment,
                        symbol snapperPkg=null,
                        str snapperName=null,
                        str c3CatalogId=null,
                        // extends arguments
                        bool forceRender=false,
                        sizeI outputSize=(60, 60),
                        double distScale=1,
                        liRenderLevel level=liFull,
                        SnapperSpawner snapperSpawner=null,
                        AnimationSpawner animationSpawner=null,
                        SrcRef src=#:src)
New: public constructor(Window parent,
                        // inherited key arguments
                        Font font=controlFont,
                        Brush brush=null,
                        FrameStyle frameStyle=selectButtonFrame,
                        frame3DState frameState=frameStateDown,
                        pointI pos=(0, 0),
                        sizeI size=(-1, -1),
                        pointI margins=(2, 2),
                        alignment align=up,
                        ControlGroup group=null,
                        function (Control control) callback=null,
                        str label=null,
                        color labelColor=color(0, 0, 0),
                        bool threeState=false,
                        alignment textSide=undefinedAlignment,
                        symbol snapperPkg=null,
                        str snapperName=null,
                        str c3CatalogId=null,
                        // extends arguments
                        bool forceRender=false,
                        sizeI outputSize=(60, 60),
                        double distScale=1,
                        liRenderLevel level=liFull,
                        SnapperSpawner snapperSpawner=null,
                        AnimationSpawner animationSpawner=null,
                        bool facelift=false,      // New argument
                        SrcRef src=#:src) {

class Toolbox

Old: public constructor(Window parent,
                            Font font=systemFont(),
                            Brush brush=null,
                            FrameStyle frameStyle=null,
                            frame3DState frameState=frameStateFlat,
                            bool selectable=true,
                            pointI pos=(0, 0),
                            sizeI size=(100, 100),
                            bool passive=false,
                            cardFlapSide flapSide=cardFlapSide.up,
                            int flapSize=useFacelift ? 52 : 24,
                            bool flapsUsesAllSpace=false,
                            function(CardWindow window) callback=null) : deprecated {}

New: public constructor(Window parent,
                        // inherited key arguments
                        Font font=systemFont(),
                        Brush brush=null,
                        // FrameStyle frameStyle=null, // Removed

                        frame3DState frameState=frameStateFlat,
                        bool selectable=true,
                        pointI pos=(0, 0),
                        sizeI clientSize=automaticSize,
                        bool passive=false,
                        cardFlapSide flapSide=cardFlapSide.right,
                        int flapSize=52,
                        bool flapsUsesAllSpace=false,
                        function(CardWindow window) callback=null,
                        SrcRef src=#:src) {

class ToolboxButtonPainter

Old: extend public void truncateToFit(rectI r)
New: public void updateOutText()

Clean up old lazy startup code and keep only V2 stuff

Remove ultraGetPinnedExtensions() to clean up old unnecessary lazy startup code and keep only V2 stuff.

Removed: public str[] ultraGetPinnedExtensions() {

Runtime/Behavior Changes

Extension Tabs

With the addition of Extension Tabs (not to be confused with Toolbox Component Tabs), the toolbox card can now contain multiple instances of ToolboxSectionedScrollableSubWindow, one for each tab. To differentiate between these instances, the key of the window can be used instead. The format of a key is $cardKey!$tabKey.

Changes to the toolbox configuration have been made as well. It stores information such as what sections should be hidden, what the order of each section should be, and what was collapsed by the user. If the Component Tab uses Extension Tabs, the key of each tab is prepended to the section keys that are stored into the config.

If your tab does not have any tabs, behaviour is unchanged from previous versions.

New libraryFun for Paper Tools toolbox in facelift

Many functions inside cm.core.toolbox/toolbox.cm uses the name of the function that created a library to find it.

In facelift, they key for the paper tools library is instead faceliftPaperToolsLibrary. So when trying to find the paper tools library, make sure to search for that when useFacelift is true.

Affected functions are:

public bool updateToolboxCheckBox(symbol pkg, str libraryFun, str checkBoxKey, bool check, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateAllTbCheckBoxes(symbol pkg, str libraryFun, str checkBoxKey, bool check, bool invokeCallback=true) {
public bool updateToolboxSubSetDropDown(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool rebuildToolboxSubSetDropDown(symbol pkg, str libraryFun, str dropDownLimbKey, Object initial, Object[] seq, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateAllTbSubSetDropDowns(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, bool invokeCallback=true) {
public bool updateToolboxMaterialTreeDropDown(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, CoreAppWindow appWindow=null, bool invokeCallback=false) {
public bool updateAllTbMaterialTreeDropDowns(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, bool invokeCallback=false) {
public bool updateToolboxEnumDropDown(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateAllTbEnumDropDowns(symbol pkg, str libraryFun, str dropDownLimbKey, str selectItemKey, bool invokeCallback=true) {
public bool updateToolboxDistanceLimb(symbol pkg, str libraryFun, str distanceLimbKey, Object object, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateAllTbDistanceDropDowns(symbol pkg, str libraryFun, str distanceLimbKey, Object object, bool invokeCallback=true) {
public bool updateToolboxButton(symbol pkg, str libraryFun, str buttonKey, CoreAppWindow appWindow=null) {
public bool updateAllTbButtons(symbol pkg, str libraryFun, str buttonKey) {
public bool updateToolboxButtonColor(symbol pkg, str libraryFun, str buttonKey, color c, CoreAppWindow appWindow=null) {
public bool updateAllTbButtonColors(symbol pkg, str libraryFun, str buttonKey, color c) {
public bool updateToolboxDoubleTextField(symbol pkg, str libraryFun, str textFieldKey, Object object, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateToolboxDistanceTextField(symbol pkg, str libraryFun, str textFieldKey, Object object, CoreAppWindow appWindow=null, bool invokeCallback=true) {
public bool updateAllTbDoubleTextFields(symbol pkg, str libraryFun, str textFieldKey, Object object, bool invokeCallback=true) {
public LazyLibraryCard getLibraryCard(symbol pkg, str libraryFun, CoreAppWindow appWindow=null) {
public SubSetLimbDropDown getSubSetDropDown(symbol pkg, str libraryFun, str dropDownLimbKey) {

Possibly other in other packages are also affected. Anything that used stdPaperToolsLibrary as a key and is also supposed to work in facelift, essentially.