Friday, June 28, 2013

Gallery Server Pro 3.0.1 Released

Today I released 3.0.1, containing 35 bug fixes and 9 enhancements. They include fixes to the 2.6 => 3.0 upgrade process, performance improvements, media template tweaks, and more.

This release is a free upgrade to 3.0.0 license holders. Upgrading is easy – just copy the files from the upgrade package over your existing web application. Installations and upgrades for other scenarios are in the Quick Start Guide.

Upgrade improvements

Several issues with upgrading from 2.6 have been addressed.

Lost media type settings – The upgrade to 3.0.0 caused the list of enabled media object types to reset to the default values of .jpg and .jpeg. Upgrades now preserve the settings you selected on the Media Object Types page in the site admin area. Note that if you already upgraded to 3.0.0, applying 3.0.1 will not correct this – you still need to re-enable the desired file types. But anyone upgrading from 2.6 to 3.0.1 will now have their file type settings preserved.

SQL timeout during restore – For large galleries, the default SQL Server timeout value of 30 seconds was not enough time to delete  and/or insert records. The value was increased to 3600 seconds (one hour).

Tags not imported – Users upgrading galleries with images that had tags (also called keywords) extracted from the file metadata discovered they were missing in 3.0. That has now been fixed, along with a couple other bugs where tags longer than 100 characters or those having apostrophes caused the upgrade to fail. If you were affected by this issue, you can (1) rebuild the tags on the Metadata page or (2) install 3.0.1 and perform the upgrade again.

Out of memory error – The backup and restore operation is a memory intensive operation and can fail for very large galleries (e.g. hundreds of thousands of media files). If you experience an out of memory error while creating the 2.6 backup file, see this thread for a patch. Version 3.0.1 has a more efficient restore algorithm, which should reduce the chance of exhausting the memory.

Incorrect .mp4 encoder setting – When you upgraded from 2.6 to 3.0.0, the .mp4 encoder setting on the Video & Audio page in the site admin area began with this text:

-y -i "{SourceFilePath}" -s {Width}x{Height} -b:v 384k …

But if you installed from scratch you got this setting:

-y -i "{SourceFilePath}" -vf "scale=min(iw*min(640/iw\,480/ih)\,iw):min(ih*min(640/iw\,480/ih)\,ih)" -b:v 384k …

Using –s {Width}x{Height} works, but it creates the encoded video with the same width and height as the original. Just before I released 3.0.0, I realized it would be better to scale the videos to a reasonable size so that the browser wasn’t trying to render ridiculously large videos. For example, videos from my Samsung Galaxy S4 are 1920x1080, but for most users it is overkill to serve videos at this size, not to mention the difficulty showing a large video on a monitor smaller than the video. So for 3.0.0 I changed the setting to the value shown above, where it is scaled to around 640x480, with the exact dimensions adjusted to preserve the aspect ratio. However, I forgot to update the setting in the upgrade script, so upgraders got the original setting. When you upgrade to 3.0.1, the setting is automatically updated, but if you prefer the original value, you are free to change it back (or to anything else you see fit).

If you have any issues with your upgrade, I want to hear about it. I may be able to upgrade your gallery even if you continue getting an out of memory error.

Performance enhancements

A couple of performance improvements have helped make the gallery a little more snappy. When the left pane is disabled on the Gallery Control Settings page, the data for the album treeview is no longer required. Version 3.0.1 now detects this scenario and skips the calculation, JSON serialization, and sending of the data to the browser.

I was also able to eliminate a duplicate JavaScript variable containing gallery settings.

Media template tweaks

After 3.0.0 was released, I noticed a few of the media templates were unnecessary or incorrectly configured. For example, .m4v, .qt, and .moov files were configured to play with an object tag in all browsers except Safari, which specified the HTML5 video tag. After upgrading to 3.0.1, these files will behave the same as .mp4, using the HTML5 video tag in browsers that support it and a fallback to Flash in those that don’t.

Also, .mp3 files wouldn’t play in IE8 and earlier because it doesn’t support the HTML5 audio tag. I added a new template that uses a Silverlight player for IE 1-8.

Updated album thumbnail styling

Version 3.0.0 used a different background color and a CSS double border on album thumbnails to differentiate albums from media objects:

abm_thmb_double_border

A few days ago I was helping a fella named Joe Hakooz with his gallery and I noticed he had tweaked the CSS to look a little more like a photo album. He was kind enough to let me copy his technique, and you can see the results here:

abm_thmb_triple_border

The neat thing is that it’s done all in CSS, but instead of specifying a double border, it uses the CSS3 box-shadow property:

box-shadow:0 0 0 0 #545454, 2px 2px 0 0 rgb(167,167,167), 4px 4px 0 0 #545454, 6px 6px 0 0 rgb(167,167,167)

By specifying a comma separated list of properties with alternating colors, I can create a nifty album look without custom images or the extra HTTP request it would require. Thanks Joe!

By the way, in case you are wondering why I mixed hex and RGB values, that is necessary for the MSBuild script I use when creating the light skin CSS file automatically from the dark skin. I have a standard set of replacement colors for hex values, while any colors specified in RGB are either not converted or handled in a separate step. The details are beyond the scope of this post, but I didn’t want you to think I am a sloppy programmer. Smile

The full list

Below is the full list of bugs and enhancements. I am still working on creating detailed reports with additional details. They’ll be posted on the release history page when finished.

Bug fixes

  • UI appears to allow editing album meta even when user does not have edit album permission
  • SQL timeout during restore
  • jQuery updated to 1.10.0 instead of 1.10.1 during 2.6 migrations
  • Saving changes on User Settings page unsets 'send an e-mail to the following admins when account is created' option
  • Edit options are sometimes incorrect
  • Image used when watermark can't be applied is not present
  • Media object not visible in IE8
  • Media object header section left aligned when toolbar disabled
  • Media template incorrect for M4V files
  • MP3 audio files do not play in IE8 and earlier
  • Thumbnails do not flow correctly on edit titles page
  • Web.API calls return 404 in some configurations
  • Cannot add a ZIP file on the add objects page
  • Concurrency error when trimming event log
  • Cannot assign thumbnail when gallery is read only
  • Download/share dialog hidden when viewing PDF file on Safari
  • Redundant MP3 media template for Safari
  • .qt and .moov files should use same media template as .mov
  • Keywords not correctly imported in 2.6 to 3.0 upgrade
  • Keywords longer than 100 characters cause 2.6 to 3.0 upgrade to fail
  • Keyword containing apostrophe causes 2.6 to 3.0 upgrade to fail
  • Link to product key page is incorrect
  • Space missing from 'Date Added' metadata label
  • GetDataSchemaVersion function very inefficient
  • Label incorrect on on Gallery Control Settings page
  • Duplicate settings object sent to browser
  • Can't edit title or caption of root album after 2.6 to 3.0 upgrade
  • Web.API call to /api/albums/{AlbumId}/galleryitems stores sort request as user's preferred sort order
  • Incorrect MP4 encoder string in 2.6 to 3.0 upgrade
  • A user is shown an Add link in an empty album even when they do not have add media object permission
  • Subsequent failed logins shows an empty green message box
  • Sync error can occur when filename is different than the metadata filename value
  • NullReferenceException if user without edit permission navigates to transfer objects page
  • List of enabled media objects is reset during upgrade
  • Thumbnail assigned to album during synchronization is not always the first file in directory

Enhancements

  • Improve ability to format dates and numbers within UI template
  • Make common jsRender helper functions and converters globally available
  • Silently handle errors that occur during metadata extraction and record file path
  • Add ability to specify sort on Web.API method /api/albums/{AlbumId}/mediaitems
  • Lock icon has misleading text when anonymous browsing is disabled
  • Perf improvement: Calculate and send album tree data only when required
  • Periodically persist the synchronization status to the database
  • Improve thumbnail distinction between albums and media objects
  • Update to jsRender 1.0 beta

No comments: