diff --git a/api/funkwhale_api/music/management/commands/import_files.py b/api/funkwhale_api/music/management/commands/import_files.py
index 541b60886e910312594fbc5b39c854a0a0b81635..33f8ed2d1f6fb10c299465fa752efb4c058a4dd4 100644
--- a/api/funkwhale_api/music/management/commands/import_files.py
+++ b/api/funkwhale_api/music/management/commands/import_files.py
@@ -226,7 +226,7 @@ class Command(BaseCommand):
             urllib.parse.urlencode([("import", reference)]),
         )
         self.stdout.write(
-            "For details, please refer to import refrence '{}' or URL {}".format(
+            "For details, please refer to import reference '{}' or URL {}".format(
                 reference, import_url
             )
         )
@@ -246,7 +246,7 @@ class Command(BaseCommand):
                 self.stderr.write("- {}: {}".format(path, error))
 
         self.stdout.write(
-            "For details, please refer to import refrence '{}' or URL {}".format(
+            "For details, please refer to import reference '{}' or URL {}".format(
                 reference, import_url
             )
         )
diff --git a/changes/changelog.d/368.enhancement b/changes/changelog.d/368.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..7e8f78c0a8be20794c0042e32ad2ad55e2f221be
--- /dev/null
+++ b/changes/changelog.d/368.enhancement
@@ -0,0 +1 @@
+Added button to search for objects on Discogs (#368)
diff --git a/changes/changelog.d/419.enhancement b/changes/changelog.d/419.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f4716b53e5e23ab6ab047ab033b2a6d02bf04c2b
--- /dev/null
+++ b/changes/changelog.d/419.enhancement
@@ -0,0 +1 @@
+Favorites radio will not be visible if the user does not have any favorites (#419)
\ No newline at end of file
diff --git a/changes/changelog.d/708.enhancement b/changes/changelog.d/708.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f3217e5a9b3e5c90d4e1af0370dc58e3e28d98ef
--- /dev/null
+++ b/changes/changelog.d/708.enhancement
@@ -0,0 +1 @@
+Aligned search headers with search results in the sidebar (#708)
\ No newline at end of file
diff --git a/changes/changelog.d/807.enhancement b/changes/changelog.d/807.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..bab8f9647e6b9a7e360dfd17c8b7ff6dd3682041
--- /dev/null
+++ b/changes/changelog.d/807.enhancement
@@ -0,0 +1 @@
+Clicking on the currently selected playlist in the Playlist popup will now close the popup (#807)
\ No newline at end of file
diff --git a/changes/changelog.d/832.enhancement b/changes/changelog.d/832.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..1a270b88eaf9fa8a584b894a9bc611aab980feb3
--- /dev/null
+++ b/changes/changelog.d/832.enhancement
@@ -0,0 +1 @@
+The currently playing track is now highlighted with an orange play icon (#832)
\ No newline at end of file
diff --git a/changes/changelog.d/864.enhancement b/changes/changelog.d/864.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f903ac85054911c5f131f290f4ad1e9aacb77161
--- /dev/null
+++ b/changes/changelog.d/864.enhancement
@@ -0,0 +1 @@
+Redirect from / to /library when user is logged in (#864)
diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue
index 9393d9b7850cf4e40594bbd4fdc47774753a0f1e..bbcc9a8f959a89b9d20ffadc402acfa74da5274b 100644
--- a/front/src/components/Home.vue
+++ b/front/src/components/Home.vue
@@ -147,7 +147,19 @@ export default {
       let msg = this.$pgettext('Content/Home/List item/Verb', 'Get quality metadata about your music thanks to <a href="%{ url }" target="_blank">MusicBrainz</a>')
       return this.$gettextInterpolate(msg, {url: this.musicbrainzUrl})
     }
+  },
+  watch: {
+    '$store.state.auth.authenticated': {
+      handler (v) {
+        if (v) {
+          console.log('Authenticated, redirecting to /library…')
+          this.$router.push('/library')
+        }
+      },
+      immediate: true
+    }
   }
+
 }
 </script>
 
diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue
index 8b183b215875b532c40faeff53ed547d1eb766ef..0f2809064cb1052eedda92d6c262a5f266819d35 100644
--- a/front/src/components/Sidebar.vue
+++ b/front/src/components/Sidebar.vue
@@ -466,6 +466,12 @@ $sidebar-color: #3d3e3f;
       border-radius: 0;
     }
   }
+  .ui.search .results {
+    vertical-align: middle;
+  }
+  .ui.search .name {
+    vertical-align: middle;
+  }
 }
 .ui.tiny.avatar.image {
   position: relative;
diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue
index bdc0dd6cb57b18eed7dfcc00ff45c929a027f4fb..db6e8de6bba8e8ece4f4d761ae1466e9be113435 100644
--- a/front/src/components/audio/album/Card.vue
+++ b/front/src/components/audio/album/Card.vue
@@ -20,7 +20,7 @@
             <tbody>
               <tr v-for="track in tracks">
                 <td class="play-cell">
-                  <play-button class="basic icon" :track="track" :discrete="true"></play-button>
+                  <play-button :class="['basic', {orange: isPlaying && track.id === currentTrack.id}, 'icon']" :discrete="true" :track="track"></play-button>
                 </td>
                 <td class="content-cell" colspan="5">
                   <track-favorite-icon :track="track"></track-favorite-icon>
@@ -57,6 +57,7 @@
 </template>
 
 <script>
+import { mapGetters } from "vuex"
 import backend from '@/audio/backend'
 import TrackFavoriteIcon from '@/components/favorites/TrackFavoriteIcon'
 import PlayButton from '@/components/audio/PlayButton'
@@ -64,7 +65,7 @@ import PlayButton from '@/components/audio/PlayButton'
 export default {
   props: {
     album: {type: Object},
-    mode: {type: String, default: 'rich'}
+    mode: {type: String, default: 'rich'},
   },
   components: {
     TrackFavoriteIcon,
@@ -84,6 +85,12 @@ export default {
       }
       return this.album.tracks.slice(0, this.initialTracks)
     },
+    ...mapGetters({
+      currentTrack: "queue/currentTrack",
+    }),
+    isPlaying () {
+      return this.$store.state.player.playing
+    },
     tracksWithAlbum () {
       // needed to include album data (especially cover)
       // with tracks appended in queue (#795)
diff --git a/front/src/components/audio/track/Row.vue b/front/src/components/audio/track/Row.vue
index abc4137bf397306b457cb19e8e9d39e6b21c0838..90d0579603472b18f760c6902fa68309148f756c 100644
--- a/front/src/components/audio/track/Row.vue
+++ b/front/src/components/audio/track/Row.vue
@@ -1,7 +1,7 @@
 <template>
   <tr>
     <td>
-      <play-button class="basic icon" :discrete="true" :is-playable="playable" :track="track"></play-button>
+      <play-button :class="['basic', {orange: isPlaying && track.id === currentTrack.id}, 'icon']" :discrete="true" :is-playable="playable" :track="track"></play-button>
     </td>
     <td>
       <img class="ui mini image" v-if="track.album.cover.original" v-lazy="$store.getters['instance/absoluteUrl'](track.album.cover.small_square_crop)">
@@ -50,7 +50,7 @@
 </template>
 
 <script>
-
+import { mapGetters } from "vuex"
 import time from '@/utils/time'
 import TrackFavoriteIcon from '@/components/favorites/TrackFavoriteIcon'
 import TrackPlaylistIcon from '@/components/playlists/TrackPlaylistIcon'
@@ -74,13 +74,19 @@ export default {
     }
   },
   computed: {
+    ...mapGetters({
+      currentTrack: "queue/currentTrack",
+    }),
+    isPlaying () {
+      return this.$store.state.player.playing
+    },
     albumArtist () {
       if (this.artist) {
         return this.artist
       } else {
         return this.track.album.artist
       }
-    }
+    },
   }
 }
 </script>
diff --git a/front/src/components/favorites/List.vue b/front/src/components/favorites/List.vue
index d1bde0935341934af4988c64d1ec766d8da22c9b..6402d417f7120296ab8b13c2a70c109aad14aca2 100644
--- a/front/src/components/favorites/List.vue
+++ b/front/src/components/favorites/List.vue
@@ -16,7 +16,7 @@
           1 favorite
         </translate>
       </h2>
-      <radio-button type="favorites"></radio-button>
+      <radio-button v-if="hasFavorites" type="favorites"></radio-button>
     </section>
     <section class="ui vertical stripe segment">
       <div :class="['ui', {'loading': isLoading}, 'form']">
@@ -115,7 +115,10 @@ export default {
       return {
         title: this.$pgettext('Head/Favorites/Title', 'Your Favorites')
       }
-    }
+    },
+    hasFavorites () {
+      return this.$store.state.favorites.count > 0
+    },
   },
   methods: {
     updateQueryString: function() {
diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue
index 1f89bef8898f9a1a496545688ff818a10e071e2a..2b3c978bced83a60574a49380e786e7312828182 100644
--- a/front/src/components/library/AlbumBase.vue
+++ b/front/src/components/library/AlbumBase.vue
@@ -61,7 +61,11 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
-                  <router-link
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+                  </a>
+		  <router-link
                     v-if="object.is_local"
                     :to="{name: 'library.albums.edit', params: {id: object.id }}"
                     class="basic item">
@@ -168,6 +172,13 @@ export default {
         return "https://musicbrainz.org/release/" + this.object.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=release&title=" +
+	encodeURI(this.object.title) + "&artist=" +
+	encodeURI(this.object.artist.name)
+	)
+    },
     headerStyle() {
       if (!this.object.cover.original) {
         return ""
diff --git a/front/src/components/library/ArtistBase.vue b/front/src/components/library/ArtistBase.vue
index 5da7370bacf5fba3abe0c44aa10eb82d421c4a46..3c21f603fe150109ade24448510bb42805ac4663 100644
--- a/front/src/components/library/ArtistBase.vue
+++ b/front/src/components/library/ArtistBase.vue
@@ -72,6 +72,10 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+		  </a>
                   <router-link
                     v-if="object.is_local"
                     :to="{name: 'library.artists.edit', params: {id: object.id }}"
@@ -205,6 +209,12 @@ export default {
         return "https://musicbrainz.org/artist/" + this.object.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=artist&title=" +
+	encodeURI(this.object.name)
+      )
+    },
     cover() {
       return this.object.albums
         .filter(album => {
diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue
index 9b2f7bf82010bc1eed389ca072468a5c51c62ff0..9f59db514ccb2bab0b0d9860d1cee72eb6facab5 100644
--- a/front/src/components/library/Radios.vue
+++ b/front/src/components/library/Radios.vue
@@ -10,7 +10,7 @@
           <translate translate-context="Content/Radio/Title">Instance radios</translate>
         </h3>
         <div class="ui cards">
-          <radio-card v-if="$store.state.auth.authenticated" :type="'favorites'"></radio-card>
+          <radio-card v-if="isAuthenticated && hasFavorites" :type="'favorites'"></radio-card>
           <radio-card :type="'random'"></radio-card>
           <radio-card v-if="$store.state.auth.authenticated" :type="'less-listened'"></radio-card>
         </div>
@@ -144,7 +144,13 @@ export default {
         searchPlaceholder,
         title
       }
-    }
+    },
+    isAuthenticated () {
+      return this.$store.state.auth.authenticated
+    },
+    hasFavorites () {
+      return this.$store.state.favorites.count > 0
+    },
   },
   methods: {
     updateQueryString: _.debounce(function() {
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index 4d396bd1ad1b50323974c0e5462875c12a3404e8..4edd00c5de9ae92f32254636bec9bc19f4643751 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -76,6 +76,10 @@
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/*/Clickable, Verb">View on MusicBrainz</translate>
                   </a>
+		  <a :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+		    <i class="external icon"></i>
+		    <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
+		  </a>
                   <router-link
                     v-if="track.is_local"
                     :to="{name: 'library.tracks.edit', params: {id: track.id }}"
@@ -180,6 +184,14 @@ export default {
         return "https://musicbrainz.org/recording/" + this.track.mbid
       }
     },
+    discogsUrl() {
+      return (
+        "https://discogs.com/search/?type=release&title=" +
+	encodeURI(this.track.album.title) + "&artist=" +
+	encodeURI(this.track.artist.name) + "&track=" +
+	encodeURI(this.track.title)
+      )
+    },
     downloadUrl() {
       let u = this.$store.getters["instance/absoluteUrl"](
         this.upload.listen_url
diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue
index 44969afbfd8860c565173292c8eb338178869173..97c5f0a1eb80c7a913db32f175597549cbc7e464 100644
--- a/front/src/components/playlists/PlaylistModal.vue
+++ b/front/src/components/playlists/PlaylistModal.vue
@@ -57,7 +57,7 @@
                   :to="{name: 'library.playlists.detail', params: {id: playlist.id }, query: {mode: 'edit'}}"><i class="ui pencil icon"></i></router-link>
               </td>
               <td :title="playlist.name">
-                <router-link :to="{name: 'library.playlists.detail', params: {id: playlist.id }}">{{ playlist.name }}</router-link></td>
+                <router-link v-on:click.native="update(false)" :to="{name: 'library.playlists.detail', params: {id: playlist.id }}">{{ playlist.name }}</router-link></td>
               <td><human-date :date="playlist.modification_date"></human-date></td>
               <td>{{ playlist.tracks_count }}</td>
               <td>