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