chiark / gitweb /
disobedience/control.c: Follow user toolbar style in full-size window.
[disorder] / CHANGES.html
index 2d80c6c6009d37d338786bfabbfc2d23575d49f4..0ed1e727eb0d535d9eb04175d84f40344d0ae953 100644 (file)
@@ -1,55 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
 <html>
 <head>
 <title>DisOrder Change History</title>
 <html>
 <head>
 <title>DisOrder Change History</title>
-<style type="text/css">
-body {
-  color: black;
-  background-color: white;
-  font-family: times,serif;
-  font-weight: normal;
-  font-size: 12pt;
-  font-variant: normal
-}
-
-div.section {
-  margin-left:1em
-}
-
-h1 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h2 {
-  background-color: #e0ffe0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h3 {
-  background-color: #f0f0f0;
-  font-family: helvetica,sans-serif;
-  padding: 0.2em
-}
-
-h4 {
-  font-family: helvetica,sans-serif
-}
-
-table.bugs {
-  width: 100%
-}
-
-table.bugs th {
-  text-align: left
-}
-
-span.command {
-  font-family: monospace
-}
-</style>
+<link rel=StyleSheet type="text/css" href="docs.css">
 </head>
 
 <body>
 </head>
 
 <body>
@@ -58,7 +11,246 @@ span.command {
 <p>This file documents recent user-visible changes to <a
  href="http://www.greenend.org.uk/rjk/disorder/">DisOrder</a>.</p>
 
 <p>This file documents recent user-visible changes to <a
  href="http://www.greenend.org.uk/rjk/disorder/">DisOrder</a>.</p>
 
-<h2>Changes up to version 4.4</h2>
+<p><b>IMPORTANT</b>: you should read <a
+href="README.upgrades.html">README.upgrades</a> before upgrading.</p>
+
+<h2>Changes up to version 5.2</h2>
+
+<div class=section>
+
+  <h3>PulseAudio Support</h3>
+
+  <div class=section>
+
+    <p>PulseAudio is now supported, if the support library is available at
+    build time.  It is the default for client applications, reflecting its
+    widespread use in desktop environments.</p>
+
+  </div>
+
+  <h3>Changes To RTP Support</h3>
+
+  <div class=section>
+
+    <p>Disobedience now has a menu to select the network playback API.</p>
+
+    <p><code>disorder-playrtp</code> now selects playback API using
+    a <code>--api</code> option.  The old API-selection options remain
+    available but are deprecated and will be removed in the future.</p>
+
+    <p>RTP playback can now transmit to multiple unicast destinations, added
+    and removed on demand.  This is controlled by the new <code>rtp_mode</code>
+    option.  The motivating use case is a bridged network with high- and
+    low-capacity components.  However it is may also be useful in a routed
+    network without multicast routing support.</p>
+
+  </div>
+
+  <h3>GStreamer support</h3>
+
+  <div class=section>
+
+    <p>If it's detected at <tt>configure</tt> time, a new decoder
+    program <tt>disorder-gstdecode</tt> and a new tracklength
+    plugin <tt>tracklength-gstreamer</tt> are built.  These use the GStreamer
+    library for filetype detection, audio decoding and sample-rate conversion,
+    among other features.  Using these, DisOrder can play any audio file
+    supported by GStreamer.
+
+    <p>The decoder has a number of options for controlling the sample-rate and
+    audio format conversion, allowing various tradeoffs between quality and
+    processor time.  (High-quality conversion can consume more processor time
+    than decoding, so this is potentially useful on very a small device such as
+    a Raspberry Pi.</p>
+
+    <p>The GStreamer decoder can also use ReplayGain information stored in
+    audio files' metadata to adjust playback volume, so that tracks with very
+    wide dynamic range don't sound really quiet in comparison.  This
+    information can be added using tools such as <tt>mp3gain</tt>,
+    <tt>vorbisgain</tt>, or <tt>metaflac</tt>.  This is turned on by default if
+    you use the decoder; you can choose between per-album or per-track
+    settings, or turn it off entirely, using command-line options.</p> 
+
+    <p>The GStreamer decoder is not used by default, but it can be enabled
+    easily enough by dropping something like the following into the server
+    configuration file:
+      <pre>
+        player
+        player *.flac execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+        player *.mp2 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+        player *.mp3 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+        player *.ogg execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+        player *.wav execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+
+        tracklength
+        tracklength *.flac tracklength-gstreamer
+        tracklength *.mp2 tracklength-gstreamer
+        tracklength *.mp3 tracklength-gstreamer
+        tracklength *.ogg tracklength-gstreamer
+        tracklength *.wav tracklength-gstreamer
+      </pre>
+    </p>
+
+  <h3>Bug fixes</h3>
+
+  <div class=section>
+
+    <ul>
+      <li>The CGI program now checks user passwords even when it runs as the
+      main jukebox user(!).</li>
+
+      <li>Disobedience doesn't crash when search terms change under its
+      feet.</li>
+
+      <li>The CGI program doesn't crash on some POST requests.
+    </ul>
+
+  </div>
+
+</div>
+
+<h2>Changes up to version 5.1.1</h2>
+
+    <div class=section>
+
+      <h3>Bug fixes</h3>
+
+      <div class=section>
+
+        <ul>
+          <li><code>player</code> and <code>tracklength</code> can now be used
+          without arguments to clear the lists, as per the documentation.</li>
+
+          <li>Tracks without a player are forgotten upon rescan.</li>
+
+          <li>The speaker process avoids splitting frames.</li>
+        </ul>
+
+        <p>Thanks to Mark Wooding and Joe Birr-Pixton.</p>
+
+      </div>
+
+    </div>
+
+<h2>Changes up to version 5.1</h2>
+
+<div class=section>
+
+  <h3>Removable Device Support</h3>
+
+  <div class=section>
+
+    <p>The server will now automatically initiate a rescan when a filesystem is
+    mounted or unmounted.  (Use the <tt>mount_rescan</tt> option if you want to
+    suppress this behavior.)</p>
+
+    <p>The server takes care not to hold audio files open unnecessarily, so
+    that devices can be unmounted even if tracks from them are currently being
+    buffered.</p>
+
+  </div>
+
+  <h3>Disobedience</h3>
+
+  <div class=section>
+
+    <p>You can now edit the <tt>required-tags</tt> and <tt>prohibited-tags</tt>
+    global preferences in Disobedience
+    (<a href="http://code.google.com/p/disorder/issues/detail?id=29">issue
+    #29</a>).</p>
+
+    <p>The &ldquo;Manage users&rdquo; option is now more reliably greyed out if
+    it will not work.  This depends on a server change too, so it may still be
+    wrong if a new Disobedience is used against an old server.</p>
+
+    <p>A <tt>.desktop</tt> file is now shipped, making Disobedience visible as
+    an application in freedesktop.org-compliant systems.</p>
+
+  </div>
+
+  <h3>Backups</h3>
+
+  <div class=section>
+
+    <p>The Debian package now includes a cronjob that backs up the database
+    daily.  See <tt>/etc/cron.d/disorder</tt>.  You can put settings
+    in <tt>/etc/default/disorder</tt> to turn this off or to control how long
+    the backups are kept for.</p>
+
+    <p>The <tt>disorder-dump -r</tt> option was broken.</p>
+
+    <p><tt>disorder-dump</tt> now gets permissions right automatically (<a
+    href="http://code.google.com/p/disorder/issues/detail?id=56">issue
+    #56</a>).</p>
+
+  </div>
+
+  <h3>General</h3>
+
+  <div class=section>
+
+    <p>Unicode support has been upgraded to <a
+    href="http://www.unicode.org/versions/Unicode6.0.0/">Unicode
+    6.0.0</a>.</p>
+
+    <p>Client programs no longer depend on libdb.</p>
+    
+    <p>The following have been removed:</p>
+
+    <ul>
+
+      <li>The <tt>allow</tt>, <tt>gap</tt>, <tt>lock</tt>, <tt>prefsync</tt>, 
+      <tt>restrict</tt>, <tt>trust</tt> configuration commands.  If they still
+      appear in your configuration file then the server will not start.</li>
+
+      <li>The <tt>columns</tt> web interface option.  It will generate an
+      message in your error log but otherwise be ignored.</li>
+
+      <li>The <tt>--wait-for-device</tt> player option.  If it still appears in
+      any player commands, they will not work.</li>
+
+      <li>Support for automatically importing pre-3.0 users.</li>
+
+    </ul>
+
+    <p>Various minor bug fixes.</p>
+
+  </div>
+
+</div>
+
+<h2>Changes up to version 5.0.3</h2>
+
+<div class=section>
+
+<p><b>Security</b>: Local connections can no longer create and delete users
+unless they are properly authorized.</p>
+
+</div>
+
+<h2>Changes up to version 5.0.2</h2>
+
+<div class=section>
+
+<p>The login form now indicates that a cookie will be set.</p>
+
+</div>
+
+<h2>Changes up to version 5.0.1</h2>
+
+<div class=section>
+
+<h3>Disobedience</h3>
+
+<div class=section>
+
+<p>The sense of the Control &#x2192; Playing menu item was fixed.</p>
+
+</div>
+
+</div>
+
+<h2>Changes up to version 5.0</h2>
 
   <div class=section>
   
 
   <div class=section>
   
@@ -73,23 +265,52 @@ span.command {
       27</a>.</p>
 
       <p>Gapless play should be more reliable, and playback latency over RTP
       27</a>.</p>
 
       <p>Gapless play should be more reliable, and playback latency over RTP
-      should be a bit lower.  Note thought that all the sound output code has
+      should be a bit lower.  Note though that all the sound output code has
       been reorganized and in some cases completely rewritten, so it's possible
       been reorganized and in some cases completely rewritten, so it's possible
-      that bugs may have been (re-)introduced.</p>
+      that bugs may have been (re-)introduced.  Decoding of scratches is also
+      initiated ahead of time, giving more reliable playback.</p>
       
       <p>The <tt>command</tt> backend now (optionally) sends silence instead
       of suspending writes when a pause occurs or no track is playing.</p>
       
       <p>The <tt>command</tt> backend now (optionally) sends silence instead
       of suspending writes when a pause occurs or no track is playing.</p>
-      
+
+      <p>If <a href="http://www.mega-nerd.com/SRC/">libsamplerate</a> is
+      available at build time then that will be used instead of invoking
+      <a href="http://sox.sourceforge.net/">SoX</a>.  SoX support will be
+      removed in a future version.</p>
+
+      <p>The libao plugin has been removed, because the plugin API is not
+      usable in libao 1.0.0.</p>
+
+      <p>Playlists are now supported.  These allow a collection of tracks to be
+      prepared offline and played as a unit.</p>
+
     </div>
       
     </div>
       
+    <h3>Disobedience</h3>
+
+    <div class=section>
+
+      <p>Multiple tracks can now be dragged in the queue in a single operation.
+      Furthermore, it is now possible to drag tracks from the
+      &ldquo;Recent&rdquo;, &ldquo;Added&rdquo; and &ldquo;Choose&rdquo; tabs
+      to the queue.</p>
+
+      <p>Disobedience now supports playlist editing and has a compact mode,
+      available from the <b>Control</b> menu.</p>
+
+      <p>Disobedience has a <a href="disobedience/manual/index.html">new
+      manual</a>.</p>
+
+    </div>
+
     <h3>Web Interface</h3>
  
     <div class=section>
 
       <p>Confirmation URLs should be cleaner (and in particular not end
       with punctuation).  (Please see <a
     <h3>Web Interface</h3>
  
     <div class=section>
 
       <p>Confirmation URLs should be cleaner (and in particular not end
       with punctuation).  (Please see <a
-      href="README.upgrades">README.upgrades</a> for more about this.)</p>
-      
+      href="README.upgrades.html">README.upgrades</a> for more about this.)</p>
+
     </div>
       
     <h3>RTP Player</h3>
     </div>
       
     <h3>RTP Player</h3>
@@ -132,19 +353,100 @@ span.command {
           <th>ID</th>
           <th>Description</th>
         </tr>
           <th>ID</th>
           <th>Description</th>
         </tr>
-        
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=22">#22</a></td>
+          <td>Background decoders interact badly with server reload</td>
+        </tr>
+
         <tr>
           <td><a href="http://code.google.com/p/disorder/issues/detail?id=27">#27</a></td>
           <td>Mac DisOrder uses wrong sound device</td>
         </tr>
 
         <tr>
         <tr>
           <td><a href="http://code.google.com/p/disorder/issues/detail?id=27">#27</a></td>
           <td>Mac DisOrder uses wrong sound device</td>
         </tr>
 
         <tr>
-          <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></d>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=30">#30</a></td>
+          <td>mini disobedience interface</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=32">#32</a></td>
+          <td>Excessively verbose log chatter on shutdown</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></td>
           <td>(Some) plugins need -lm.</td>
         </tr>
           <td>(Some) plugins need -lm.</td>
         </tr>
-        
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=39">#39</a></td>
+          <td>Double bind() non-multicast AF_INET</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=40">#40</a></td>
+          <td>Missing stub function</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=41">#41</a></td>
+          <td>Missing includes for timeval</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=42">#42</a></td>
+          <td>syntax error in empeg_host section</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=43">#43</a></td>
+          <td>decoder segfault with FLAC 1.2.1</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=44">#44</a></td>
+          <td>gcc 4.3.2-1ubuntu12 SUYB patch</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=45">#45</a></td>
+          <td>disobedience doesn't configure its back end</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=46">#46</a></td>
+          <td>Sort search results in web interface</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=48">#48</a></td>
+          <td>build-time dependency on <tt>oggdec</tt> removed</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=49">#49</a></td>
+          <td>Disobedience's 'When' column gets out of date</td>
+        </tr>
+
+        <tr>
+          <td><a href="http://code.google.com/p/disorder/issues/detail?id=51">#51</a></td>
+          <td>Improved speaker process robustness</td>
+        </tr>
+
+        <tr>
+          <td>(none)</td>
+         <td>&ldquo;found track in no collection&rdquo; messages for scratches
+         are now suppressed</td>
+        </tr>
+
+        <tr>
+          <td>(none)</td>
+          <td>Disobedience would sometimes fail to notice when a track
+          started, leading to its display getting out of date.</td>
+        </tr>
+
       </table>
       </table>
-      
     </div>
   </div>
 
     </div>
   </div>
 
@@ -531,7 +833,7 @@ span.command {
 <div class=section>
   
   <p><b>Important</b>!  See <a
 <div class=section>
   
   <p><b>Important</b>!  See <a
-  href="README.upgrades">README.upgrades</a> when upgrading.</p>
+  href="README.upgrades.html">README.upgrades</a> when upgrading.</p>
   
   <h3>Platforms And Installation</h3>
   
   
   <h3>Platforms And Installation</h3>