Various tidies, including disabling wakeword in absence of Voice2JSON.
Refactor link extraction to match new link dispatch, & defer internationalization to config
Merge branch 'main' of git.adrian.geek.nz:/srv/git/rhapsode into main
Factor out URI Fetching logic into seperate hackage.
Ensure link labels are unique in about:version
stylesheet: Highlight marks via audio-cue & pitch & speak page titles.
Distinguish SoundEffects+ & mixkit licenses on about page.
Incorporate earcon for <mark> elements.
Normalize sfx format (reduce failure points).
Fix keyboard input handling.
Denote that table headers are linked.
Add wakeword detection. Currently uses Voice2JSON/Mycroft Precise's default 'Hey mycroft'
Bug/compilation fixes to voice commands implementation.
Integrate Voice2JSON for voice command input.
Ended up coding the commandline in Haskell because that, somewhat surprisingly,
had better APIs for the purpose than C. Turned out to be well worth navigating the language barrier.
Initialize Voice2JSON for speech recognition!
Revert PocketSphinx integration.
Document licensing of sorting sounds.
Mark which column a table is sorted on.
Both for the listener (via audio cue) & generating descending links.
Implement sortable tables (TODO attach aria-sort attrs).