Podcast Lounge Update History

Version 2.6.1 – 18th May MAINTENANCE UPDATE – LIVE

  • Added a new page to inform users about Podcast Lounge 2 and to provide a means to upgrade.
  • Corrected image cache issue which was causing logos to fail
  • Removed support for OneDrive as Microsoft have now blocked compatibility for apps built with an older SDK. 🙁
  • Removed support for podcast directories as the Zune directory we relied upon has now been retired.

Version 2.5.5 – 8th March MAINTENANCE UPDATE

  • Added support for Windows 10 Insider Preview for Phones
  • Converted the app over to a more robust UNID function (cause of lost data in WP10)
  • BuildAllDownloadsArray() strengthened to minimise nullreference exceptions
  • Turned off idle detection within backup/restore routines
  • Restoring a backup wasn’t clearing the download folder, nor the position token folder
  • Podcast settings were not being deleted when the favourites database was cleared
  • Added update routine to move IsoTokens into a new folder
  • Tweaked the play button press routine to suppress bar updates until the playback has properly commenced (prevents the bar from jumping to zero)
  • Added support for 8.1 GDR2 detection
  • Added latest phone name detection unit

Version 2.5.4 – 27th February MAINTENANCE UPDATE

  • Added support to detect Windows 10 insider
  • On virgin load, the play history page did not show an “empty” message

Version 2.5.3 – 14th February MAINTENANCE UPDATE

  • Publish date wasn’t being shown in some instances
  • Improvements to fast-application-switching and tombstone combinations

Version 2.5.2 – 7th February MAINTENANCE UPDATE

  • Issue with losing downloads when launching the app from a secondary tile and then having app tombstone. Fixed.

Version 2.5.1 – 5th February MAINTENANCE UPDATE

  • Exception put in for Italian Radio2 podcasts as if-modified on server was broken (www.radio.rai.it)
  • Potential fix for CheckDownloadListIntegrity() exception (incorrect tombstoning flag)

Version 2.5 – 4th February FEATURE RELEASE

  • Reworked the image cache function to store in flat structure
  • Tweaked the load routines for faster load performance
  • Reduced executable size by designing out some libraries
  • Changed panorama background image loading to deferred to speed up launch
  • Adjusted text positioning on Programme Page to avoid clash when filters set
  • Improved exception handling on Programme page
  • Added ability to disable the background image on the panorama
  • Added localization support – English GB & US first
  • No playlist file resulted in a blank playlist page with no placeholder text
  • Sync status box wasn’t hidden when sync disabled
  • OneDrive login no longer requests for such high credentials
  • Backups were failing under certain conditions – fixed
  • Reworked the favourites template selection to be less CPU hungry
  • Added ability to suppress sleep timer warning message
  • Added ability to detect whether ResourceIntensiveTasks have been disabled by Battery Saver
  • User-added podcast library items did not set a marker date when created
  • Creation of social networking posts was broken
  • Restoring a backup now resets any background sync log reports
  • Changed boot logo date to 2015 and added WXGA version
  • Improved the reliability of the function to remove played podcasts
  • Screens adjusted to scale properly to virtual navigation buttons
  • Backup/restore routine wasn’t bringing in podcast settings or cancelling download history
  • Upped the range within Smart Playlists to 10 year range
  • Playback routine was losing position if network streaming timed out

Version 2.4.5 – 9th December MAINTENANCE UPDATE – Live

  • The website hyperlink was inaccessible on the programmepage due to the transparent menu bar
  • Playback status, download status, counters etc. were not properly refreshed on the programme, hybrid, download sum and download hive page
  • Favourites list counters now update in real-time

Version 2.4.4 – 6th December MAINTENANCE UPDATE

  • Changed the menus at the bottom to be transparent to get more space on the page

Version 2.4.3 – 4th December MAINTENANCE UPDATE

  • Fixed ArgumentOutOfRangeException crash on KickstartBackgroundTransfers()

Version 2.4.3 – 3rd December MAINTENANCE UPDATE

  • Reduced the number of lines that are included from the agent log during a crash email log
  • Removed the heavy dependence on the ApplicationState transient store to potentially avoid the serialization crashes we’ve been seeing and making resuming quicker
  • Changed the XML save routines to write out to a TMP file before erasing the main file for extra safety
  • Savepagestate routine for DownloadSum wrapped with Catch/Except to prevent exceptions to the user.
  • Secured the BuildAllDownloadsArray() function to be less susceptible to NullReferenceException
  • Fixed issue with Feedburner parsing issues
  • Fixed regression where smart playlists did not have up-to-date data on the feeds it was parsing
  • Fixed bug where the smart playlists empty text crashed into the (+) button in the UI

Version 2.4.1 – 23rd November MAINTENANCE UPDATE

  • WaitUntilTrackFullyMounted has been updated to catch exceptions occurring on the cycle
  • Addressed issue within AssignNextTrackPlaylist() where MountPlaylistAndCheckForNextTrack()’s return code wasn’t being checked for null
  • Potential fix implemented for BackgroundTransferRequest.set_TransferPreferences exception
  • Sync status dates were not correctly formatted for the date locale
  • Potential sync bug issue with Radio24 where the cache file comparison was broken
  • FindMasterEpisodeRefFromKeyNameAndTitle now checks for null/empty parameter strings
  • CheckIfAgentTrackMounted now does a further check for a null/empty track title
  • PopulateEpisodePanel() updated with some more debug information to check for nullreferenceexception bug
  • SafeDateTimeParser() updated to better deal with corrupted date/time strings
  • RefreshDownloadsUnderwayStatusAndAppendDLHistory() rewritten to take into account downloaded episodes which have gone missing mid-way throught the feed
  • Added an extra nullreference check to BuildAllDownloadsArray()

Version 2.4 – 18th November FEATURE RELEASE

  • Added ability to individually setup sync options by podcast / override global sync settings
  • Background download agent now aware that it is running low on time and reacts accordingly
  • We now trap invalid URIs from podcast description pages rather than crashing
  • Added new menu to player page to short-route to playlist and sleep timer
  • Moved the player controls to below the podcast image for easier 1-handed operation
  • Added ability to share a podcast directly from the programme page
  • Podcast sharing by email now includes links to launch Podcast Lounge + subscribe
  • Increased the time the sleep timer banner is shown onscreen
  • Favourites view now correctly refreshes number new and number downloaded counters

Version 2.3.1 – 9th November MAINTENANCE UPDATE

  • Improved performance on episodes page loading
  • Added Podlove URI launch functionality
  • Background downloader now more robust
  • Further performance improvements and bug fixes

Version 2.3 – 1st November FEATURE RELEASE

  • Added ability to block streaming over a cellular connection in settings
  • Adjusted some of the icons to be more balanced
  • Added ability to download podcasts from the playlist page
  • Added additional options to clear up podcasts downloaded but not listened to
  • Sped up the generating podcast view
  • Generating a smart playlist no longer stops playback and overwrites the currently playing episode
  • Optimised episodes parser was not ordering podcasts with the same date
  • Neither the playback history or the playlist view updated with episode download status – fixed
  • Tweaked the spacing between the status panel and the description text
  • Rowi menu fixed to always reset to left justified when opened
  • Storage management section now has shortcut to downloads section
  • Storage management now reports size of the image/rss feed/temp transfers cache
  • Added reset option to reset the “my url” database
  • Added confirmation message on resetting databases
  • Now able to clear the “my URL” database from within the my url section
  • Programme page description now tells you how many podcasts there are in the list
  • Now save the favourites cache refresh token as an IsolatedToken, meaning the background agent can inform the UI that it has done the work.
  • We’ll mount the favourites anyway on startup no matter whether refresh is set or not
  • Addressed a bug where the collections view would cause a null reference exception if the collection download had been unsuccessful
  • Background downloader now has an option to keep x newest episodes and discard rest
  • Added hyperlink/shortcut to search section from the “Add Podcast” view
  • Corrected visual alignment issue with text items within the downloads section
  • Added support to deal with podcast restores which go to a different phone – authentication stuff won’t transfer
  • Empty playlist was showing an empty menubar in some instances
  • Favourite download counters are wrong after the app resumes from hibernation – fixed
  • Background sync now randomly polls the favourites to avoid the issue sometimes where a single favourite stalls the download
  • History page now accurately tracks playback status from play > pause > play
  • Made the background sync system more robust
  • Added new bug report facility for the sync function to help understand failures

Version 2.2.1 – 6th October MAINTENANCE RELEASE

  • Default filters for favourites were broken
  • Playlist crash on reordering
  • Other bug fixes

Version 2.2 – 4th October FEATURE RELEASE

  • Page loading optimised for fast load and resume
  • Added unselect all functionality
  • Add new downloads panel showing all episodes with sort functions
  • Added shortcut to storage management function
  • Added ability to delete by podcast programme by using the press & hold menu in the downloads section (groups by programme)
  • Downloaded episodes with no file size information are updated on-the-fly
  • Favourites are auto-refreshed less regularly when option set
  • Further improvements to stability and reduction in KeyNotFound errors

Version 2.1.7 – September MAINTENANCE RELEASE

  • Added support to recognise newer phone versions
  • General bug fixes based on user error reports
  • Fix for crash on resumption from tombstoning (state memory overflow)
  • Ability to disable live tile counters
  • More accurate live tile counters
  • Added support to detect new WP 8.1 GDR builds
  • Downloaded item clean-up changes weren’t being properly committed to memory

Version 2.1.6 – 28th June MAINTENANCE RELEASE

  • Added support for file I/O routines to await for file access to return (SafeAccessFile)
  • Added a check to report to the user that the phone cannot play a particular file format
  • Fixed the nullreference exception with TiltEffect
  • Removed the CommitTextDirectlyToLogfile mutexes as they were causing a AbandonedMutexException
  • Added some code to trap the App.OnAnyError messagebox exception

Version 2.1.5 – 5th June MAINTENANCE RELEASE

  • Stability fixes

Version 2.1.4 – 20th May MAINTENANCE RELEASE

    • Fixed bug where the “restrict to audio” option in a playlist wasn’t being saved correctly
    • Fixed Toolkit exception on Add URL section for 7.1 beta

Version 2.1.3 – 1st May MAINTENANCE RELEASE

  • Potential fix for XamlParseException bug on 8.1 which caused random crash on app start-up for some users.

Version 2.1.2 –  25rd April MAINTENANCE RELEASE

  • Fixed exception where the playlist attempted to update an old Standard tile with IconicData

Version 2.1.1 –  23rd April MAINTENANCE RELEASE

  • Fixed exception bug where the status line being empty caused a null reference exception (EpisodeStatusPanelStr)
  • Added some additional helper text within the playlist editor interface to confirm that the limit routine is “and” not “or”
  • IsoStorageSpace check was returning Kb instead of Mb
  • Centralised the IsoSettings function so we can trap exceptions due to out-of-memory errors
  • Addressed bug where advanced player controls wouldn’t appear if the image hadn’t loaded
  • Fixed bug wtih EpisodeDetails indexoutofrange bug
  • Fixed issue with minutes sometimes being presented as >60 in episodes view (Windows Weekly)
  • Added function to present today/yesterday text in place of dates
  • Added updated flurry analytics module
  • Video player slide gesture still enabled in landscape mode
  • Added IconicTiles with transparency for WP8 and WP8.1 for downloads, playlists and main programme tile + store icons (test)
  • Added download counter to tile
  • Addressed 8.1 exception (Coding4Fun Popup exception)
  • The cut-over code dealing with duplicate titles now considers tokens, not just downloads

Version 2.1 – 8th April FEATURE RELEASE

  • Added ability to delete downloads associated with a favourite being removed
  • Added ability to pin smart playlists to the start screen and launch from them
  • Added support for sleep timer functionality
  • Added ability to sort from the episodes view

Version 2.0.5 –  4th April MAINTENANCE RELEASE

  • Addressed issue with background sync downloads not being found in the favourites list (episode title inconsistencies)
  • Fixed bug with video playback position not being saved when leaving player page (and pausing
  • When legacy playback modes are enabled and user attemtps to finish a podcast early, the track just jumps 30s. Fixed.
  • Share via e-mail from player screen causes an exception when the progwebsite is null – fixed

Version 2.0.4 – 25th March MAINTENANCE RELEASE

  • Fixed bug where playlists generated from downloads page would not play through continuously

Version 2.0.3 – 21st March MAINTENANCE RELEASE

  • Crikey offline playback failures now remember the playback position
  • BAP was being put into funny state when playlist completed – caused issues for UI and exception result
  • Adjusted background agent to handle stop() characteristics differently (bluetooth issues)
  • Added debug message prior to RadMessageBox call
  • Addressed issue where exception routine failed because it couldn’t contact the BAP to get its agent
  • Fixed episodes weren’t being sorted properly when in flight mode
  • Unsafe _StateChngEvent on the panorama
  • Issue with the march date format descriptor (those podcasts that refer to March instead of Mar)
  • Added trap for TiltInteractionEffect exception which ignores it
  • Moved agent queries into GlobRoutAll
  • Fixed a bug where the download counter wouldn’t update for favourites when a download was deleted from within favourite -> episodes listing
  • Agent closure routine is now much more aggressive – nulls the track first
  • Added an available storage space check on app startup
  • Addressed issue of episode suddenly playing after resuming the podcast in paused state
  • Changed out RadToggleSwitch tap routines to checkedchanged events
  • Favourites view when set to sort by new was doing a string sort, rather than a numeric sort
  • Cancelling a download doesn’t update the favourites counter
  • AddTransferRequest() exception fixed
  • Updated the launch-from-music/video history warning message to suggest that it may be caused by the history being cleared
  • ItemDetails null or empty exception with the history uri – added a check for a null state / further enhancements with try/catch
  • Added a longer date/time range for smart playlists up to 3 years
  • Implemented recommendations to avoid the player crikey message
  • Added PhoneNameResolver to show more meaningful phone names
  • Added markerdate information text on the programme settings page
  • Made podcast settings page scrollable
  • Added locale information to PhoneVitals string
  • Backup function now using a better name descriptor
  • Fixed the UpdateUI exception from within Playlist Editor (caused by incomplete tombstone rehydration)
  • Fix where duration was specified in decimal seconds causing ParseDuration() to fire an exception
  • WP8 version now supports .GIF file imagery!
  • Fixed issue with URL encoding for embed.ly. Using the wrong function in ImageCacher class.

Version 2.0.1 – 12th March MAINTENANCE RELEASE

  • Addressed CreateFolderStructureAsync() exception from backup/restore – didn’t contemplate null reference
  • Fixed issue where the programme page lost its applicationbar when in flight mode
  • Fixed SaveStringToFile() weakness – now reacts gracefully
  • Fixed issue where fast forward and fast rewind got stuck on fast rewind every time
  • PL now warns the user when there are no favourites to backup
  • ItemDetails null or empty exception with the history uri – added a check for a null state
  • Issue with ZDF podcasts – had to change the useragent within the HTTPStringDownload() function
  • Fixed issue with Zune directory parse and duff programme (with dead RSS) causing the UpdateEpisodesListBW_WorkerThread() to fire off a NullReferenceException
  • Fixed issue where the grouppicker being visible when the user navigated out of the app would cause an exception on restart ( Items collection must be empty before using ItemsSource.)
  • Fixed FilterMenu_Tap() exception – moved more code into try/fail entry
  • Fixed issue where EpisodesList_ItemCheckedStateChanged failed to find references to buttons
  • Fix for Italian customers with the March date issue (updated all parse routines)
  • The promotion via email was missing the link to the RSS media file
  • Added lots more debug information for when the user made changes to settings
  • Tips not resetting properly
  • Delta in log entries was wrong
  • Issue with permanent filter requiring double press of back button to get out of programme page
  • Fixed Filter text on program page overlaps status dots when in filter mode
  • Updated to Telerik Q1 2014 Controls
  • Compiler directives were not set for “Release” code for supporing modules
  • Downloaded archive wasn’t being removed after backup/restore (added code to strip out any .dat files to avoid aggregating backups)

Version 2.0.0 – 3rd March

  • Added playlists support to Podcast Lounge
  • Changed the UVC to be more in keeping with the core system apps – press and hold on UVC now works
  • Removed “open” menu and replaced with lesser details button
  • User can no longer press and hold to create the menu entry
  • Fixed issue with Rowi menu loading at different positions on tap
  • Added support for content:encoded RSS elements
  • Added HTML capable podcast information page and on settings
  • Added ability to sort favourites by new count or downloads count
  • Added Smart Playlist templates
  • We now better detect backgroundagent shutdowns in the player UI
  • Added new Rowi menu for favourites on the main panorama page (providing pin, remove and settings options)
  • Added ability to play video podcasts using the backgroundaudio agent (thus avoiding the screen killing the video feed)
  • Added additional controls to jump through the podcast in 1m and 5m steps as well as restarting and finishing early
  • Added description page accessible from ROWI menu and player page
  • Fixed bug with Rowi menu appearing in random vertical offsets on page
  • Added support for sharing a podcast detail over email
  • Ability to scrub playback position for both audio and videos
  • Corrupted video files now warn the user when playback fails
  • Revamped options, help and tools menus from the main UI
  • Added ability to get to playlist from the play screen (tap title)
  • App now recognises when the RI agent has run whilst app was still open and updates history, favourites and warns user (not handled well previously)
  • Fixed a problem with the podcast minutes display being incorrect
  • Fixed lockscreen bug
  • Image loading animation is suppressed when load is successful
  • URL My Library has been renamed to be more clear to users what it is.
  • URL add routine now also checks for itunes references and produces an error
  • Added ability to only sync podcast feeds without downloading under RI task
  • Added support for default playlists and ability to reset
  • Added option to autoplay playlists when generated
  • Added ability to override background downloading of individual favourites via settings menu
  • Playlist generation now performed on a separate page as a background worker thread
  • Added ability to backup/restore in debug mode
  • Fixed options list nullreferenceexception bug
  • Fixed background worker thread already running bug
  • Fixed filtertap bug
  • Added ability to reset tips
  • Adjusted tips to be a per-session rule only
  • Added user option to revert back to 30s stepping increments on playback controls
  • Adjusted the useragent attribute which caused some users to get accused of tethering
  • Added ability to reorder playlist entries via the menu
  • Added ability to select all episodes, and ability to mark block as un-played
  • Added appending of downloaded episodes that no longer appear in the server feed’s RSS
  • Added better support for remote file playback issues
  • Rebranded SkyDrive to OneDrive
  • Added a new tutorial feature
  • Addressed major bugs when PL was used in flight mode
  • DL summary now shows collection sizes by programme

Version 1.9.6 – 13th December CURRENT

  • XMLValidator improved to remove leading CR/LF entries using TRIMSTART and fix parse error with FireHouse podcast
  • Addressed bug where the background RI agent would download the oldest podcast if the user had selected to limit downloads to 1 or 2 episodes (works when set to 3)
  • RI Agent XML is now properly validated prior to reading
  • Added ability to launch by URI link (podcastlounge:mainpage)
  • Further improved the reliability of the RI routine – only processes the RSS once

Version 1.9.5 – 5th December

  • Updated the routine for the image proxy to better handle filenames with escaped spaces
  • Bug with downloading non-favourites (keyname is getting lost) fixed
  • Offline files were not getting updated in the episodes list if the user navigates back from player page after last episode has played
  • Offline file tag on player page was not getting updated when the last file was deleted in a continuous playback state
  • Adding authorised podcasts under the “my library” interface didn’t work (keyname was being reset in-between setting password and downloading RSS)
  • More resilient to duff podcast settings files – repaired without user being notified
  • Podcast episodes list now shows the cache first before updating over the network which should significantly improve episode load performance. Any change in UI will cancel the update.
  • Position of download summary page list is now preserved when tombstoned
  • Adding a new podcast with an invalid URL structure now shows a proper error rather than a notice to send a debug email report
  • Returning to the player screen sometimes didn’t update the offline status of a podcast after it had been deleted (it’s because we are now closing the player)
  • Added some additional status reporting for the resource-intensive  task within settings – this status is persisted between sessions using the INI file
  • Improved the settings UI to reflect better differentiation between UI downloads and resource-intensive downloads
  • Fixed RSS parser to better cope with null image references or other URI errors
  • Fixed XML detect routines to deal with incomplete feeds and other errors
  • MountEpisodesFromRSSFileMemoryOptimised is now far more robust and can deal with feeds ordered in different ways (i.e. newest or oldest first)
  • Addressed system-wide bugs in updating the “new” episode counter (we were assuming that the favourite was mounted which caused the update to fail often)
  • Added a catch for Audible AAX files and display a warning saying they aren’t compatible
  • Now detected for GDR3 and remove BlueSmart as it’s no longer needed (fixed in OS)
  • Episode menu fixed for a bug where selection wasn’t registered
  • Options selection debug entry corrected to actually report menu entry selected
  • A podcast completing and closing the player did not trigger the “now playing” menu entry to be removed – fixed

Version 1.9.4 – Maintenance Release – 22nd September

  • Fixed bug with SkyDrive parser and OneNote notebook type
  • Returned to previous version of Coding4Fun (odd artefacts on buttons)
  • Added fix for the ETAG build-headers function which was causing an exception for some podcasts which had odd ETAG responses (giving no internet error)
  • Changed anticacheurl scheme to ifmodifiedsince to see if this improves the issue
  • Now handles HTML redirects
  • Tightened up the history database save routine as it sometimes was given null references, causing it to fail
  • Reworked the overnight downloader RSS episode parser as it was missing lines on some RSS feeds. As a result, null entries would cause an exception in the download history database and orphaned downloads.
  • Startup routine now purges orphaned downloads automatically and silently
  • Importing OPML now updates the newepisode counter

Version 1.9.3 – Maintenance Release – 1st September

  • Added ability to report back isostorage usage
  • Fixed bug whereby we were not removing the .copy file used in the filemododifieddate function

Version 1.9.2 – Maintenance Release – 21st August

  • Fixed bug with OPML pasted text import failing
  • Fixed bug where 7.1 version failed to load GPodder import page
  • Addressed bug where SkyDrive import would fail if there was a JPG or video in the root directory
  • Adding more than one User Library podcast would cause an issue as the GUID is shared!
  • Improved the bug/feedback mechanism on the “My Library” import section.
  • Added support for http://baldmove.com/feed/watching-dead feed which had an odd character escape code in it
  • Buttons in the DB maintenance section are now disabled for the duration of the activity to prevent mis-pressing
  • Added function to clear the transfers folder (within DB Maintenance section)
  • Added fix to cope with Ash Kip and Luttsy episodes load issue (they were using a non-escaped ampersand in the text)

Version 1.9.1 – Maintenance Release – 17th August

  • Now reset the agent tokens if it’s a virgin load
  • Fixed: When searching fails and user retrys, the error message isn’t cleared when search button is hit
  • Changed the NewIndicator within the ProgramClass to simply reflect whether we have a NewCounter > 0 and < 100
  • Removed the editors picks load routine from startup – no longer needed and slows initial load down
  • Removed CAP Microphone and Text-To-Speech capabilities as they were not needed for final version
  • Fixed big bug where episodes displayed in offline state would trigger an exception
  • Improved image parsing functions from RSS to support alternative image structure as found in SavageLovecast
  • Upped the HTTP time-out to 15 seconds

Version 1.9 – Released 12th August

  • Enable the fix for LBC downloads (it’s part of the XML validator routine – GlobRoutAll.XMLValidator) – done
  • Added GZIP download support for the RSS/JSON/XML text feeds
  • Markerdate wasn’t being set for imported OPML entries!
  • EpisodeFileSize was often interpreted as an int, instead of a long!
  • Fixed stupid bug where the debug pivot may still be visible in the Marketplace version
  • Add Twitter handle on the about page with ability to tap to send a message
  • Collections list is now built from an XML configuration file rather than being hard-coded
  • Episode filtering now re-enabled- Fixed bug where if auto-refresh-on-startup wasn’t enabled, pull to refresh wouldn’t work
  • Fixed bug where users were getting a CheckedItem Exception on DownloadBTN_Click – caused by the time taken to create the downloads and the user exiting the page!
  • Updated OPML output to be XML safe- URL parsing made safe (new routine in GlobRouts) – this.ProgWebsite = new Uri(ProgRSSXML.Descendants(“channel”).Elements(“link”).FirstOrDefault().Value.ToString(), UriKind.Absolute); (needs a safe URL parser!)
  • Added ability to create a pin for downloads
  • Addressed bug with BuildNewEditorsPics routine where a Zune catalogue is returned with no entries – added extra check. (System.ArgumentOutOfRangeException: ‘minValue’ cannot be greater than maxValue. Parameter name: minValue)
  • Added new option for auto-download-favs to ignore episodes we’ve listened to before and to ignore episodes we’ve previously deleted
  • Moved OPML import into a secondary modalwindow
  • Added gPodder import button
  • Selecting back on the programme page, when not in epsiodes view shouldn’t cancel the filter, it should just close the page
  • Favourites refresh did not show toast when there was no internet connection
  • Download tile pin menu will now be minimised if a tile has been pinned (less useful and shouldn’t be so prominent)
  • Moved favourites refresh option into “general” tab under options
  • Added ability to kill UVC from the main panorama via a context menu
  • Added menu facility to turn on/off and set the auto-cleanup-facility
  • Fixed bug where on continous playback, subsequent podcasts did not get a history entry created for them. This also caused issues with the UVC which couldn’t recognise what was playing
  • StreamFileFromIsoStore was unsafe in many places – the stream wasn’t being closed properly!!!!- Added support for SkyDrive import and export functions
  • OPML interpret function now checks for duplicates and warns the user beforehand
  • Generated OPML was missing the encoding attribute at the start causing Tiesto podcast to fail- Number of new episodes now persists between restarts
  • Default Filter and sort settings now apply to the opened favourite
  • Moved the login/authentication details up on the programme settings page
  • Added new panel to delete/manage the app’s databases – negates need for user to re-install- Program stub save routine was very sensitive to null references for images – fixed
  • Programmes page now correctly identifies an authenticate podcast and gives the option to add credentials
  • Fixed odd bug with MountSideCarToken where the prefix would be incorrectly trimmed
  • Transitioned across to new .NET HTTPClient which offers full timeout support avoiding the TaskTimeout routine which killed authentication notification data
  • Fixed a bug where authenticated podcasts triggered the routine to write the favourite out to file would fail (Logo = null)
  • Secondary podcast tiles on the start screen now get a counter that updates when the main podcast list is refreshed
  • Podcast Lounge now has a counter tile for the start screen
  • Changed download cleanup to use the file creation date, not the pubdate – hadn’t considered the scenario where a user may have downloaded an old episode triggering the app to cleanup immediately on startup and remove dls
  • Made SkyDrive import/export routines WP8-only for the time being
  • We now update the tile counters when the UI has marked an episode as played in full + same for BackgroundAgent which mounts favourites list to update
  • No longer stripping out the episodes when we add a favourite into to the stack as this screws with the GetNewEpisodesRoutine
  • Continuous playback now skips episodes that have already been played in full.
  • Fixed bug where downloads were showing as new, even if they were not technically after the marker-date (lots more news in epsiode list vs what the tile counter said)
  • RI Agent is now able to process authenticated podcasts
  • Moved HTMLAgilityPack out of the CommonLibAll and into the main UI (increased memory purposes)
  • Number new downloads was shown as 9999 – fixed
  • Fixed bug where pasted OPML import kept asking about overwriting existing items
  • Upped the DownloadSummary to only categorise by letter when there are more than 12 entries
  • Download summary text now lists new episodes, not downloaded episodes
  • Potentially addressed with nullreferenceexception crash when opening DownloadHistory page (onnavigatedto)
  • Fixed bug whereby the SelectedProgObject wasn’t restored correctly on tombstone because it was object-linked to a favourite which had its episode references removed on tombstone
  • Dealt with podcast that had carriage returns in the title (RSS import from string)
  • PositionBarUpdate_UI_Timer_Fire updated to cope with EpisodeToPlay == null- Issue when play podcast with continuous playback + screen off. Wait for Podcast to finish. Unlock phone and player will be left showing the wrong podcast – Fixed
  • Fixed issue where the podcast episodes list position wasn’t remembered very well (we saved the top most item, but the scroll function was lazy and scrolled it to the bottom)
  • Fixed Open Test podcast and play continous with screen off. Wake PL up and go to PC Pro Podcast favourite – Episodes page should show, but doesn’t
  • XML validator wasn’t firing on all XML parse events
  • Fixed regression on ShareLinkTask which was causing a null reference exception (SafeStringToURL was wired to return a null!)
  • When setting a favourite, we were linking it with the current object, rather than creating a new one. When the app was tombstoned, we would get an error when returning to the episodes list as well as an incorrect numbernew indicator
  • Multi-selecting episodes and setting played flag didn’t result in the favourite updating correctly

Version 1.8 – Released 21st June

  • Fixed issue with Chandra XML feeds failing due to an un-expected character. Added new sanity check routine prior to XML Parsing
  • Adding podcast by URL now disables the button to prevent accidental additions
  • Added ability for app to step to the next podcast on the list if a newer episode exists with option in settings to enable/disable
  • When a podcast stream fails, the play position wasn’t being saved when we reset the backgroundagent
  • Fixed issue where the filesize wasn’t set causing the BuildTransferPreference to return an incorrect parameter. Added HTTP filesize check beforehand and tweaked function.
  • Playlist code inserts new episodes into the ZuneHistoryFile + also needs to ignore if the podcast has already been played!
  • When importing an OPML, the export OPML button remained active – changed to be disabled
  • Updated the auto-download function not working on Windows Phone 8 message to be more clear on why it doesn’t work
  • Fixed bug where returning to the categories list causes an exception
  • Added support to better handle podcast episodes which don’t have a title (EarthCore)
  • Fixed exception in LoadProgPanic() where we were attempting a go-back, but it was actually blocked for some reason
  • Fixed bug whereby the panorama wouldn’t be properly updated after a tombstone
  • Addressed the flickering issue for the ApplicationBar when first opening
  • Added a timeout for downloads
  • When opening a pinned programme which is offering no episodes, the multi-select menu button remains (try on 1xtra dubstep download) fixed
  • ConvertToLocalDateTime() now handles dates where the day-of-week is wrong (we remove it as it’s redundant)
  • Addressed issue whereby memory would be compromised with lots of Russian podcasts containing 2mb image files
  • Added additional note to the download settings page regarding downloads >100mb
  • Fixed bug where Favourites containing episodes would get tombstoned
  • Added support for HTTP conditional checks to avoid wasting bandwidth downloading RSS feeds + new sidecar format for cache files
  • App now refreshes favourites on startup and shows where there are new episodes since the podcast was created
  • Issue with double-taps on selecting a favourite from the start screen (fixed with TryCatch)- StripProgNamePrefixFromTitle was incorrectly chopping the episode title down
  • Addedmark as played button (for multiselect) in the programmepage episodes view
  • When opening a favourite, we no longer link the selected item to the favourite object, but choose to create a new object based on a replication (so we don’t clear the episodes list unnecessarily)
  • Need to show the settings area even in trial mode- Added ability to mult-select podcasts and set as played
  • Updated WP8 binaries to contain RadControls Q2
  • Added option to enable press & hold context menus and tap context menus from within settings
  • Added support to associate Podcast Lounge with .OPML files allowing launch and import
  • Added option to delete downloads once they have finished playing
  • Added option for continuous playback
  • Moved the favourites update code into a new BackgroundWorker to improve performance
  • Converted toggleswitches to checkboxes in settings & re-categorised some entries
  • Fixed fact we seem to ignore the variable that controls whether 1, 2 or 3 episodes are retained!
  • Fixed regression with loss of performanceprogressbar
  • Downloads shown in offline mode aren’t ordered by pubdate
  • Fixed problem with favourites update progress bar completing before activity had truly finished (ASYNC)
  • Search label/panorama title has tilt when it shouldn’t
  • Catalogue filter didn’t display correct filter when returning from a specific programme
  • Back button fails on the first press from within the featured catalogue
  • Downloads are now filtered by pubdate
  • Cachefiles that are still current now have their CreationDate reset if the server is saying they haven’t changed
  • Auto-deleted episodes are now removed from the downloads area page correctly
  • Last entry in the playlist wasn’t being correctly deleted as file was still locked
  • Favourites update message now fades in
  • Corrupted cachefiles are removed as a matter of safety
  • New menu wasn’t tilting within the play history section
  • Continuous playback now tracks removed downloads better
  • When building a transfer with no filesize data, the routine wouldn’t wait before the gethttpfilesize routine completed
  • addressed with await
  • Bug in CreatePlayToken routine where if the duration isn’t set, it balks meaning that the end-state is lost
  • Added code to differentiate the sync warning for GDR2 users (we don’t show the message if user is on GDR2+)
  • Corrected video progressbar position & set fill to avoid clipping edges
  • Fixed continuous playback causes some issues when the screen is off
  • episodes list does not refresh with lots of episodes stuck on “playing”
  • Suppressing the playback button for episodes that are playing*
  • Added some additional code to cope with DownloadHistorySum errors
  • Added further belt-braces improvements to pulltorefresh (disable when navigating away from page)
  • Millisecond reporting within app was wrong! Should have been TotalMiliseconds
  • Favourites list, epsiodes list now tilts on tap
  • Rowi menu now opens on press and hold too (for consistency)
  • Search button didn’t disappear within the collections view when search is enabled – fixed
  • Moved back to PerformanceProgressBars again (and moved WP8 version to point to version 7.5 toolkit)
  • Upgraded to latest official Telerik release 2013 Q2
  • Added support to clear image cache on first loadup

Version 1.7 – Released 25th April

  • Fixed bug whereby the Science and Video list caused a crash in ImageCacheConverterLow (becuase a null entry was passed)
  • Fixed bug where there was a directorynotfoundexception in CreatePosToken() routine – added check routine to create a folder if one doesn’t exist
  • Made LoadStringFromfile more robust – if an exception occurs, it is trapped and an empty string is returned
  • Addressed problem whereby a null reference image in the zune catalogue would trigger nullreference exceptions in the image cacher, favourites save routine and pinned station routine
  • Addressed issue where a html placeholder crashes image.setsource within CacheImage(object input) (ImageCacher class). We now catch the exception within the despatcher.
  • Added some code to more gracefully deal with a navigation to player.xaml and a NullReferenceException crash
  • Made the add new podcast more robust with better error checking, authentication checking and the ability to search an html file for an rss <link> tag
  • Episodes list now appears by default on any favourite podcast
  • Favourites list now appears as the first panel on application load
  • Episode download message will only nag once per programme page load – check is also only once per programme page load
  • Significantly improved performance on devices (by asking Zune servers to resize the image server-side!)
  • Episodes now appear first when opening a favourite
  • Moved the favourites panel to the first entry in the panorama when favourites have been set
  • Improved text around add URL/feed option to encourage users to send valid URLs
  • Alphabetical ordering of favourites
  • Add explanation to storage tab about being unable to save to SD card
  • Episodes list now shows downloaded items if there is no internet connection
  • Issue unresolved where “BBC Introducting Cornwall” has a thumbnail that works in iTunes results, however the real RSS feed has a corrupted image reference. Backup placholder overwrites the itunes thumbnail. – Fixed
  • ImageCacheConverterLow now takes the full path to the programme object so that it can be more selective on available files – downloaded list was often had placeholder icons while a valid larger cache image existed
  • Fixed bug whereby plugging in a headphone and unplugging it during video playback would pause the video, but not update the player control
  • Fixed bug whereby pausing video and resuming did not correctly restore the playback position (regression?)
  • Updated the welcome page with a new message
  • Added ability to set an episode as read/unread on right click menu
  • ImageCacheConverter now better handles nullreferences passed to it
  • Fixed exception triggered when user double-tapped the welcome page button
  • A zero search term will now flag up a warning message asking the user to type a search term in
  • Added better exception handling routines to cope with the pin function failing
  • Fixed RebuildApplicationBar and UpdateEpisodes panel bugs which caused a crash if there was no internet connection
  • Added new cache-defeating code (that works this time)
  • Added ability to import and export favourites to and from OPML files
  • User can now list categories by the sub-category to get a more finely tuned list

Version 1.6 – Released 21st March

  • Added video podcast support including playback position saving
  • Addressed podcasts which did not contain a duration key (caused an exception)
  • Sorting podcasts by date now enforced – Wired video as an example
  • Added storage of video position to podcast
  • Moved the storage of MasterObjects during Application_Deactivated to the top of the execution list
  • Fixed an issue where a tombstone during startup would wipe the MasterObjects array with un-constructed objects – could be the main reason we lose favourites etc.
  • App startup wouldn’t resume properly if it was tombstone before the app had finished initialising
  • Fix for incorrect episode duration read-out
  • Returning to a podcast playing from outside of the app causes the progressbar to no longer increment
  • Fixed bug with the categories list tap event receiving a border control, not the text within
  • Added support for native WP8.0 packages
  • Added audio/video podcast designation for zune catalogue entries
  • Smaller images now reference a new imagecacher converter which lifts a cached image if one is available (alterntatively, goes online)
  • Fixed issue where RSS entries were missing the remote MP3 filename – we now remove them (Petros & Money)
  • Corrected issue where remaining video/audio was incorrectly displayed within the player upon returning to a part-played episode
  • Now list seconds remaining if episode has less than 1minute left on episodes list
  • Added support to suppress exception on double-task launch
  • Finished video podcasts didn’t return the phone to portrait
  • Added pull-to-refresh for episodes list
  • Added support to detect rogue bluetooth disconnects
  • Fixed regression on favourites context menu crashing app
  • Fixed Thhis spelling mistake in crikey messages
  • Re-arranged the settings section by splitting out the sync stuff into a separate tab
  • Returned favourites list to a listbox from itemscontrol
  • Removed page transitions as they were causing System.ArgumentException: Value does not fall within the expected range at MS.Internal.XcpImports.CheckHResult(UInt32 hr) errors
  • Fixed issue where history podcasts got muddled if the episode name was the same

Version 1.5.3 – Released 2nd March

  • Improved cache routine code which was causing conflicts with some feeds (resulting in them not loading)
  • Changed background agent code to be non-dependent on blocking network check when playing offline files (will address random “crikey” errors when playing offline files)
  • UVC controls now scrub properly
  • Fixed Myfeeds list not being correctly aligned with menu bar when heavily populated
  • Corrected issue with >100mb files being blocked from download. Error message improved. These downloads must have wifi and external power to work.
  • Other performance, exception management and UI improvements

Version 1.5.2 – Released 14th Feb

  • Added support for RSS files that don’t have an image href entry
  • Fixed bug in favourites context menu crashing app
  • Fixed bug with loading RSS which had a blank description, no image reference (description now has a placeholder)
  • Website link routine in LoadRSSFromString seemed to accidentally overwrite the RSS reference meaning the entry fail to get RSS on future polls
  • Updated ImageCacheConverter : IValueConverter to better handle null responses (hopefully avoid the SetSourceInternal NullException error)
  • Fixed the placeholder image to use local file rather than remote file
  • Zune chunk parser was outside try/catch loop meaning a failed parse caused an exception
  • Added support for corrupt search results with a new message
  • Adjusted alignment of the UK only podcast message on the programme page

Version 1.5.1 – Released 12th Feb 2013

  • Fixed problem with RSS feeds being cached and not updated

Version 1.5 – Released 7th Feb 2013

  • Added full support for non-BBC catalogue using new 3rd party provider
  • Improved tombstoning support (may stop lost downloads problem)
  • Better support in dealing with failed downloads or 0 byte files
  • Added new editors picks routine to generate a week/week listing
  • Now using async methods for file downloads
  • New database structure underpinning app for faster performance
  • Improved performance of download manager
  • Object orientated programme and episode objects
  • Added code to deal with endless buffering – timeout at 5 secs – now warns the user
  • Episode position is now saved for future resumption
  • Fixed regression whereby the “new” tag was not recovered correctly from history
  • Added support to allow locked episodes to be deleted (by unmounting the zune player)
  • Added select menu to the download history page (previously hidden)
  • Enabled scrolling of the programme listing on the Prog/Episodes page
  • Reformatted track play times to better match Zune
  • Added hyperlink to the programme website
  • Agent event handler was still attached when closing the player screen
  • Playback status now repored in the episodes/download tables
  • Fixed inability to mount FeedBurner feeds
  • Fixed bug with failed downloads leaving a 0 byte stub file in the downloads area
  • Added session-based cache management
  • Playback is now correctly resumed from the same position
  • Ability to get to the parent programme from the downloads area by pressing/holding to reveal a menu
  • Programme epsiodes page no longer shows a select menu when there are no episodes to show
  • Built new episodes list status routine which will report if an episode is playing back or paused
  • Upgraded favourites and featured list on Panorama to scroll the header
  • Adjusted all text alignment through the app using MetroGridHelper
  • Upped the number of editors picks from 6 to 8
  • Stripped out status of epsiodes with duration of 0:00 or filesizes less than 512kb
  • Tombstoning wasn’t rehydrating the settings object causing random nullreference exceptions when a settings entry was called out
  • Consolidated file move routines into FileSystem object
  • We now properly support the unsupported timezone stub at the end of an RSS publish date entry (previously causing delays in parsing the Episodes list)
  • Added support for users to add their own podcasts in “My Library”

Version 1.4 – Released Dec 2012

  • Added ScheduledBackgroundAgent preprocessor directive as the ScheduledBkgndTaskAgent is not allowed to see any XNA assemblies, thus CopyingFromXAP function (which depends on XNA) is not permitted. These specific function calls are removed in code, as well as the XNA assembly reference within GlobRout
  • Added check for 256mb devices so we can disable the background autosyncing
  • Fixed bug where if user pinned the programme whilst the episodes were still loading, then the app would crash with a nullreferenceexception
  • Added social media commenting support (icon in the player window)
  • Fixed bug where multiple RSS downloads would be instantiated, causing a nullreference to be passed to the player window. End result was a IdentifyBestMP3Source exception.
  • Made UpdateEpisodePanel more robust in case we are passed a null reference for episodes
  • Added notification on startup to inform user that episodes were downloaded in the background
  • Added status text to the download summary sheet on number of episodes that are new
  • Reprofiled common routines into a separate library
  • Removed references to the BBC
  • Addressed bug whereby transfers downloaded while the app was closed were often accidentally deleted on restart
  • Added fall-over protection on loading and saving the download history file
  • Deleting an active download didn’t force the download manager summary page to update
  • Changing download restrictions in settings doesn’t populate through to active downloads!
  • Added number-in-bubble for favourites sporting new downloads/unlistened-to content
  • Ability to mark programmes as played / New entry allocation isn’t consistent – download. Close app. Reload. New text isn’t shown. Sorted.
  • Added auto-sorting of episodes in download manager
  • Updated to account for the new style editor’s favourites HTML listing. Added code to support purging the cache if it’s a new load.
  • Downloading the same file twice results in the history getting a duplicate entry
  • Updated transfer text to say “Downloading” instead of “Transferring” to make it more obvious
  • Check there is sufficient space in IsolatedStorage before downloading – Check now implemented
  • Fast forward and rewind buttons don’t work like the ones in Zune….  UVC doesn’t appear to work with FF and FR?
  • Need to clear the image cache, OPML and highlights file from caches
  • Downloading a new file, navigate to downloads area and live downloads section, watch complete, swipe to summary page, hasn’t updated to show new downloads against programme
  • Download agent needs to make sure it’s got enough space on IsoStorage to download to
  • Fixed bug whereby when opening a programme and setting a favourite during the RSS load would result in an empty list
  • Fixed bug where cancelled downloads show up as Failed
  • Updated the transfer text for blocked transfer to reference settings
  • Clearing the download cache didn’t clear the download history
  • Downloading a non-existent MP3 within the UI produces odd results (Best of Today) (Added a message to say download had failed – also spotted issue with incorrectly labelled downloads)
  • May need to consider some warning text on the Settings entry to do with the background download agent – may never run if there are too many agents registered on the phone // http://msdn.microsoft.com/en-us/library/hh202942(v=vs.92).aspx
  • Blocked 3G downloads were being reported as “Transferring” rather than telling us that they were waiting for WiFi
  • Improved the tip on the episodes area to include a checkbox control which stops the user from being bugged from then on
  • Fixed the background of the data status bar in settings
  • Added some text to explain the 3G download restriction
  • Fixed how the download progressbar is represented (position and background adjusted to make more clear)
  • Added BBC Credit
  • Added support for the old legacy Favourites format (which is now moved to xML – see notes at the end of this file)

Version 1.3 – Released 16th June 2012

  • Aid for discoverability of multiselect screen for new users (added a messagebox reminder)
  • Added tilt effect to the jumplist
  • Added background download engine linked to App.CS
  • Fixed ContextMenu theme (under light)
  • Fixed display of programme graphic 300×300 which was far bigger (dimensions) than expected – set to stretch uniform
  • Dealt with exception tracking on the player screen for fast forward and fast rewind
  • Fixed problem with BBC server-side images
  • Episodes list is rebuilt every time the page is refreshed!
  • Bug with rewind not using totalseconds and resetting early
  • Track finishing doesn’t stop and restart the track
  • Show the filesize for each episode
  • Panorama position should be saved on tombstone
  • Podcast library delta date on settings page isn’t saved on tombstone
  • Scroll position of listbox positions is not retained on tombstone
  • Panorama page following tombstone doesn’t restore the applicationbar menu!
  • Tombstone restoring on the downloads summary page doesn’t work + episode detail page too
  • No downloads message on download detail page incorrectly justified
  • Download episode selection/context menu wihtin ProgrammePage should be disabled if on trial
  • Playback transition to downloaded file (from streamed file)
  • Launch welcome should include update history button (linked to website)
  • Update the in-xap podcast library
  • Downloads underway when cancelled, don’t automatically trigger the queue to be renewed
  • Deleting all the downloads should trigger the downloaded programme summary jumplist to refresh
  • Player doens’t handle getting to an MP3 well. Should probably stop and return to the start when it hits the end?
  • Working message for large-list episode selection and download
  • ProcessQueuedBackgroundTransfers – Bug – I’m deleting a reference. Memory is unsafe.
  • Queued downloads loaded when the application restarts don’t show the transfer bar properly – CatchUpDownloadHistory()
  • DownloadHistory “OnNavigatedTo” routine may be using an EpsiodeStruct unsafely
  • General concerns that the downloadhistory originally starts off as a structure that linked to the MasterTable. Upon tombstoning etc., the linkage is lost somewhat. Impact? Every time you update the MasterTable episode with progress, you’ll need to reciprocate for the DownloadHistory.
  • After tombstoning when the downloadhistory and episode list are no longer linked – do all download manipulation routines take into account that two memory locations need to be updated every time? UpdateBoundTables seems to do this right!
  • If downloads are completed when the app isn’t loaded, then there is legacy status text etc. that isn’t cleared.
  • Dealt with the “System.InvalidOperationException: The background audio resources are no longer available”. Added a routine to close the instance of the BAckgroundAudioPlayer.
  • Episodes list needs to be right-cropped (seems to fall off screen)
  • Add a warning for the option to delete the cache
  • If you clear the download history whilst downloads are underway, you get orphaned files
  • Alignment of the progressbar on lhs is wrong
  • Probably need to create a generic routine that blanks a download status?
  • Pull the power mid-way through the download and the progress bar resets to zero!

Version 1.2 – Released 10th May 2012

  • Fixed problem with BBC changing their image locations and formatting (SourceCorrectProgImage)

Version 1.1 – Released 1st May 2012

  • Added improved support to trap tombstoning wake-ups (and improved fast resume)
  • Converted the stations list to a list of strings instead of a struct and simplified XML parsing
  • Fixed playback volume
  • Fixed exception where the RSS download was off pulling information from the web and the user navigated away. Exception fires when the timer trys to update a non-existant page.
  • Added a RTMOD to dictate whether we log image cache manager stuff
  • Added exception tracking to CheckVisibleEpisodeIsPlaying & CheckIfAgentIsPlaying to check for exceptions (Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.get_PlayerState() at BBCPodcastPlayer.Player.PlayBTN_Click(Object sender, RoutedEventArgs e))
  • Added exception tracking to PositionBarUpdate_UI_Timer_Fire to check for exceptions (Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.get_Track() at BBCPodcastPlayer.Player.PositionBarUpdate_UI_Timer_Fire(Object o, EventArgs sender) )
  • Added exception tracking to CheckIfAgentTrackMounted to check for exceptions (Microsoft.Phone.BackgroundAudio.BackgroundAudioPlayer.get_Track() at BBCPodcastPlayer.GlobRout.IsAnythingPlaying() at BBCPodcastPlayer.MainPage.BackgroundAudioPlayer_StateChngEvent(Object sender, EventArgs e))
  • Added check for EULA agreement acceptance to avoid exception if the entry is already there (double click>) (System.ArgumentException: Value does not fall within the expected range. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(String key, Object value, Boolean add))

Version 1.0 – Released 9th April 2012

  • Initial launch