0.4.6
=====

Brief summary of changes since 0.4.4:

- Implement optional UPnP Search action. This is not only a must have feature
  for a commercial MediaServer but is also a big first step towards proper
  XBox 360 support.
- Simplify Browse action handling.
- Simplify MediaServer plugin implementation.
- Make sure autostart dir exists before attempting to write to it.
- Fix a potential crash that is trigered by MediaContainer reporting incorrect
  (higher) number of children.
- External:
  - Work around (vala) bug#602003.
  - Optimizations and code clean-ups.
- Tracker:
  - Provide an efficient Search implementation using Tracker's search API.
  - Minor code clean-ups.

Dependency-related changes:

- Require gupnp-av >= 0.5.2.
- Require gupnp-vala >= 0.6.2.
- Require valac >= 0.7.9.

Bugs fixed in this release:

600256 - Segfault when trying to access a stream

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>

0.4.4
=====

Brief summary of changes since 0.4.2:

- Provide a gstreamer-based MediaRenderer plugin. This is mostly code stolen (
  and heavily adapted) from gupnp-media-renderer except that it doesn't depend
  on libowl-av and/or gtk+.
- More ease for MediaServer implementors.
- Better error handling.
- Make sure no message is suppressed until we know what level of console output
  user wants.
- Make use of vala's async support to simplify code quite a bit.
- Plugins should load xml files from source tree when built with
  '--enable-uninstalled' configure flag.
- Build with no optimizations in debug mode.
- Use closure table to speed up object lookup and deletion.
- Add build option for SQL debugging.
- Workaround a crasher bug (#3774) in sqlite 3.6.12.
- Use vala's static client D-Bus syntax.
- Early ignorance of disabled plugins. This not only speeds-up startup a bit but
  also rids us of redundant debug messages.
- MediaExport:
  - Nicely handle unavailability of gstreamer's playbin(2) element.
  - Fix a potential crasher.
- Tracker:
  - Use multidimensional arrays to deal with search results. This combined with
    static client D-Bus syntax gives us quite a speed boost.
  - Handle item creation error.
- External:
  - Allow applications to provide custom thumbnails for items.
  - Support pixel-aspect-ratio properties.
  - All D-Bus operations are now done asynchronously.
  - Make use of plugin icon if provided.
  - Move magic string substitution to core so other plugins can benefit from it.
- Lots of other improvements and bug fixes.

Dependency-related changes:

- Require and adapt to libgee >= 0.5.
- Require and adapt to valac >= 0.7.8.

Bugs fixed in this release:

597276 - Rygel crash on startup
587649 - thumbnails not published for external media servers
589959 - External plugin should query media servers on demand
598005 - unable to load media-tracker plugin

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
Jens Georg <mail@jensge.org>
Thijs Vermeir <thijsvermeir@gmail.com>

0.4.2
=====

Brief summary of changes since 0.4.1:

- Ability to specify verbosity of console messages by a number between 0 to 5.
- Be able to survive unavailability of D-Bus session bus. This should make it
  easier to setup Rygel on headless NAS machines.
- MediaExport:
  - Provide duration and date of media.
  - Improved guessing for type (UPnP class) of media.
  - Re-harvest metadata when a file/directory is modified.
  - Speed-up browsing (twice as before).
- rygel-preferences:
  - Fix enabling/disabling of widgets.
  - Copy the desktop file from correct location.
- Mediathek and GstLaunch disabled by default in the user configuration.
- Add GstLaunch to maemo configuration (disabled by default though).
- Put dbus-glib-1 to the list of vala API dependencies.
- Fix seek headers.
- Be more verbose at the end of configure.

Bugs fixed in this release:

596500 - Mpeg TS video files are mistaken for audio files
596213 - Wrong state for checkboxes
596327 - Enables some weird plugins by default
596330 - Missing some metadata

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
Jens Georg <mail@jensge.org>

0.4.1
=====

A micro release that fixes some important issues found in the previous release:

- Update the Rygel D-Bus service paths everywhere.
- Ignore two ignorable errors.
- Initialize sensitivity of trancoding checkboxes to the same value as that of
  "Transcoding Support" checkbox.
- Fix seeking in transcoded streams. Without this fix, the success of seeking
  was based on pure luck.
- Correct headers in some files to reflect the correct license: LGPL.
- No need for DVB configuration anymore.

Bugs fixed in this release:

596211 - Error exiting the prefs
596213 - Wrong state for checkboxes

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
Jens Georg <mail@jensge.org>
René Stadler <mail@renestadler.de>

0.4
===

Brief summary of changes since 0.3:

- Rygel is no more just a MediaServer but rather a collection of DLNA (UPnP AV)
  services (devices in UPnP speak).
- Port to new GUPnP APIs. The biggest advantage of that is that we now have
  dynamic network support, i-e Rygel can attach/detach to/from a network
  interface as it goes up/down.
- Support for time-based seeking in transcoded streams.
- Random tweaks to transcoding pipelines.
- Provide a DBus service providing two functionalities:
   * Ability to tell Rygel to shutdown. Starting of Rygel is automatically
     handled by D-Bus since a .service file is provided by Rygel.
   * Ability to tell Rygel (MediaExport plugin actually) to (un)export URIs on
     the fly.
- Implement enabling/disabling of UPnP in the preferences.
- Configuration through command-line options.
- Use a .ini configuration file rather than gconf.
- Special default configuration for Maemo.
- Don't spam the user's config directory and instead keep the description files
  into a separate subdirectory.
- `make clean` doesn't clean the generated C files anymore.
- Remove "all rights reserved" part from all copyright headers.
- Remove integrated DVB plugin as DVBDaemon now implements the external plugin
  interface and hence dynamically glues to Rygel, just like PulseAudio.
- New classes to further ease the plugin implementation.
- (Un)pause the SoupMessage at the right time. This was causing a lot of delays
  when playing media on Sony PS3.
- Bitrate is supposed to be in bytes/second. Not really but tell that to writers
  of UPnP specification.
- Expose transcode formats in the GetProtocolInfo's source argument. This should
  make Sony Bravia TVs happy.
- Transcoder URIs are now sorted according to their distance from the original
  format.
- Provide "contentFeatures.dlna.org" header in the HTTP responses.
- Provide DLNA transferMode header in the HTTP responses.
- Only advertise internal URIs on local loopback interface.
- Replace 'ip' config by 'interface' so users can bind Rygel to interfaces
  rather than IP.
- Allow plugins to provide thumbnails.
- Add thumbnails (if available) for each item if none provided by plugins. This
  works both on the desktop and Maemo.
- Suppress all C compiler warnings by default. These warnings are mostly useless
  for us since almost all C code is generated.
- Preference dialog is now more like a GNOME preferences dialog.
- Provide .desktop file for preferences dialog.
- Shave the build output.
- GstLaunch: New plugin that exposes gstreamer pipelines described using
  familiar gst-launch syntax in the user configuration.
- Tracker plugin:
  - Nicer default title.
  - Better detection of Tracker availability. Apparently ubuntu folks think that
    providing a .service file is wrong.
  - Better titles for top-level folders.
  - More usable hierarchy: Browsing by artists, albums and tags.
- Folder plugin:
  - Rename to MediaExport.
  - Nicer default title.
  - Use the new Rygel classes to extract, export and save media metadata.
  - notify about updates to containers.
  - Skip files/folders starting with '.'.
  - Avoid crash if unknown file is found.
  - Delete gone directories on new start.
  - React on deletion of files.
  - Add recursive file monitoring.
  - Provide simple and easy options to add and remove files and folders from the
    preferences UI.
- External plugin:
  - actually use 'DLNAProfile' property.
  - Don't load the plugin more than once.
  - Utilise optional MediaItem properties.
  - Fetch items on demand.
  - Fix critical warnings.
- Mediathek plugin:
  - Fix crash if no config is available.

Dependency-related changes:

- Require gupnp >= 0.13
- Require gupnp-av >= 0.5
- Require GStreamer >= 0.10.23
- Require libgee >= 0.3.0

Bugs fixed in this release:

584649 - Folder plugin should not export dot files and directories
586108 - ID3 information not exported on mp3 files
588034 - Bad durations for audio video files with media export plugin
585986 - Some copyright headers claim "all rights reserved"
585989 - Running "make clean" should leave generated C files in place.
586134 - Tracker plugin fails if org.freedesktop.Tracker can't be activated,
         even if tracker is already running
586243 - GStreamer 0.10.23 required for correct operation of transcoder
587651 - Support for some MediaItem properties missing
587855 - HTTP Error responses not sent
587866 - No way to notify about new sub-containers
588030 - rygel-preferences crashes if user's config file is missing
588162 - Support seeking in transcoded content
589955 - dc:creator never included in DIDL output
589956 - git ignore rules
589974 - Set the bitrate for transcoded resources correctly.
589977 - Rygel not recognised by Sony Bravia televisions
590643 - refactor HTTP request handling code
590702 - Rygel should provide thumbnails for items
591580 - not compatible with Samsung UE46B7070
593228 - [plugin] new gstlaunch plugin

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
Jens Georg <mail@jensge.org>
James Henstridge <james@jamesh.id.au>
Thijs Vermeir <thijsvermeir@gmail.com>
Ole André Vadla Ravnås <oleavr@gmail.com>

0.3
===

Brief summary of changes since 0.2.2:

- Transcoding from any format (that gstreamer's decodebin2 can handle) to mp3,
  linear PCM and mpeg transport stream containing mpeg 2 video and mp2 audio.
- Plugin API to deal with user preferences.
- User preferences UI: rygel-preferences.
- New plugins:
   * Folder: Recursively exports folders specified in the user preferences.
   * ZDFMediathek: Exports online media from 2nd German TV station.
   * External: Exports media hierarchies provided by external applications
     through implementation of this spec:
     http://live.gnome.org/Rygel/MediaServer. The first application
     that utilizes this feature is PulseAudio.
- Drop xbox support. It didn't work anyway and we better concentrate on
  implementing standard stuff that it at least worthy of being called "UPnP" (
  at least for now).
- Tracker and DVB plugins are only loaded if their corresponding services are
  available.
- Export of duration for music and video items from Tracker.
- Use HTTP EOF encoding rather the CHUNKED for live streams.
- Ability to build rygel plugins outside it's source tree.
- HTTP proxying only if needed.
- Now that gupnp-av does DLNA profile guessing for us, no need to lie about
  DLNA profile anymore.
- Add a summary after configure.
- HTTServer is now internal API.
- Use git-version-gen to generate package version.
- Differentiate between modules and plugins
- Passive, asynchronous plugin loading. A side-effect of which is that modules
  can now load more than one plugin.
- Differentiate between name and title of the plugin.
- Plugins can now dynamically change their availability.
- Add API to get/list plugins.
- Re-use existing description from user's home directory. This not only speeds
  the start-up but also obsoletes the necessity to keep immutable data (e.g UDN)
  in user preferences.
- Provide gconf schemas.
- Lots of other improvements and bug fixes.

Dependency-related changes:

- Explicitly require and link to libsoup-2.4 >= 2.26.0.
- Don't require Vala (and bindings) in distribution tarball.
- Require gupnp-av >= 0.4.
- Require Vala >= 0.7.3.
- Require Gtk+ >= 2.16 if preferences UI is not disabled.

Bugs fixed in this release:

582173 - git-version-gen: generate versions with - instead of .
577000 - gupnp-av-cp does not like & in uris
576998 - Rygel wants to transcode audio files to video/mpeg
575935 - Add support for duration metadata field
574604 – bug connecting to PS3

All contributors to this release:

Zeeshan Ali (Khattak) <zeeshanak@gnome.org>
Jens Georg <mail@jensge.org>
Henrique Ferreiro <henrique.ferreiro@gmail.com>
Lennart Poettering <lennart@poettering.net>
Marc-André Lureau <marcandre.lureau@gmail.com>
Rob Taylor <rob.taylor@codethink.co.uk>

0.2.2
=====

Changes since 0.2:

- Use the new (0.6.9) Tracker API.
- Priority of gio-based streams are based on requested DLNA transfer mode.
- GIO-based/like asynchronous plugin API.
- Adapt to latest changes in gupnp-vala API.
- Serialization of media objects isn't done by media objects themselve
  anymore, but by a new separate class, Rygel.DIDLLiteWriter.
- Internal API is marked 'internal' so it doesn't get to our (Vala) API.
- MediaObject now derives from GLib.Object.
- Generic AsyncResult implementation, SimpleAsyncResult.
- StateMachine interface that all state machines classes implement.
- Visible performance improvements in Tracker plugin by proper use of Tracker
  APIs.
- Use Filename.to_string() and therefore make Bastien happy.
- Require lastest version (0.1.5) of libgee to use List.slice().
- Don't limit the number of objects returned to a client, let it decide
  that on it's own.
- Proper handling of update notification to the client by use of a very simple
  bubble-up mechanism for containers to signal updates.
- Decrease needed gconf version to 2.16.
- Set application name and therefore make Lennart happy.
- Require latest version of vala (0.5.7) and gupnp-vala (0.5.3).
- Allow multiple URIs for each media items.
- Response for seekable media request is now sent buffer by buffer so the whole
  file is not put into memory.
- Some improvements to build system.
- Lots of other improvements and bugfixes.

0.2
===

The major change after last release (as gupnp-media-server) is the introduction
of a simple yet powerful plugin-based architecture/api: Every plugin:
- is loaded into a separate MediaServer instance.
- can implement any kind and number of resources (currently only services).
- can export an icon file.
- inherit it's ContentDirectory implementation from a base class that does most
  of the UPnP-related work. More improvements on this planned for next release.
- use an intuitive API to easily export media from URIs and live GStreamer
  source elements over HTTP.

Other changes:

- Relicense under LGPL to allow proprietary plugins and ease of moving code
  from/to gupnp libraries.
- DVB Daemon integration though a plugin. Now you can watch live channels from
  your PC on your PS3 for example.
- Test plugin that exports one audio and video item, streaming contents from
  GStreamer's audiotestsrc and videotestsrc elements respectively.
- Better interoperability with Sony playstation 3.
- Announce unavailability to UPnP world on exit.
- Loads of other improvements.

0.1
===

- Initial release.
