Nice work so far! I still do not like the fact that the core script (app.js) decides about the size of the preview pane. I'd like to strictly separate the visual appearance from the core functionality. In your patch the user can decide whether he/she wants to see the preview pane or not. This makes it even more complicated to separate functionality and skins.
I worked on the preview pane as well and here's my suggestion to implement it. The preview pane is defined by the skin template and not configurable. If you want to make the pane resizable, it should be implemented in the skin template (I didn't have the time to do that yet). There's no user configuration available in my patch which means that the admin decides which skin is used and all users are faced with the preview pane or not. There are two solutions to get around this: Either the user can choose from several skins (a nice feature anyway) or (that's something I always had in my mind) the template parser can handle conditional tags like <roundcube:if condition="$config.preview_pane"> .. roundcube:else .. roundcube:endif
Please try out the attached patch on the latest rev. 364 and write your oppinions about the one or the other approach.
Thanks. Thomas