Ok, so I'm finally getting around to the move....I really hate change. I've discovered a lot of broken patches, and chief among the cause so far is my extensive use of js for API linking.
Apparently, in current versions it is not optional to include a callback declaration in the creation of a new LivaAPI object, whereas before it was optional. Did I miss the memo? (and) Why must it be so?
This is problematic in several places (chiefly, because now I have to go through all my js scripts with a fine-toothed comb ;) ), but one of the main areas I see a real problem:
If you have multiple js API object's connected to the same control surface NotifyingControlElement that are in different patches, then open one of those patches in the editor (or switch preview states), the Python notification dict doesn't ever get updated during the change, and throws errors because its feeding an MXDCore function that doesn't have a valid target. That tends to break things internally. I consider it a bug (or, at least, an oversight), but understandable since we're not supposed to be playing with that stuff anyway.
One way to deal with this in the past was to exclude the callback argument from the new LiveAPI creation, but now apparently that's not possible.
Just sayin, is all.
Unfortunately, there is also no way for us (via Python) to figure out what callback belongs to which device (or it would be a little less caustic problem). I'm sure there's an internal function that belongs to MXDCore that can do this, but I've not been able to decipher it.