* Add sourceTerm field to 'term' and 'termGrouped' definitions
* Fix comparison of expressions which are always the same
* Rename/restructure term info map
* Add source term
* Add sourceTerm to expressions array
* Reuse furiganaSegments
* Add helper function _createExpressionDetailsListFromTermInfoMap
* Add expressions array to termMergedByGlossary
* Add expressions to definition types 'term' and 'termGrouped'
* Rename expressionDetails* to termDetails*
* Correct the source/rawSource/sourceTerm for related sequenced definitions
* Simplify structure of sequencedDefinitions
* Remove TODO
* 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
* Add helper function _getSecondarySearchDictionaryMap
* Use spreads instead of concat
* Create helper function for assigning disambiguation info
* Add _getTermTagsScoreSum helper
* Rename variables
* Move assignment of definition details
* Convert databaseDefinitions to standard definitions
* Move creation of definitions
* Always pass definitionsByGlossary directly to _mergeByGlossary
* Refactor how used definitions are tracked
* Change _mergeByGlossary parameters
* Simplify _mergeByGlossary
* Generate definition structure at the end of the function
* Add reusable function to clone a tag
* Restructure merged sub-definition creation
* Move setup of totalExpressionSet/totalReadingSet
* Track all definitions with matching glossary
* Move creation of definitionTags
* Update score calculation for multiple definitions
* Disambiguate function name
* Rename variables
* Add helper function _createMergedGlossaryTermDefinition
* Remove rarely used check for secondary search results
Unclear what the purpose was since it was almost never used
* Update data structure
* Rename function/variable
* Add helper functions _createMergedTermDefinition
* Assign expressionDetails to variable
* Add rawSource to grouped definitions
* Use shared function for creating unused definition entries
* Add helper function _createMapKey
* Refactor _createExpressionDetails
* Change argument order
* Add _getTagNamesWithCategory helper
* Optimize _compressDefinitionTags
* Add _createGroupedTermDefinition helper
* Add type information
* Use consistent order for term definition fields, add comments for omitted fields
* Remove unused index field
* Add helper function _createKanjiDefinition
* Update types
* Add frequencies/pitches arrays
* Update terms array setup
* Simplify for loop
* Remove redundant property assignment
* Simplify how deinflections with no definitions are ignored
* Ensure duplicates are removed
* Rename variable
* Add comments about duplicate data
* Refactor variable/parameter names
* Move functions
* Rename functions
* Rename variable
* Add dictionaryPriority field
* Simplify priority comparison
* Rename argument
* Optimize comparison function when dictionary priority is not needed
* Add length check
* Remove unused parameter
* Rename variables/parameters
* Rename dictionaries to enabledDictionaryMap
* Store compactTags/mainDictionary options to variables
* Refactor _getSearchableText
* Simplify object structure of deinflections
* Modify existing array when removing duplicates
* Update _sortDefinitions to not return a value
* Use explicit argument value
* Use a Collator for string comparisons
* Simplify order comparison
* Improve tag creation and sanitization
* Switch .map to a for loop, skip null meta
* Add _createKanjiStat
* Move _sortDefinitions definition
* Fix kanji stat sorting
* Remove return value from _sortTags
* Add _sortKanji
* Add fast exits for sorting
* Add _sortDefinitionsByIndex
* Combine sort function
* Improve creation of kanji definition data
* Use "databaseDefinitions" instead of "definitions" to disambiguate
* Simplify
* Simplify further
* Simplify max length calculation
* More destructuring
* Use databaseDefinitions variable name
* Move _mergeBySequence body into _getSequencedDefinitions
* Use databaseDefinitions field name
* Move maxLength calculation
* Use shared _createTermDefinitionFromDatabaseDefinition
* Simplify map
* Move definition sorts for better consistency and less redundancy
* Move _createExpression function
* Update setup of sequenced definitions
* Simplify for loop
* Add scanOnTouchMove/preventTouchScrolling scanning input options
* Add settings controls
* Support scanOnTouchMove in TextScanner
* Support preventTouchScrolling in TextScanner
* 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 options for searchTerms and searchKanji
* Add settings HTML
* Add options to TextScanner
* Update _search/_findDefinitions to include searchTerms/searchKanji args
* Update _searchAtFromMouseMove args
* Change argument structure for _searchAt
* Use scanning options for searchTerms and searchKanji
* Add options for scanning input types
* Move buttons in layout, refactor CSS
* Add options for input types
* Use input type filters
* Add _getMatchingInputGroupFromEvent
* Use input filters for touch events
* Add _getTemplates function
* Add template renderer to display pages
* Add AnkiNoteBuilder to Display
* Update AnkiTemplatesController to directly use TemplateRenderer
* Remove old APIs
* Add inputs to options.scanning
* Update CSS for mouse buttons
* Update list counters
* Set up HTML/CSS
* Add input controller
* Use new inputs
* Include mouse buttons
* Update how button inputs are detected
* Add index/empty fields to the input details object
* Update none check for scanning modifier
* Remove old settings
* Remove unused global
* 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
* Add hideDelay option
* Add _clearSelection
* Use hideDelay
* Prevent repeated delayed selection clears
* Fix popup hide timer being cleared when the cursor is moved into the frame
* Add functions for getting keyboard key information
* Use os + DocumentUtil to get modifier key names
* Remove keyboard modifier info from environment info
* Create searchAt wrappers
* Add optional support for searching on the click event
* Update QueryParser to use TextScanner's searchOnClick functionality
* Move/rename searchAt
* Move pendingLookup checks
* Add 'searched' event to TextScanner
* Use common searched event for Frontend and QueryParser
* Move functions, make private
* 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
* Add support for regex pattern testing
* Add tests
* Separate JsonSchemaProxyHandler statics into JsonSchemaValidator
* Use this instead of JsonSchemaValidator
* Make JsonSchemaValidator non-static
* Use cache map for regex
* Refactor document.js into a class
* Move public functions first
* Rename private functions
* Rename
* Rename argument
* Use instance of DocumentUtil
* Update tests
* Refactor
* Rename (test-)document.js to (test-)document-util.js
* 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