chiark / gitweb /
CHANGES.html, README: Update the administrivia.
[disorder] / CHANGES.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
2 <html>
3 <head>
4 <title>DisOrder Change History</title>
5 <link rel=StyleSheet type="text/css" href="docs.css">
6 </head>
7
8 <body>
9 <h1>DisOrder Change History</h1>
10
11 <p>This file documents recent user-visible changes to <a
12  href="http://www.greenend.org.uk/rjk/disorder/">DisOrder</a>.</p>
13
14 <p><b>IMPORTANT</b>: you should read <a
15 href="README.upgrades.html">README.upgrades</a> before upgrading.</p>
16
17 <h2>Changes up to version 5.2</h2>
18
19 <div class=section>
20
21   <h3>PulseAudio Support</h3>
22
23   <div class=section>
24
25     <p>PulseAudio is now supported, if the support library is available at
26     build time.  It is the default for client applications, reflecting its
27     widespread use in desktop environments.</p>
28
29     <p>Volume setting is not currently supported when PulseAudio is in
30     use.</p>
31
32   </div>
33
34   <h3>Changes To RTP Support</h3>
35
36   <div class=section>
37
38     <p>Disobedience now has a menu to select the network playback API.</p>
39
40     <p><code>disorder-playrtp</code> now selects playback API using
41     a <code>--api</code> option.  The old API-selection options remain
42     available but are deprecated and will be removed in the future.</p>
43
44     <p>RTP playback can now transmit to multiple unicast destinations, added
45     and removed on demand.  This is controlled by the new <code>rtp_mode</code>
46     option.  The motivating use case is a bridged network with high- and
47     low-capacity components.  However it is may also be useful in a routed
48     network without multicast routing support.</p>
49
50   </div>
51
52   <h3>Bug fixes</h3>
53
54   <div class=section>
55
56     <ul>
57       <li>The CGI program now checks user passwords even when it runs as the
58       main jukebox user(!).</li>
59
60       <li>DisObedience doesn't crash when search terms change under its
61       feet.</li>
62
63       <li>The CGI program doesn't crash on some POST requests.
64     </ul>
65
66   </div>
67
68 </div>
69
70 <h2>Changes up to version 5.1.1</h2>
71
72     <div class=section>
73
74       <h3>Bug fixes</h3>
75
76       <div class=section>
77
78         <ul>
79           <li><code>player</code> and <code>tracklength</code> can now be used
80           without arguments to clear the lists, as per the documentation.</li>
81
82           <li>Tracks without a player are forgotten upon rescan.</li>
83
84           <li>The speaker process avoids splitting frames.</li>
85         </ul>
86
87         <p>Thanks to Mark Wooding and Joe Birr-Pixton.</p>
88
89       </div>
90
91     </div>
92
93 <h2>Changes up to version 5.1</h2>
94
95 <div class=section>
96
97   <h3>Removable Device Support</h3>
98
99   <div class=section>
100
101     <p>The server will now automatically initiate a rescan when a filesystem is
102     mounted or unmounted.  (Use the <tt>mount_rescan</tt> option if you want to
103     suppress this behavior.)</p>
104
105     <p>The server takes care not to hold audio files open unnecessarily, so
106     that devices can be unmounted even if tracks from them are currently being
107     buffered.</p>
108
109   </div>
110
111   <h3>Disobedience</h3>
112
113   <div class=section>
114
115     <p>You can now edit the <tt>required-tags</tt> and <tt>prohibited-tags</tt>
116     global preferences in Disobedience
117     (<a href="http://code.google.com/p/disorder/issues/detail?id=29">issue
118     #29</a>).</p>
119
120     <p>The &ldquo;Manage users&rdquo; option is now more reliably greyed out if
121     it will not work.  This depends on a server change too, so it may still be
122     wrong if a new Disobedience is used against an old server.</p>
123
124     <p>A <tt>.desktop</tt> file is now shipped, making Disobedience visible as
125     an application in freedesktop.org-compliant systems.</p>
126
127   </div>
128
129   <h3>Backups</h3>
130
131   <div class=section>
132
133     <p>The Debian package now includes a cronjob that backs up the database
134     daily.  See <tt>/etc/cron.d/disorder</tt>.  You can put settings
135     in <tt>/etc/default/disorder</tt> to turn this off or to control how long
136     the backups are kept for.</p>
137
138     <p>The <tt>disorder-dump -r</tt> option was broken.</p>
139
140     <p><tt>disorder-dump</tt> now gets permissions right automatically (<a
141     href="http://code.google.com/p/disorder/issues/detail?id=56">issue
142     #56</a>).</p>
143
144   </div>
145
146   <h3>General</h3>
147
148   <div class=section>
149
150     <p>Unicode support has been upgraded to <a
151     href="http://www.unicode.org/versions/Unicode6.0.0/">Unicode
152     6.0.0</a>.</p>
153
154     <p>Client programs no longer depend on libdb.</p>
155     
156     <p>The following have been removed:</p>
157
158     <ul>
159
160       <li>The <tt>allow</tt>, <tt>gap</tt>, <tt>lock</tt>, <tt>prefsync</tt>, 
161       <tt>restrict</tt>, <tt>trust</tt> configuration commands.  If they still
162       appear in your configuration file then the server will not start.</li>
163
164       <li>The <tt>columns</tt> web interface option.  It will generate an
165       message in your error log but otherwise be ignored.</li>
166
167       <li>The <tt>--wait-for-device</tt> player option.  If it still appears in
168       any player commands, they will not work.</li>
169
170       <li>Support for automatically importing pre-3.0 users.</li>
171
172     </ul>
173
174     <p>Various minor bug fixes.</p>
175
176   </div>
177
178 </div>
179
180 <h2>Changes up to version 5.0.3</h2>
181
182 <div class=section>
183
184 <p><b>Security</b>: Local connections can no longer create and delete users
185 unless they are properly authorized.</p>
186
187 </div>
188
189 <h2>Changes up to version 5.0.2</h2>
190
191 <div class=section>
192
193 <p>The login form now indicates that a cookie will be set.</p>
194
195 </div>
196
197 <h2>Changes up to version 5.0.1</h2>
198
199 <div class=section>
200
201 <h3>Disobedience</h3>
202
203 <div class=section>
204
205 <p>The sense of the Control &#x2192; Playing menu item was fixed.</p>
206
207 </div>
208
209 </div>
210
211 <h2>Changes up to version 5.0</h2>
212
213   <div class=section>
214   
215     <h3>Server</h3>
216  
217     <div class=section>
218
219       <p>The <tt>device</tt> configuration option now works under OS X.
220       Devices may
221       be specified either by UID or name.  Fixes <a
222        href="http://code.google.com/p/disorder/issues/detail?id=27">Issue
223       27</a>.</p>
224
225       <p>Gapless play should be more reliable, and playback latency over RTP
226       should be a bit lower.  Note though that all the sound output code has
227       been reorganized and in some cases completely rewritten, so it's possible
228       that bugs may have been (re-)introduced.  Decoding of scratches is also
229       initiated ahead of time, giving more reliable playback.</p>
230       
231       <p>The <tt>command</tt> backend now (optionally) sends silence instead
232       of suspending writes when a pause occurs or no track is playing.</p>
233
234       <p>If <a href="http://www.mega-nerd.com/SRC/">libsamplerate</a> is
235       available at build time then that will be used instead of invoking
236       <a href="http://sox.sourceforge.net/">SoX</a>.  SoX support will be
237       removed in a future version.</p>
238
239       <p>The libao plugin has been removed, because the plugin API is not
240       usable in libao 1.0.0.</p>
241
242       <p>Playlists are now supported.  These allow a collection of tracks to be
243       prepared offline and played as a unit.</p>
244
245     </div>
246       
247     <h3>Disobedience</h3>
248
249     <div class=section>
250
251       <p>Multiple tracks can now be dragged in the queue in a single operation.
252       Furthermore, it is now possible to drag tracks from the
253       &ldquo;Recent&rdquo;, &ldquo;Added&rdquo; and &ldquo;Choose&rdquo; tabs
254       to the queue.</p>
255
256       <p>Disobedience now supports playlist editing and has a compact mode,
257       available from the <b>Control</b> menu.</p>
258
259       <p>Disobedience has a <a href="disobedience/manual/index.html">new
260       manual</a>.</p>
261
262     </div>
263
264     <h3>Web Interface</h3>
265  
266     <div class=section>
267
268       <p>Confirmation URLs should be cleaner (and in particular not end
269       with punctuation).  (Please see <a
270       href="README.upgrades.html">README.upgrades</a> for more about this.)</p>
271
272     </div>
273       
274     <h3>RTP Player</h3>
275   
276     <div class=section>
277
278       <p>There is a new <tt>--command</tt> option which allows the RTP player
279       to send audio data to a user-chosen command instead of an audio API. See
280       the man page for details.</p>
281       
282       <p>The <tt>--device</tt> option to <tt>disorder-playrtp</tt> now works
283       under OS X (as above).</p>
284         
285     </div>
286       
287     <h3>General</h3>
288
289     <div class=section>
290
291       <p>IPv6 should now work.  Network address specifications
292       (<tt>listen</tt>, <tt>connect</tt> etc) can now be prefixed with
293       <tt>-4</tt> or <tt>-6</tt> to force use
294       of IPv4 or IPv6, though normally this should not be needed.</p>
295
296       <p>Unicode support has been upgraded to <a
297       href="http://www.unicode.org/versions/Unicode5.1.0/">Unicode
298       5.1.0</a>.</p>
299
300       <p>Various elements of the source code have been
301       rationalized.</p>
302       
303     </div>
304     
305     <h3>Bugs fixed</h3>
306   
307     <div class=section>
308
309       <table class=bugs>
310         <tr>
311           <th>ID</th>
312           <th>Description</th>
313         </tr>
314
315         <tr>
316           <td><a href="http://code.google.com/p/disorder/issues/detail?id=22">#22</a></td>
317           <td>Background decoders interact badly with server reload</td>
318         </tr>
319
320         <tr>
321           <td><a href="http://code.google.com/p/disorder/issues/detail?id=27">#27</a></td>
322           <td>Mac DisOrder uses wrong sound device</td>
323         </tr>
324
325         <tr>
326           <td><a href="http://code.google.com/p/disorder/issues/detail?id=30">#30</a></td>
327           <td>mini disobedience interface</td>
328         </tr>
329
330         <tr>
331           <td><a href="http://code.google.com/p/disorder/issues/detail?id=32">#32</a></td>
332           <td>Excessively verbose log chatter on shutdown</td>
333         </tr>
334
335         <tr>
336           <td><a href="http://code.google.com/p/disorder/issues/detail?id=33">#33</a></td>
337           <td>(Some) plugins need -lm.</td>
338         </tr>
339
340         <tr>
341           <td><a href="http://code.google.com/p/disorder/issues/detail?id=39">#39</a></td>
342           <td>Double bind() non-multicast AF_INET</td>
343         </tr>
344
345         <tr>
346           <td><a href="http://code.google.com/p/disorder/issues/detail?id=40">#40</a></td>
347           <td>Missing stub function</td>
348         </tr>
349
350         <tr>
351           <td><a href="http://code.google.com/p/disorder/issues/detail?id=41">#41</a></td>
352           <td>Missing includes for timeval</td>
353         </tr>
354
355         <tr>
356           <td><a href="http://code.google.com/p/disorder/issues/detail?id=42">#42</a></td>
357           <td>syntax error in empeg_host section</td>
358         </tr>
359
360         <tr>
361           <td><a href="http://code.google.com/p/disorder/issues/detail?id=43">#43</a></td>
362           <td>decoder segfault with FLAC 1.2.1</td>
363         </tr>
364
365         <tr>
366           <td><a href="http://code.google.com/p/disorder/issues/detail?id=44">#44</a></td>
367           <td>gcc 4.3.2-1ubuntu12 SUYB patch</td>
368         </tr>
369
370         <tr>
371           <td><a href="http://code.google.com/p/disorder/issues/detail?id=45">#45</a></td>
372           <td>disobedience doesn't configure its back end</td>
373         </tr>
374
375         <tr>
376           <td><a href="http://code.google.com/p/disorder/issues/detail?id=46">#46</a></td>
377           <td>Sort search results in web interface</td>
378         </tr>
379
380         <tr>
381           <td><a href="http://code.google.com/p/disorder/issues/detail?id=48">#48</a></td>
382           <td>build-time dependency on <tt>oggdec</tt> removed</td>
383         </tr>
384
385         <tr>
386           <td><a href="http://code.google.com/p/disorder/issues/detail?id=49">#49</a></td>
387           <td>Disobedience's 'When' column gets out of date</td>
388         </tr>
389
390         <tr>
391           <td><a href="http://code.google.com/p/disorder/issues/detail?id=51">#51</a></td>
392           <td>Improved speaker process robustness</td>
393         </tr>
394
395         <tr>
396           <td>(none)</td>
397           <td>&ldquo;found track in no collection&rdquo; messages for scratches
398           are now suppressed</td>
399         </tr>
400
401         <tr>
402           <td>(none)</td>
403           <td>Disobedience would sometimes fail to notice when a track
404           started, leading to its display getting out of date.</td>
405         </tr>
406
407       </table>
408     </div>
409   </div>
410
411 <h2>Changes up to version 4.3</h2>
412
413   <div class=section>
414
415     <h3>Disobedience</h3>
416
417       <div class=section>
418
419         <p>A bug was fixed in the calculation of how much of the track had
420         played.  This would lead to the counter showing incorrect values in
421         various situations.</p>
422
423         <p>Disobedience's icons have been changed to larger, more colorful
424         ones.  The SVG source is included if you want to fiddle with them.</p>
425
426         <p>&ldquo;Select all&rdquo; is now no longer available in the choose
427         tab.  Instead there is a new &ldquo;Select children&rdquo; option which
428         selects the file children of a single subdirectory.</p>
429
430       </div>
431
432     <h3>Server</h3>
433
434       <div class=section>
435
436         <p>The selection bias for newly added tracks was reduced by half.  You
437         can put it back to the old very neophilic value with
438         &ldquo;<tt>new_bias 900000</tt>&rdquo; in the config file.</p>
439
440         <p>It is now possible to &lsquo;adopt&rsquo; randomly picked tracks.
441         Disobedience and the command-line client support this but the web
442         interface does not.</p>
443
444         <p>The default track name parsing was modified to handle filenames
445         generated by iTunes.</p>
446         
447       </div>
448
449     <h3>Miscellaneous</h3>
450
451       <div class=section>
452
453         <p><tt>disorderfm</tt> now preserves directory permissions.</p>
454
455         <p>DisOrder is now licensed under <a
456          href="http://www.gnu.org/licenses/gpl-3.0.html">GPL v3</a>.  The main
457         goal is to prohibit <a
458          href="http://en.wikipedia.org/wiki/Tivoization">Tivoization</a>.</p>
459
460         <p>The build system will now automatically cope with Fink's broken GTK+
461         packages.  There are a number of improvements to the Debian
462         packaging.</p>
463
464         <p>DisOrder now builds on 64-bit Linux systems.</p>
465
466         <p>There are various minor fixes.</p>
467
468       </div>
469
470   <h3>Bugs fixed</h3>
471   
472     <div class=section>
473
474       <table class=bugs>
475         <tr>
476           <th>ID</th>
477           <th>Description</th>
478         </tr>
479         
480         <tr>
481           <td><a href="http://code.google.com/p/disorder/issues/detail?id=24">#24</a></td>
482           <td>Fails to build on ubuntu 8.10</td>
483         </tr>
484         <tr>
485           <td><a href="http://code.google.com/p/disorder/issues/detail?id=26">#26</a></td>
486           <td>Disobedience shows wrong track elapsed time after a pause</td>
487         </tr>
488       </table>
489       
490     </div>
491   </div>
492
493 <h2>Changes up to version 4.2</h2>
494
495 <div class=section>
496
497   <h3>Disobedience</h3>
498   
499     <div class=section>
500
501       <p>The login window now has a 'remote' switch.  If this is turned off
502       then Disobedience will connect to a local server.  Formerly it would
503       always use TCP/IP.</p>
504
505       <p>The Delete and backspace keys will now remove tracks from the queue.
506       Escape will now dismiss the properties, users or login windows and return
507       now works in the login and properties windows.</p>
508       
509     </div>
510
511   <h3>Documentation</h3>
512   
513     <div class=section>
514
515       <p>Track and global preferences are now described in a new
516       <b>disorder_preferences</b>(5) man page.</p>
517       
518     </div>
519
520   <h3>Bugs fixed</h3>
521   
522     <div class=section>
523
524       <table class=bugs>
525         <tr>
526           <th>ID</th>
527           <th>Description</th>
528         </tr>
529         
530         <tr>
531           <td><a href="http://code.google.com/p/disorder/issues/detail?id=21">#21</a></td>
532           <td>CGI should use PATH_INFO more sensibly</td>
533         </tr>
534       </table>
535       
536     </div>
537 </div>
538
539
540 <h2>Changes up to version 4.1.1</h2>
541
542 <div class=section>
543
544   <p>Disobedience's &ldquo;Login&rdquo; window now works when you are logged
545   in.</p>
546   
547 </div>
548
549 <h2>Changes up to version 4.1</h2>
550
551 <div class=section>
552
553   <h3>Disobedience</h3>
554   
555     <div class=section>
556   
557       <p>Disobedience has been largely rewritten:</p>
558
559       <ul>
560         
561         <li>All the tabs now use native GTK+ list/tree widgets, resulting in
562         greater speed in some cases and more consistency with other GTK+
563         applications.</li>
564
565         <li>You can now use type-ahead find in the choose tab.  The initiation
566         of a search is delayed slightly to avoid lots of updates when you're
567         half way through entering search terms.</li>
568
569         <li>The choose tab now shows track lengths.</li>
570     
571         <li>Many buttons are now more reliably made insensitive when they can't
572         be used.</li>
573
574         <li>You can now play tracks off the recent tab.</li>
575         
576       </ul>
577       
578       <p>Disobedience attempts to cope with servers from older versions, up to
579       a point, but this is not well tested and it's best to keep the server
580       fully up to date.</p>
581
582     </div>
583      
584   <h3>Server</h3>
585   
586     <div class=section>
587
588       <p>When a track shares a directory with its alias, the real track name is
589       now returned instead of the alias (the opposite way round to the previous
590       behaviour).</p>
591       
592     </div>
593 </div>
594
595 <h2>Changes up to version 4.0.2</h2>
596
597 <div class=section>
598
599   <p>Corrected web browser linked from Disobedience.</p>
600   
601 </div>
602
603 <h2>Changes up to version 4.0.1</h2>
604
605 <div class=section>
606
607   <p>Libtool and Automake now install the CGI correctly.  As part of this,
608   <tt>cgidir</tt> has been renamed to <tt>cgiexecdir</tt>.  The configure
609   script will report an error if you try to use the old name.</p>
610   
611 </div>
612
613 <h2>Changes up to version 4.0</h2>
614
615 <div class=section>
616
617   <h3>Server</h3>
618
619 <div class=section>
620   
621   <p>The <tt>gap</tt> directive will no longer work.  It could be
622   restored if there is real demand.</p>
623   
624   <h4>Event Scheduling</h4>
625
626 <div class=section>
627
628   <p>It is now possible to schedule events to occur in the future.
629   Currently the supported actions are playing a specific track, and
630   changing a global preference (thus allowing e.g. random play to be
631   turned on or off).  See the <tt>schedule-*</tt>
632   commands described in disorder(1).</p>
633
634 </div>
635
636 <h4>Random Track Choice</h4>
637
638 <div class=section>
639
640   <p>This has been completely rewritten to support new features:</p>
641
642   <ul>
643
644     <li>tracks in the recently-played list or in the queue are no longer
645     eligible for random choice.</li>
646
647     <li>there is a new <tt>weight</tt> track preference allowing for
648     non-uniform track selection.  See disorder(1) for details.</li>
649
650     <li>there is a new configuration item <tt>replay_min</tt> defining
651     the minimum time before a played track can be picked at random.
652     The default is 8 hours (which matches the earlier behaviour).</li>
653
654     <li>recently added tracks are biased up; see <tt>new_bias</tt> and
655     <tt>new_bias_age</tt> in disorder_config(5).</li>
656
657   </ul>
658
659 </div>
660
661 <h4>Web Interface</h4>
662
663 <div class=section>
664
665   <p>This has been largely rewritten.  The most immediate benefits are:</p>
666
667   <ul>
668     
669     <li>the search page is integrated into the choose page, and
670     includes links to parent directories.</li>
671     
672     <li>if you try to do something you have insufficient rights for,
673     instead of getting an error page or nothing happening, you are
674     redirected to the login page.</li>
675
676   </ul>
677
678   <p>Customizers should find their lives easier: the syntax is less onerous, it
679   is possible to define macros to avoid repetition, and the documentation is
680   less monolithic (see disorder.cgi(8) as a starting point).</p>
681
682   <p>Mail is now sent via the system sendmail program, though it remains
683   possible to use TCP to connect to an SMTP server.  See <tt>sendmail</tt> and
684   <tt>smtp_server</tt> in disorder_config(5).</p>
685
686   <p>The web interface is now installed automatically.  If you don't want it,
687   use <tt>./configure --without-cgi</tt>.  If you want it in a non-default
688   location, or no location for it is detected, set <tt>cgidir</tt>
689   and <tt>httpdir</tt> on the <tt>./configure</tt> command line.</p>
690   
691 </div>
692
693 </div>
694
695 <h3>Disobedience</h3>
696
697 <div class=section>
698
699   <p>There is now a new user management window.  From here you can add and
700   remove users or modify their settings.</p>
701
702   <p>Relatedly, the server will only allow remote user management if you set
703   <tt>remote_userman</tt> to <tt>yes</tt>.</p>
704
705 </div>
706
707 <h3>Miscellaneous</h3>
708
709 <div class=section>
710
711   <p><tt>scripts/setup</tt> now honors command line options, and can
712   set up network play as well as the local default sound device.</p>
713
714 </div>
715
716 <h3>Bugs Fixed</h3>
717
718 <div class=section>
719
720   <table class=bugs>
721     <tr>
722       <th>ID</th>
723       <th>Description</th>
724     </tr>
725
726     <tr>
727       <td><a href="http://code.google.com/p/disorder/issues/detail?id=2">#2</a></td>
728       <td>Search results should link to directories</td>
729     </tr>
730
731     <tr>
732       <td><a href="http://code.google.com/p/disorder/issues/detail?id=6">#6</a></td>
733       <td>Schedule tracks for a particular time</td>
734     </tr>
735
736     <tr>
737       <td><a href="http://code.google.com/p/disorder/issues/detail?id=10">#10</a></td>
738       <td>Non-uniform track selection</td>
739     </tr>
740
741     <tr>
742       <td><a href="http://code.google.com/p/disorder/issues/detail?id=11">#11</a></td>
743       <td>Bias random selection to newly added tracks</td>
744     </tr>
745
746     <tr>
747       <td><a href="http://code.google.com/p/disorder/issues/detail?id=13">#13</a></td>
748       <td>Default encoding for debian setup scripts</td>
749     </tr>
750
751     <tr>
752       <td><a href="http://code.google.com/p/disorder/issues/detail?id=16">#16</a></td>
753       <td>Cookie expiry causes user to be silently logged out and not
754       subsequently redirected to login page</td>
755     </tr>
756     
757     <tr>
758       <td><a href="http://code.google.com/p/disorder/issues/detail?id=20">#20</a></td>
759       <td>Broken aliasing rules</td>
760     </tr>
761     
762   </table>
763
764 </div>
765
766 </div>
767
768 <h2>Changes up to version 3.0.2</h2>
769
770 <div class=section>
771
772   <p>Builds <tt>--without-server</tt> should work again.</p>
773
774   <p>The web interface is a bit more liberal in the cookie value
775   syntax it will accept.</p>
776
777   <p>Clients fail more gracefully if no password is available.</p>
778
779 </div>
780
781 <h2>Changes up to version 3.0.1</h2>
782
783 <div class=section>
784   
785   <p>Debian upgrades from 2.0.x should now work better.</p>
786   
787 </div>
788
789 <h2>Changes up to version 3.0</h2>
790
791 <div class=section>
792   
793   <p><b>Important</b>!  See <a
794   href="README.upgrades.html">README.upgrades</a> when upgrading.</p>
795   
796   <h3>Platforms And Installation</h3>
797   
798 <div class=section>
799   
800   <p>Mac OS X and FreeBSD are somewhat supported.  There is now a bash
801   script in <tt>scripts/setup</tt> which will automate the setup after
802   <tt>make install</tt>.</p>
803   
804 </div>
805
806 <h3>Server</h3>
807
808 <div class=section>
809   
810   <p>Users are now stored in the database rather than a configuration
811   file.</p>
812   
813   <p>The server now has a built-in list of stopwords and players, so
814   only additions to these need be mentioned in the configuration file.</p>
815   
816   <p>The default inter-track gap is now 0s.</p>
817   
818   <p>How sound is played is now controlled via the new <tt>api</tt>
819   configuration command.  This also controls how the volume is set,
820   which now works with ALSA as well as OSS.</p>
821   
822   <p>A bug in the MP3 decoder was fixed (also in 2.0.4).</p>
823   
824 </div>
825
826 <h3>Web Interface</h3>
827
828 <div class=section>
829   
830   <p>The web interface now uses cookies to remember user identity, and
831   allows online registration of new users.  Also it is no longer
832   necessary to manually specify the URL of the web interface (but you
833   can override it if you don't like the value it figures out).</p>
834   
835   <p>It is possible to allow users to register via the web interface.</p>
836   
837   <p>The web interface's browser support has been improved.  It has
838   been tested with Firefox 2, Safari 3, Konqueror 3, Internet Explorer
839   7 and Opera 9.</p>
840   
841 </div>
842
843 <h3>Disobedience</h3>
844
845 <div class=section>
846
847   <p>A bug which would cause a crash if you attempt to rearrange the
848   queue while no track was playing has been fixed.  There is a new
849   'deselect all tracks' option, mirroring 'select all tracks.</p>
850   
851 </div>
852
853 </div>
854
855 <!--
856 Local Variables:
857 fill-column:79
858 indent-tabs-mode:nil
859 End:
860 -->