* Make storage controller optional
* Make more elements optional
* Update styles
* Create new welcome page
* Update URL for welcome guide
* Remove old guide
* Fix unused global
* Add api.getAnkiConnectVersion
* Enable basic functionality when certain features/elements aren't present
* Add info page
* Update information links
* Update info link on the settings v2 page
* Update translator to flag redundant tags instead of remove
* Update how compact tags are shown in the popup
* Pass compactTags option to note builder
* Update options templates
* Add options upgrade
* Add options upgrade test
* Refactor internal options for findTerms to not use the settings object
* Move findTerms/findKanji options creation
* Deconstruct used options values to variables before any await calls
* Rename findTermsOptions to just options
* Add documentation comments
* Add type information about definitions
* Use _sendMessageTab
* Move _sendMessageAllTabs next to _sendMessageTab
* Rename function
* Add and use _sendMessageTabIgnoreResponse
* Add and use _sendMessageIgnoreResponse
* Always include params
* Update function consistency
* Move loadImageBase64 into DictionaryImporter
* Convert mediaUtility to a class
* Add getFileExtensionFromImageMediaType to MediaUtility
* Use MediaUtility instead of _getImageExtensionFromMediaType
* Use MediaUtility in ClipboardReader to validate images before reading
* Create ClipboardReader class
* Use ClipboardReader in Backend
* Update ClipboardMonitor to use ClipboardReader
* Replace _onApiClipboardImageGet call
* Assign clipboard reader browser
* Add _getTemplates function
* Add template renderer to display pages
* Add AnkiNoteBuilder to Display
* Update AnkiTemplatesController to directly use TemplateRenderer
* Remove old APIs
* Update AnkiNoteBuilder to not store a reference to an AniConnect instance
* Use more consistent details format
* Organize options assignment
* Move media injection
* Inject images before injecting audio
* Make functions private
* Make static functions private
* Add function guiBrowseNote
* Assign default server as null
* Use get/set properties for server/enabled
* Refactor option values
* Refactor createNote/Data functions to not use options format directly
* Use createNote for testing
* Add errors
* Remove JsonSchema.clone
* Move createProxy function
* Group public properties first
* Create private version of getPropertySchema
* Mark functions as private
* Use non-static getValidValueOrDefault
* Mark private
* Make public validate function not take an info parameter
* Remove JsonSchema
* Add isValid function
* Use isValid for some tests
* Fix incorrect type
* Move simple find sort into translator.js
* Remove unused
* Use direct reference to database
* Make field private
* Remove statics
* Convert functions to private
* Organize by public/private
* Revert audio fetching functionality to use XMLHttpRequest
* Replace requestJson
* Replace requestJson
* Replace requestJson
* Replace requestJson and requestText
* Fix tests
* Include support for vulgar word searches
* Remove request.js
* Move options functions into a class
* Rename and privatize
* Organize by public/private
* Refactor to use async function
* Simplify update function signature
* Add comment for update
* Rename
* Copy _applyUpdates into _legacyProfileUpdateUpdateVersion
* Organize
* Move profile options updates
* Refactor update details
* Add async support
* Formatting
* Update eslint to 7.5.0
* Update eslint-plugin-no-unsanitized to 3.1.2
* Update fake-indexeddb to 3.1.1
* Rename DictionaryImporter.import to .importDictionary
Conflicts with o-unsanitized/method
* Update _updateSearchQuery to return the promise
* Update how the clipboard search popup is opened
* Create an API function to open the search popup
* Skip animation on popup creation
* Add API function