v0.3.5 2015-02-16

  * reset-database command
  * set length of a track in the database and expose via Ampache
  * fix album count in Ampache API
  * expose Album cover via (inofficial) Ampache API
  * ownCloud 8 compatibility
  * user interaction needed to start background scan and reload the music view

v0.3.4 2014-09-04

  Thanks to Volkan Geezer (@wakeup) and Yu-De (@pellaeon)

  * switch to aurora.js for JavaScript decoding of music files (ability to
    support more codecs) - currently just mp3 and flac - thanks to @pellaeon

  * make batch rescan incremental
  * make userFolder optional - get rid of wrong type of parameter error logs
  * add check for natural numbers above 0 for track number
  * add --debug switch to music:scan command to list memory usage of each step
  * fix for not working apps/music/#/file/ID routes
  * fix broken expand track list for albums
  * use WebDAV for file access as it provides a better stability and functionality

  # Internal
  * drop unsupported calls to ownCloud private APIs
  * use dependency injection for scan command

  ## Known issues

  * mp3 seeking isn't working

v0.3.3 2014-08-12

  Thanks to Dan Mac (@danmac-uk)

  * Fix undefined index COUNT(*)
    * add a name to the COUNT(*) statement
    * should work with MySQL, PostgreSQL, MSSQL, Oracle, SQLite
  * Fix Ampache URL confusion
    * remove of '/server/xml.server.php'
    * add note

v0.3.2 2014-08-12

  * RESTful playlist API (thanks @wakeup - Volkan Gezer)
  * Updated libraries (AngularJS 1.2.21, angular-gettext 1.0.0, drop jQuery)
  * refactor cleanup method (reduce injected dependencies)
    * move clean up task to separate helper class
  * drop stable5 fixes as they are unused
  * verified support for ownCloud 6
  * prepare use of sidebar and mobile responsive sidebar
  * migrate to ownCloud 7 core CSS
  * add ID to ampache session - fixes issues with the DB mapper (#213)
  * make user folder injectable into rescan method

v0.3.0 2014-08-06

  # General

  * disable share hook, because it delayed the sharing action a lot
  * add index for cover_file_id in albums
  * playstate is now represented in the URL
  * change scan count from 50 to 20 - should fix #172, fix #212
  * remove album cover search on remove of album cover (should speedup deletions)

  # ownCloud 7 related

  * adjusted design to ownCloud 7 (loading spinner, no shadow on icon)
  * fixes to get it work with ownCloud 7 (especially public shares and Ampache API)
  * fixes several typos and minor issues

  # Internal

  * migration from separate AppFramework to core provided AppFramework
  * JavaScript 3rdparty library management is now handled by bower
  * getID3 is update to v1.9.8, which fixes a memory leak - see #212
  * change handling of routes in a proper way as preparation for playlist functionality - GSoC project by @wakeup
  * improved documentation of PHP classes
  * licence header cleanup (shrinked)
  * respect the user ID on update (scanner)

  ## Known issues

  * listen to shared files doesn't work - this is a issue of the ownCloud core and will hopefully be fixed in 7.0.2 and 6.0.5 - owncloud/core#10173

v0.2 2014-04-30

  * handle shared files properly (also fixes mounted storage)
  * albums with same name but different artists or years are now different albums by @leizh
  * cover and track download moved to music app from files app
  * stop scan loop if processed count is greater than total count
  * close the session to enable parallel requests to be processed
  * add notification for skipped tracks
  * the music in the database is now restricted to the user specified path

  * update Sounmanager to V2.97a.20131201

  * fix mobile styles by @jbtbnl and @wakeup
  * fix left alignment issues of artist name and tracks on mobile
  * remove unused code

 Known bugs:
  * seeking in Chromium doesn't work

v0.1.9.1-rc 2014-03-26

  * navigation bar on left is now thinned out for small screen sizes #185

  * fix empty music app #184
  * fix broken play for public shared music files #186
  * fix rendering issues in IE10+ #188
  * fix broken album request in Ampache API #189

v0.1.9-rc 2014-03-25

  * allow public share music playback #124
    * start/stop implementation, filelist is playlist, no repeat
  * mobile styles for phone & tablet
  * search provider for artist, album & track
  * command to rescan the music files from ownCloud console.php
    * Thanks to @leizh
    * music:scan
    * all users or a specific user
  * improved performance on loading of artists (a lot less SQL statements)
  * seek in progressbar
  * redirect from music file in files app to music app (autoplay) on click
  * album art priority (cover, albumart, front, folder, others)
  * step by step scanning (50 on each step)
    * display of scanning progress
  * Chrome now uses HTML5 audio instead of flash fallback

  * Ampache API (unstable)
    * security
      * user can generate passwords to use with the Ampache API
      * ability to revoke those passwords
    * new DB tables:
      * ampache_sessions - session tokens
      * ampache_users - generated passwords
    * Ampache API (ADD and UPDATE parameters are unsupported yet):
      * handshake
      * ping
      * artists
      * artist_albums
      * album_songs
      * albums
      * artist_songs (also supports offset & limit)
      * songs
      * song
      * search_song
    * delivery of music file with ampache token
    * middleware to authenticate user with ampache token

  * fix cover detection - double to single quotes - fixes #134
  * fix integrity constraint violation for shared files - fix #127
  * shorten index names for oracle (max 30 chars)
  * fix SQL statements
  * fix error while fileUpdated hook handling - fix #154
  * Unknown artists, albums & titles now localizable
    * allow and use NULL instead of fixed artist or album name
    * add localized string to represent these albums and artists
    * migration: convert existing 'owncloud unnknown ...' placeholders to NULL

 Internal
  * new URL generation inside the Javascript
  * DB Mapper & Entities:
    * Album added attributes: trackCount, artist (both not filled by default)
    * Album added methods: getNameString (returns an translated string for unknown artists)
    * AlbumMapper added methods: count, countByArtist, findAllByName
    * Artist added attributes: trackCount, albumCount (both not filled by default)
    * Artist added methods: getNameString (returns an translated string for unknown artists)
    * ArtistMapper added methods: count, findAllByName
    * Track added attributes: fileSize
    * TrackMapper: count methods now return actual count and not an array with 'COUNT(*)'
    * TrackMapper added methods: count, findAllByName, findAllByNameRecursive
    * add limit ScanStatus SQL
  * Tests:
    * add L10nStub to properly mock the L10n class of ownCloud core
    * push test coverage to 100%
  * Build:
    * add Makefile command to do PHP unit tests and create the test coverage
    * exclude external PHP files from test coverage
  * Core API:
    * add call to register components to personal settings page
    * fix typos
  * merged l10n extraction to upstream - removed patchfiles
  * minimalized travis-ci footprint
  * CSRF token used for restangular queries
  * AngularJS 1.2.14
  * Underscore 1.6.0

v0.1.7-beta 2013-12-21

 Merry Christmas release

  * increase polling interval for whileplaying - fixes #131
  * fix play icon bug in IE - SVGs are replaced by PNGs in IE - fixes #126
  * FileAction for music files
    * add api call to resolve track by fileid
    * AngularJS route 'file/:id'
    * PlayerController.playFile(id)
    * load fileactions script on every page to register FileAction
  * added input validation for year - fixes some crashes of the scanner
  * fix OC5 issues with MDB2 and Oracle DB
  * fix database restrictions for oracle (#120, #119)
  * fix l10n-compile for non-latin languages - remove jslint warning
  * fix [[ to {{ transition in translations
  * removes second scrollbar
  * fix angular scope issues and css issues

 Internal
  * fix CSS style - remove comma
  * RestAngular 1.2.1
  * fix some global variables
  * fix l10n issues
  * whitespace fix in SQL statement
  * fix some leftovers of the OCA\AppFramework -> OCA\Music\AppFramework change
  * $.placeholder() was renamed to $.imageplaceholder() in master
  * Play indicator beside the track in the album view
  * move MainController to top, so every children can use it's variables
  * make alphabet navigation more dynamic
  * add l10n for PHP

 Known bugs:
  * doesn't play mp3/ogg in IE8

v0.1.6-alpha 2013-10-05

  * L10n support
  * OGG metadata extraction - just works for local files - not for external ones refs #73
  * proper deletion of database cache
  * metadata extraction fix - disable 2GB filesize check in getID3
  * use Flash fallback in Chrome - drawback: just MP3 playback - there is a notification if this is the case
  * fix album art/placeholder race condition
  * no more appframework dependency
  * Flash unblock element
  * alphabet navigation resizes with window height
  * hide alphabet navigation if there is no music
  * proper IE8 PNGs
  * fulltree for artists only return tracks of the artist - #99
  * scanner uses the shortest artist name if multiple artists are detected
  * scrollbar fix - was overlaped by player bar #102

 Known bugs:
  * in IE 9 and 10 the play icons haven't the correct width/height (fixed in v0.1.7-beta)

v0.1.5-alpha 2013-09-24

  * use images in album folders as album art
    * first uploaded image to a folder is used as album art
    * addition and deletion of covers is detected
  * alphabet navigation bar to the left
    * highlight available letters (of the artists)
  * use flash 8 for fallback player
  * fix ogg playback
  * play the clicked song of an album and not the first song of the album - fixes #83
  * limit metadatascan to audio files
  * Adds clean up background job
    * find covers for albums without cover
    * remove tracks without files, albums without tracks and artists without albums and tracks
  * AngularJS 1.0.8
  * Various fixes and improvements - especially PostgreSQL
    * various fixes, also for PostgreSQL
    * cast number to int
    * use correct sql statement for checking for albums
    * unit test for case when album is null
    * move casting to appframework entity
    * remove blank lines

 Known bugs:
  * does not scroll perfect
  * non-dynamic creating of the navigation bar

v0.1.4-alpha 2013-09-05

  * show track number in track list
  * fix icon glitches in Firefox
  * show playing status icon (fixes #82)
  * previous button (fixes #72)
  * shuffle/repeat button (fixes #77)
  * correct sorting order for playlist
  * show loading state
  * sort albums by year
  * visualize loading state
  * make scanner more robust and fix PHP errors
  * disable execution time for rescan
  * realign playerbar content and adding whitespace (ref #80)

 Known bugs:
  * clicking a song the first song of the album is played instead of the actual clicked song

v0.1.3-alpha 2013-09-04

  * cliched icons (fixes #70)
  * database is cleaned after update to this version
  * first fixes for undetected metadata (extracts track number and title from filename)
  * fix album without year issue (albums were duplicated)
  * sort tracks by tracknumber and show them if available

v0.1.2-alpha 2013-09-02

 stable5 fixes

  * loading of getid3
  * CSS

v0.1.1-alpha 2013-08-29

 Fixes, clean-ups and logging from JS to the backend
  * log API (for javascript logging to backend)
  * fix empty artists (backend)
  * album view fixed
  * log errors in frontend to backend
  * fix playback for artist
  * remove minify directive
  * reset played songs and current song for playlist

v0.1-alpha 2013-08-29

 First release of the new music app
  * useable with OC5+
  * shiva API
  * metadata extraction for artist, album and track
  * single page frontend
  * multimedia playback in all browsers trough HTML5 and flash fallback
  * testing of the backend code

 Known bugs:

  * shuffle, repeat and previous button are out of functionality
  * non-high-resolution icons in IE8
  * no Ampache support
  * slow for large music collections
  * tracks without artist or album are not listed in the frontend (but already in the database)
