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