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