I've just compared the files from the d20 ruleset v2.1, v2.1.1 and v2.2 to identify the differences. There are no changes between 2.1 and 2.1.1 (which we already knew) but the following changes have been made in v2.2:

Code:
adventure_items.xml
+433 identifyUpdated();

base.xml
~18  <root version="2.0" release="12">
+41  <script name="DesktopManager" file="scripts/desktopmanager.lua" />
+42  <script name="d20desktop" file="scripts/d20desktop.lua" />

desktop_classes.xml
Added a script block to the three window classes gmshortcuts, playershortcuts and localshortcuts:
<script>
  function onInit()
    DesktopManager.registerContainerWindow(self);
  end
</script>
Deleted everything between the sheetdata tags in gmshortcuts, and commented it out in playershortcuts and localshortcuts.

desktop_templates.xml
+66
+67  <template name="desktop_stackitem">  
+68    <windowreferencecontrol>
+69      <bounds>0,0,47,27</bounds>
+70      <nodrag />
+71      <closetoggle />
+72    </windowreferencecontrol>
+73  </template>
+74
+75  <template name="desktop_dockitem">   
+76    <windowreferencecontrol>
+77      <bounds>0,0,91,86</bounds>
+78      <nodrag />
+79      <closetoggle />
+80    </windowreferencecontrol>
+81  </template>

utility.xml 
~173 <scrollercontrol>
~174   <bounds>-98,-60,45,27</bounds>
~180 </scrollercontrol>
~282 <scrollercontrol>
~283   <bounds>-98,-60,45,27</bounds>
~289 </scrollercontrol>

frames/chatbox.png
Replaced the frame image with a clearer one.

scripts/charsheet_skilllist.lua
~64  local unspentnode = window.getDatabaseNode().getChild("skillpoints.unspent");

scripts/combattracker_entry.lua
Replaced line 309 with:
~309 local imageinstance = token.populateFromImageNode(entry.tokenrefnode, entry.tokenrefid);
+310 if imageinstance then
+311   token.acquireReference(imageinstance);
+312 else
+313   token.setPrototype(entry.token);
+314 end

scripts/d20desktop.lua
New script file.

scripts/desktopmanager.lua
New script file.

scripts/library_booklist.lua
~77  return w1.name.getValue() > w2.name.getValue();
~80  return category1 > category2;
A number of these changes are bug fixes, but base.xml, desktop_classes.xml and desktop_templates.xml add the new functionality, along with the two new script files, d20desktop.lua and desktopmanager.lua.

Stuart


Also posted as an answer on another thread, but thought it would also be helpful in its own thread.