* Move some common functionality
* Move setupEnvironmentInfo into ExtensionContentController
* Move background/environment.js to extension/environment.js
* Add base64ToArrayBuffer to StringUtil
* Remove unnecessary media-util.js import
* Run async requirements in serial rather than parallel
* Update API.getMedia handler to convert ArrayBuffer content to base64
* Rename getImageResolution to getImageDetails
* Change parameter order of getImageDetails
* Pre-process and store media as an ArrayBuffer
* Remove MediaUtil.createBlobFromBase64Content
* Fix Anki media injection
* Add accessibility option for forcing Google Docs HTML-based rendering
* Update settings
* Send a documentStart message at document start
* Add accessibility script for Google Docs
* Set up accessibility
* Update tests
* Rename param for consistency
* Move media loading functionality into DictionaryImporterMediaLoader
* Create test class for media loading
* Remove unnecessary Blob/Image/URL functionality
* Simplify svg and container styles
* Rename pitch-accent-details to pitch-accent-graph-container
* Rename pitch-accent-graph* to pronunciation-graph*
* Remove unused template
* Omit quotes
* Rename pitch-accent-character to pronunciation-mora
* Simplify names
* Replace pronunciation-mora-inner with pronunciation-character
* Improve grouping of nasal characters
* Simplify character replacement
* Replace pseudo-elements with real elements
* Use an element rather than a fragment
* Rename functions
* Add wrapper
* Rename pitch-accent-characters to pronunciation-text-container
* Update test data
* Update downstep notation generation
* Rename pitch-accent-position to pronunciation-downstep-notation-container
* Space
* Wrap pronunciations in a container node
* Update preview
* Embed pitch accent styles directly
* Add support for textFurigana media
* Add readingMode parameter
* Implement readingMode
* Add {sentence-furigana} marker
* Fallback to sentence if furigana isn't available
* Update test data
* Expose more settings to QueryParser
* Rename textParse to parseText
* Refactor
* Convert reading inside QueryParser rather than Backend
* Remove use of readingMode from backend
* Rename
* Update parseText args
* Simplify
* Update results
* Move use of optionsContext
* Run mecab and internal parser in parallel
* Added "dictionary-reading" reading mode
* Update romaji conversion case
* Add support for injecting the text selection into Anki cards
* Add selection-text
* Upgrade to add {selection-text}
* Update descriptions
* Update test data
* Add url/voice options to audio sources
* Add help for TTS
* Remove old settings
* Update tests
* Update use of audio source URL
* Improve labels for sources with the same type
* Move sources to the end of audio options object
* Add custom-json audio source type
* Add support for downloading custom-json
* Remove customSourceType
* Proof-of-concept for showing card tags (#1626)
* Resolved most PR comments:
- Added a snackbar notification when clicking tag button
- Replaced magnifying glass icon with new tag icon
- Button now contains a span w/icon, to use text color
- Removed unnecessary attributes from button
- Backend now returns full noteInfos object
- Frontend now handles filtering tags
* Add options to show/hide tag button & filter tags
* Do not show tags button if, after filtering, we have zero tags.
* Change tags option to enums, optimize tags intersection check & fix code style.
* Update options-util.js to include new tag options.
* Fix wording on new tag setting.
* Add CSS to remove hidden buttons from the display layout.
* getAnkiNoteInfo extra parameter for additional info.
* Add new tag option to tests.
* Remove unnecessary changes related to anki tags option.
* Code style fixes.
* Update environment info to return the 'safari' browser
* Fix popup display on Safari
* Update environment assignment
* Add data-loading-stalled property when loading takes longer than expected
* Add notification when loading has stalled
* Allow getDictionaryInfo invocation on non-privileged contexts
* Update _validatePrivilegedMessageSender
* Don't listen to 'voiceschanged' event unless addEventListener is present
Also expose an event
* Add double-down-chevron.svg
* Add options
* Update dictionary importers
* Update settings
* Add support for collapsible definitions
* Improve case when there is a very small amount of overflow
* Fix incorrect enabled state of newly imported dictionaries