* 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
* Refactor Popup.setVisibleOverride
* Use event to observe visibility changes
* Add setAllVisibleOverride/clearAllVisibleOverride
* Add setAllVisibleOverride/clearAllVisibleOverride cross frame handlers
* Update how visibility is changed
* Wait for next frame to ensure visibility has been updated
* 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
* Add _invokeSafe function to silently ignore extension unload errors
* Remove "Api" from function names
* Add invokeSafe to Popup
* Don't redundantly set content type to 'unloaded'
* Remove some unnecessary _setQuery calls
* Add support for forcing the query parser to be visible or hidden
* Move _setEventListenersActive calls
* Remove URL for kanji links
* Refactor _setContentTermsOrKanji
* Move search query text assignment into Display
* Move title updates into Display
* Move popup close calls
* Prevent infinite loop of extension unload events
* Standardize setContent calls
* Rename _queryText to _fullQuery
* Move query parser into Display and update float.html
* Generalize params
* Add "full" parameter to maintain the original full query
* Create DisplayHistory
* Change arguments for _setContentTermsOrKanji
* Set up history-driven content updates
* Use new history only
* Load definitions if missing
* Refactor definitions getting
* Add support for wildcards
* Move definitions setup
* Add events
* Allow state change even if there is no history state
* Update search page to use history
* Fix history overwriting
* Fix search page not seeing state chang events during prepare
* Update state if necessary
* Don't reassign query text if the same
* Remove DisplayContext
* Initialize with real history state
* Track URL
* Update DisplayHistory to support pseudo-history
* Configure history settings on search page
* Fix state
* Use full URL
* Change data format of setContent
* Rename details to content
* Update event arguments
* Fix animation
* Remove old state changes
* Clear content properly
* Remove set/clear content overrides
* Fix setting up event listeners for content clear
* Make clearContent private
* Make focus opt-in
* Validate source
* Add unloaded type
* Generalize content params
* Update how extension unload content is assigned
* Restore query blurring
* Simplify invoke
* Pass isTerms instead of type
* Update DisplaySearch.setContent to pass argument array
* Simplify argument object structure for setContent
* Move focus and disableHistory level
* Always include focus and disableHistory options
* Change disableHistory to history
* Pass source text to setContent
* Use consistent argument/object field order
* Remove unused previous field
* Combine logic for forward/back navigation
* Remove unused function
* Rename field
* Change extensionUnloaded trigger function
* Update how extension unloaded content is shown
* Ignore certain errors caused by extension unload
* Add _showExtensionUnloaded function
* Wrap internals of updateOptions
* Suppress errors caued by extension unload
* Make the frontend trigger the popup's extensionUnloaded event
* Organize by public/private
* Don't access super class's private members
* Make _autoPlayAudioTimer private
* Refactor constructors
* Make functions private
* Organize by public/private
* Organize window message handlers
* Make fields private
* Refactor DisplaySearch constructor
* Make functions private
* Organize by public/private
* Remove statics
* Move orphan detection and error handling to Display
* Add clearContent function
* Add/use public get/set functions for optionsContext
* Add public getOptions
* Move interactive assignment
* Mark fields as private
* Mark functions as private
* Change stray getter into a function
* Move "yomichan" object setup to a separate file
* Update script imports
* Align message handlers
* Rename Yomichan.prepare to Yomichan.ready
* Add new prepare function
* Improve isExtensionUrl
* Convert api.js into a class instance
* Use new api.* functions
* Fix missing binds
* Group functions with progress callbacks together
* Change style
* Fix API override not working
* Update formatting
* Merge default tag color with category-less tags
* Use CSS variables for colors
* Add dark theme colors
* Move color variables into display.css
* Remove old stylesheets
* Update headings
* Bump minimum Firefox version to support CSS var()
* Revert popular kanji text color
* update Frontend options on modifier change
* add modifier key profile condition
* use select element for modifier condition value
* support "is" and "is not" modifier key conditions
* use plural
* remove dead null check
it's never null in that function
* pass element on rather than assigning to this
* rename event
* remove Firefox OS key to Meta detection
* hide Meta from dropdown on Firefox
* move input type
* Remove _getVisualViewportScale
* Use super's mouse event listener definitions
* Remove redundant override
* Remove getTouchEventListeners override
* Rename Display.onSearchClear to onEscape
* Change onSearchClear to clearSelection and use an event
* Update how text is marked for selection and deselection
* Replace onError with yomichan.logError
* Update setEnabled to refresh all event listeners
* set optionsContext from Frontend
* update Popup+Display options on Frontend change
* remove popup setOptions
* only update DisplayFloat options from Frontend
* fix optionsContext usage
* fix preview frame arguments
* keep Frontend URL up to date
* cache url
* fix preview frame
* trigger modifyingProfileChange in correct places
* remove async from function not using await
* refactor optionsContext in Frontend
Past tense better indicates that the options were changed, but no data
is being included as part of the event. It is also more consistent with
the other event names the yomichan object currently provides.