Devious Fish


Work in progress

  • Documentation
    • Warning about trying to build/use on mixed libressl/openssl systems.
  • Daemon improvements/bugs:
    • Consider refactoring MusicLibrary: by passing construction-time allocator on ThingieContainer, can we get rid of all (or a bunch of) the template crap?
    • Check on refactor Users to use callbacks and get rid of linkages
    • Refactor: MusicThingie and descendants to use shared_ptr; gets rid of custom memory management and related containers.
    • Alternate: Refactor: MusicRetainer<class>
    • Refactor: Reference count/shared_ptr<> sources. Done right, we can get rid of periodic source removal checks from media manager and just drop it right away. History purge can be ditched too.
    • Refactor: Make mix and everything playlists variables in source base; put return functions there.
    • BiasedRandomChooser<> template class
    • Tone generator: DTMF generator?
    • Track spacing/ inject specific track between all other tracks.
  • Unit tests needed
    • filter tests
    • playlist create smart
    • playlist create dumb
  • Pianod client improvements
    • Build script: Deliver client locale files to website. Remove deliver target from Makefile
    • TrackView: viewing next song at front of queue disables dequeue option in additional-actions pop-up
    • Client: When "Stopped", change Special Playlists->Stop to Resume/Continue.
    • Need to wipe field values on load, or Linux may remember them
    • If multiple rooms, prompt to select one on login. Option for 'always ask' or 'always start here'.
    • XML/ActiveX loader that pulls in JQuery from; ifnotfound, pulls it instead from our webserver.
    • Animation for changing shown panes, accordions?
    • Searchview: previous/next search review history buttons
    • Trackview: handle QueueChanged event
    • Trackview: explain song
    • Trackview: Recue current song
    • Trackview: Get history/future data from QueueView.
    • QueueView: Process song messages directly rather than querying STATUS.
    • SearchView: Add all search results as seeds to some playlist
    • SearchView: Shuffle search results
    • Client: Queueview needs to send track rating changes to its subscribers

Recent progress

Generated from SVN logs.

Date Revision Description
13 Aug 2018 r300
  • threadedmediaplayer.cpp: Add missing header file.
  • fb_service.c: Fix mixed tab/space indentation.
  • piano: Remove cruft.
13 Aug 2018 r299
  • FFmpeg 4.0 compatiblity fixes.
16 Mar 2018 r298
  • Fix for gzstream header-and-library detection.
15 Feb 2018 r297
  • Unremove set +o pipefail in piano. Breaks on one unit test machine w/o it.
15 Feb 2018 r296
  • - libavdevices output: add flush timing controls to prevent audio cut-off or deadlock.
  • - piano: do not include spurious output in data responses.
  • - configure: check if explicit libc++ linking is required.
11 Feb 2018 r295
  • Fix portability bug in test script.
11 Feb 2018 r294
  • Football: Log error if service setup fails because HTML serve direcotry does not exit.
  • Unit test, piano: Add delays when sending data into TLS programs.
10 Feb 2018 r293
  • Update piano script to reflect changes for pianod2 and add TLS.
  • Add TLS testing to test script.
07 Feb 2018 r292
  • Football: Check file-serve pathname for symbolic links to other areas outside path.
  • Fixed some minor memory leaks.
28 Jan 2018 r291
  • Correct dependency in Makefile.
28 Jan 2018 r290
  • Respect system hosts.deny, hosts.allow files where available.
28 Jan 2018 r289
  • - Client I18N: Link en_us files to en (no locale); include both in distribution.
27 Jan 2018 r288
  • Correct delivery location.
26 Jan 2018 r287
  • man page: document what happens when shadowing disabled.
  • Ignore SIGPIPE if we don't have SO_NOSIGPIPE, regardless of having MSG_NOSIGNAL. Fixes abort on TLS connections on Linux/mbedtls.
  • Football: OpenSSL: Use better SSL/TLS choices/ ideally TLS_server_method, when available.
  • Client login: Fix broken guest/visitor login.
22 Jan 2018 r286
  • Delete Orchid, update Doxygen paths.
22 Jan 2018 r285
  • Remove reintegrated perette_buildfix branch.
22 Jan 2018 r284
  • Merge changes from perete_fixbuild branch.
22 Jan 2018 r283
  • Fix minor build snags. Update developing and install instructions.
22 Jan 2018 r282
  • Feature: automatically build html directory.
21 Jan 2018 r281
  • Fix multiline assertion in TypeScript.
  • Add a few additional developing notes.
21 Jan 2018 r280
  • Update HTML build system for Linux.
  • Change validators to invoke directly.
  • Update TypeScript code to pass under 3.2+ JQuery definitions.
20 Jan 2018 r279
  • Create trunk, branches, and move source code into trunk.
26 Dec 2017 r278
  • Incomplete code for proximity detection via ethernet hardware address.
30 Nov 2017 r277
  • Improvements to configuration to check for header files in addition to libraries.
29 Nov 2017 r276
  • Fix bug in Filter-from-song-with-duplication-flags constructor
  • Remove various dead code.
  • Add/update documentation, including several functions for MusicLibrary’s ThingieContainer.
27 Nov 2017 r275
  • Add callback manager.
  • Refactor using callbacks to break bidirectional coupling between media manager & service manager.
19 Nov 2017 r274
  • Fix filenames & copyright dates in file headings.
  • Add docucomments on some methods.
19 Nov 2017 r273
  • Consolidate `purge` functions to ThingieList template from PlayListList and SongList.
18 Sep 2017 r272
  • Correct spelling of “deejay”.
  • Add deejay privilege to client user settings.
  • Add deejay to unit test.
  • Client behavior changes for deejays.
  • Rework ranks & privileges to use enum classes.
  • Add enumeration iterator, update code base to use where relevant.
13 Sep 2017 r271
  • Requests and cancellations changed to standard user rank (from listener), new “dejay” privilege added to grant these individually.
13 Sep 2017 r270
  • Add LibreSSL support for Football.
27 Mar 2017 r269
  • Add client ‘dist’ target. Update copyright dates.
  • Add timing delay for second-user connection in unit test.
27 Mar 2017 r268
  • Trying including <json-c/json.h> before <json/json.h>. Thanks to Jared Gailey for reporting issue.
  • Remove an overly tight assertion for playlists triggered when a source goes offline.
  • When dequeueing songs, don’t promote random selections into the request queue.
17 Feb 2017 r267
  • Client: Search view result set actions use predicate of last search rather than input contents.
  • Fix queue view history items turning black.
  • Fix two errors introduced during recent refactoring (wrong enum typo caused assertion, parameter lost from Gstreamer function risks crashes).
09 Feb 2017 r266
  • Enhance filter-to-query converter to handle to allow ‘and’ed criteria.
  • Refactor some enums to enum classes.
09 Feb 2017 r265
  • Adding rapidjson to project for future use.
08 Feb 2017 r264
  • Client: Fix historical tracks changing appearance to future tracks during refresh.
  • When first playlist is assigned from trackview pop-up, refresh so it shows.
01 Feb 2017 r263
  • pianod: Improvements to tone generator left/right channel handling on restore.
  • Add ‘DISCRETE CHANNELS’ option for tone generator to add left/right tones.
  • Client: Add checkbox to include left/right channel tones.
29 Jan 2017 r262
  • Remove chaos monkey.
  • Unit test: Fix deadlocked process cleanup.
29 Jan 2017 r261
  • pianod: Avoid rapid state changes to prevent deadlocking Gstreamer libraries.
  • client: Adjust Z-index of status/error messages to ensure they display.
  • Fix translation string for CONFIRM_ADDED_TO
  • Fix translate() function for multiple substitutions
  • Fix status reporting from track seed add/new playlist pop-up
  • Build/release: Strip assertions from client for release.
27 Jan 2017 r260
  • Client: Refactoring trackview to utilize data from QueueView.
26 Jan 2017 r259
  • pianod: Add cue & track complete logging to audio engine.
  • GStreamer: Fix race conditions with setting state, check results of setting state both synchronous and asynchronous.
26 Jan 2017 r258
  • gstreamer player: If element link fails, let gstbus error message shutdown player.
  • Client: Fixes for scrolling behavior, fix occasional timing-related assertion from queue view at end of track.
25 Jan 2017 r257
  • gstreamer player: fix an uncaught exception, thrown by a callback function executing on a thread created by gstreamer.
  • Update & add docucomments.
22 Jan 2017 r256
  • Orchid: Update preferences dialog to use autolayout.
  • Add text translations of slider positions in audio preferences.
  • If service can’t be created, display error dialog instead of crashing.
19 Jan 2017 r255
  • Fix issues found by unit test script.
19 Jan 2017 r254
  • pianod: Add transient playlist
  • Refactor ratings into enum class. Update filter & autotuning to remove rounding/accept precise values.
  • filter: add toString() function, refactor
  • Update football, filter, and client quote handing. Protocol change.
  • Add setting for preroll duration to audio options. Add better detection and handling of single-open devices.
11 Jan 2017 r253
  • pianod: Add additional checks for requestable sources when expanding thingies to their songs, which could be weaseled by earlier checks using an ID predicate.
  • Client: troubleshoot diagnostic reporting, add feedback indicating autotuning enabled in trackview.
06 Jan 2017 r252
  • pianod: Added a predicate form to choose source.
  • pianod: Added ways to forget & rename sources
  • client: Added forget to Source View, renamed remove to disconnect.
04 Jan 2017 r251
  • Client:
  • - Display sort field indicators in table headings
  • - Show sort controls on small screens.
  • - Rename playlists via Seed view