* Remove redundant language assignment
* Segment furigana from DisplayGenerator
* Remove furiganaSegments from translator data
* Add backwards compatibility for furiganaSegments
* Update tests
* Make Deinflector._ruleTypes private
* Add createDeinflection helper
* Remove unnecessary field assignments from Deinflector
Move them to Translator instead
* Make invokeContentOrigin public
* Move display resizer functionality into a new class: DisplayResizer
* Simplify field names
* Use parent frame instead of content origin
* Remove unused
* Refactor _groupTerms and add doc comment
* Update where expression/reading is acquired from
* Add doc comment
* Add isPrimary field
* Update test data
* Add definition which has "isPrimary": false definitions
* Merge ungrouped characters
* Update iteration
* Fix incorrect code point handling
* Simplify text
* Specify language
* Update how parsed status is represented
* Add api.textHasJapaneseCharacters
* Add support for empty query
* Add support for showing the query parser for TextSourceElement
with content that does not start with Japanese text
* Update implementation of _buildTermMeta
* Remove old implementation
* Expose dictionaryPriority on frequencies and pitch accents
* Update how meta data is generated; add index
* Update order
* Update names
* Expose expressionIndex as part of pitch/frequency data
* Implement meta sorting
* Update test data
* Improve grouping for inflection and expression styles
* kanji-link => expression-kanji-link
* Remove unnecessary entry-header2 and entry-header3
* Move tag list into header for consistency with term definitions
* Move styles
* Add clear
* Add valid field
* Add isNoteDataValid function
* Update _areDefinitionsAddableForcedValue to return proper valid values
* Refactor isAnkiConnected check
* Force canAdd to false if not valid
* Replace :not(:disabled) styles
* Use var for style
* Update active styles
* Update disabled styles for <input> elements
* Update button disabled styles
* Add focus styles to checkbox
* Update style name
* Add card icon to audio menu items
* Update cache data format
* Create _getCacheItem
* Add _playAudioFromSource function
* Implement default card audio info
* Specify exact audio to download when an override is assigned
* Abstract using _getMenuItemSourceInfo
* Update downloadability check
* Update the main audio menu buttons to also assign the default source
* Simplify getAllFiles
* Add test to validate script order
* Update script include order
* Update content script order
* Update sw.js and corresponding lint
* Update manifest
* Create Logger class and log instance
* Replace yomichan.logWarning with log.warn
* Replace yomichan.logError with log.error
* Replace yomichan.log with log.log
* Update the Yomichan class to use the global log object
* Update lint rules
* Move bg/js/anki.js to js/comm/anki.js
* Move bg/js/mecab.js to js/comm/mecab.js
* Move bg/js/search-main.js to js/display/search-main.js
* Move bg/js/template-patcher.js to js/templates/template-patcher.js
* Move bg/js/template-renderer-frame-api.js to js/templates/template-renderer-frame-api.js
* Move bg/js/template-renderer-frame-main.js to js/templates/template-renderer-frame-main.js
* Move bg/js/template-renderer-proxy.js to js/templates/template-renderer-proxy.js
* Move bg/js/template-renderer.js to js/templates/template-renderer.js
* Move bg/js/media-utility.js to js/media/media-utility.js
* Move bg/js/native-simple-dom-parser.js to js/dom/native-simple-dom-parser.js
* Move bg/js/simple-dom-parser.js to js/dom/simple-dom-parser.js
* Move bg/js/audio-downloader.js to js/media/audio-downloader.js
* Move bg/js/deinflector.js to js/language/deinflector.js
* Move bg/js/backend.js to js/background/backend.js
* Move bg/js/translator.js to js/language/translator.js
* Move bg/js/search-display-controller.js to js/display/search-display-controller.js
* Move bg/js/request-builder.js to js/background/request-builder.js
* Move bg/js/text-source-map.js to js/general/text-source-map.js
* Move bg/js/clipboard-reader.js to js/comm/clipboard-reader.js
* Move bg/js/clipboard-monitor.js to js/comm/clipboard-monitor.js
* Move bg/js/query-parser.js to js/display/query-parser.js
* Move bg/js/profile-conditions.js to js/background/profile-conditions.js
* Move bg/js/dictionary-database.js to js/language/dictionary-database.js
* Move bg/js/dictionary-importer.js to js/language/dictionary-importer.js
* Move bg/js/anki-note-builder.js to js/data/anki-note-builder.js
* Move bg/js/anki-note-data.js to js/data/anki-note-data.js
* Move bg/js/database.js to js/data/database.js
* Move bg/js/json-schema.js to js/data/json-schema.js
* Move bg/js/options.js to js/data/options-util.js
* Move bg/js/background-main.js to js/background/background-main.js
* Move bg/js/permissions-util.js to js/data/permissions-util.js
* Move bg/js/context-main.js to js/pages/action-popup-main.js
* Move bg/js/generic-page-main.js to js/pages/generic-page-main.js
* Move bg/js/info-main.js to js/pages/info-main.js
* Move bg/js/permissions-main.js to js/pages/permissions-main.js
* Move bg/js/welcome-main.js to js/pages/welcome-main.js
* Move fg/js/frame-ancestry-handler.js to js/comm/frame-ancestry-handler.js
* Move fg/js/frame-offset-forwarder.js to js/comm/frame-offset-forwarder.js
* Move fg/js/dom-text-scanner.js to js/dom/dom-text-scanner.js
* Move fg/js/text-source-element.js to js/dom/text-source-element.js
* Move fg/js/text-source-range.js to js/dom/text-source-range.js
* Move fg/js/float-main.js to js/display/popup-main.js
* Move fg/js/content-script-main.js to js/app/content-script-main.js
* Move fg/js/frontend.js to js/app/frontend.js
* Move fg/js/popup-factory.js to js/app/popup-factory.js
* Move fg/js/popup-proxy.js to js/app/popup-proxy.js
* Move fg/js/popup-window.js to js/app/popup-window.js
* Move fg/js/popup.js to js/app/popup.js
* Move mixed/js/core.js to js/core.js
* Move mixed/js/yomichan.js to js/yomichan.js
* Move mixed/js/timer.js to js/debug/timer.js
* Move mixed/js/hotkey-handler.js to js/input/hotkey-handler.js
* Move mixed/js/hotkey-help-controller.js to js/input/hotkey-help-controller.js
* Move mixed/js/hotkey-util.js to js/input/hotkey-util.js
* Move mixed/js/audio-system.js to js/input/audio-system.js
* Move mixed/js/media-loader.js to js/input/media-loader.js
* Move mixed/js/text-to-speech-audio.js to js/input/text-to-speech-audio.js
* Move mixed/js/comm.js to js/comm/cross-frame-api.js
* Move mixed/js/api.js to js/comm/api.js
* Move mixed/js/frame-client.js to js/comm/frame-client.js
* Move mixed/js/frame-endpoint.js to js/comm/frame-endpoint.js
* Move mixed/js/display.js to js/display/display.js
* Move mixed/js/display-audio.js to js/display/display-audio.js
* Move mixed/js/display-generator.js to js/display/display-generator.js
* Move mixed/js/display-history.js to js/display/display-history.js
* Move mixed/js/display-notification.js to js/display/display-notification.js
* Move mixed/js/display-profile-selection.js to js/display/display-profile-selection.js
* Move mixed/js/japanese.js to js/language/japanese-util.js
* Move mixed/js/dictionary-data-util.js to js/language/dictionary-data-util.js
* Move mixed/js/document-focus-controller.js to js/dom/document-focus-controller.js
* Move mixed/js/document-util.js to js/dom/document-util.js
* Move mixed/js/dom-data-binder.js to js/dom/dom-data-binder.js
* Move mixed/js/html-template-collection.js to js/dom/html-template-collection.js
* Move mixed/js/panel-element.js to js/dom/panel-element.js
* Move mixed/js/popup-menu.js to js/dom/popup-menu.js
* Move mixed/js/selector-observer.js to js/dom/selector-observer.js
* Move mixed/js/scroll.js to js/dom/window-scroll.js
* Move mixed/js/text-scanner.js to js/language/text-scanner.js
* Move mixed/js/cache-map.js to js/general/cache-map.js
* Move mixed/js/object-property-accessor.js to js/general/object-property-accessor.js
* Move mixed/js/task-accumulator.js to js/general/task-accumulator.js
* Move mixed/js/environment.js to js/background/environment.js
* Move mixed/js/dynamic-loader.js to js/scripting/dynamic-loader.js
* Move mixed/js/dynamic-loader-sentinel.js to js/scripting/dynamic-loader-sentinel.js
* Move background.html to /
* Move context.html to /
* Move info.html to /
* Move legal.html to /
* Move permissions.html to /
* Move pitch-accents-preview.html to /
* Move popup-preview.html to /
* Move search.html to /
* Move settings.html to /
* Move settings2.html to /
* Move template-renderer.html to /
* Move welcome.html to /
* Move float.html to /
* Move display-templates.html to /
* Update how query post-processing is implemented
* Update DisplaySearch to not subclass Display
* Update display construction
* Make display initialization consistent
* Remove unused
* Fix wanakana binding
* Use own frame/tab ID
* DisplaySearch => SearchDisplayController
* Fix globals
* Add key icon
* Update context icon styles
* Add permissions links
* Show warning badge if permissions are insufficient for certain settings
* Create PermissionsUtil
* Use PermissionsUtil in Backend
* Update SettingsController to use PermissionsUtil
* Update AnkiController to use getRequiredPermissionsForAnkiFieldValue
* Show the permissions buttons/links on the context page when necessary
* Update MV3 compatibility
* Update frameInformationGet to also return the tab ID
* Add tabId to Frontend
* Pass tabId/frameId to Display
* Pass ownership information using setContent
* Remove ownerFrameId for Popup classes
* Use frameId instead of ownerFrameId for screenshotting
* Use contentOrigin instead of owner
* Update _invokeContentOrigin implementation
* Refactor PermissionsToggleController to not require a setting
* Update nativeMessaging to be optional on Chrome
* Update parsing.enableMecabParser setting to request permissions
* Update permissions page to use PermissionsToggleController
* Update permissions documentation
* Disable toggle for permissions which are not optional
* Validate source window before handling messages
* Add unregisterHandler to CrossFrameAPI
* Refactor the process FrameAncestryHandler uses to get ancestor frame IDs
* Store a mapping of child frame information
* Update getFrameAncestryInfo to only run once
* Add getAllPermissions function
* Add permissionsChanged event
* Update ClipboardPopupsController to show permissions validation info
* Add invalid indicator
* Display invalid indicator when permissions are not valid
* Fix border color transition not being necessary on input-suffix-button
* Update _addAnkiNote to track errors
* Change comparison
* Update anki note adding to show errors
* Fix template
* Show errors when Anki card creation behaves unexpectedly
* Update some errors related to anki media injection
* Update addAnkiNote error handling
* Improve Anki errors
* Simplify error messages related to template rendering
* Update wording to be less repetitive
* Remove the shadow theme option from the welcome page, to avoid confusion
* Update input sizes
* Update select text to not clip the triangle icon
* Update wording
* Update descriptions
* Remove "popup" to not exclude the search page
* Add autoSearchClipboardContent option
* Hide header if there is any search text
* Add setting for autoSearchClipboardContent
* Add support for autoSearchClipboardContent
* Update badge indications to be based off current profile
* Update warning badge to display when no dictionaries are enabled
* Show how many dictionaries are enabled
* Add _getExpressionAndReading utility
* Add _getExpressionReadingKey utility
* Add _getAudioOptions
* Separate some logic into _createAudioFromInfoList
* Update cache data format so that it can be accessed synchronously
* Allow sources to be manually specified
* Add options to enable playback of a specific entry of a source
* Use a standard map
* Wrap function
* Improve cache to support multiple different source arrays
For the same reading/expression
* Rename variable
* Use null instead of an error
* Simplify details
* Simplify audio creation
* Return an array of sources instead of a single item
* Use sourceIndex instead of index
* Rename APIs
* Return more info about the source
* Return source instead of sourceIndex
* Create HotkeyHelpController
* Expose getAllTemplates
* Update hotkeys on the context page
* Update hotkeys on the display pages
* Fix display issue where a hotkey used to be defined but no longer is
* Add support for allowing TextScanner.search to force focus
* Simplify query parser searched event forwarding
* Defer fallback creation
* Simplify event listeners
* Change type to pointerType
* Change cause to eventType
* Change empty to passive; make .search function passive
* Remove unused input index
* Update settings v2 to be the default for existing users
* Update information on the old settings page
* Update information on the new settings page
* Update tests
* Add popupWindow options
* Add toBoolean converter
* Add settings
* Use new options
* Add test link
* Fix window state not working
* Make the window section advanced only
* Clarify the meaning of the 'None' option; rename to 'No key'
* Clarify Auto-hide search popup
* Clarify Scan delay
* Move Support inputs for devices with touch screens; make advanced
* Assign missing type
* Update KeyboardMouseInputField to use an array instead of a string
* Use "modifiers" instead of "value" or "inputs"
* Simplify
* Add support for using keys
* Use bool args instead of a string
* Create AnkiNoteData
* Create AnkiNoteDataDefinitionProxyHandler
* Update media injection
* Create AnkiNoteDataDefinitionSecondaryProperties
* Update note context format
* Expose url and cloze on definition
* Simplify for understandability
* Remove unused _createNoteData
* Update public object
* Remove trims on sentence, since it should already be trimmed
* Fix unused global
* Pass url into setContent
* Update where url is checked from
* Add documentTitle to state information
* Update how _getNoteContext gets the document title
* Update how url is fetched for options context
* Pass document title in to 'searched' event
* Refactor note adding/viewing functions
* Move _addDefinition
* Update where anki field templates are assigned
* Update _createNote to not include options/templates arguments
* Simplify getAnkiNoteInfo to not require duplicateScope
* Move TemplateRendererProxy creation into AnkiNoteBuilder
* Simplify _stringReplaceAsync
* Organize note generation
* Rename API
* Make the template rendering function more generic
* Rename sentenceExtent with sentenceScanExtent
* Update TextScanner.setOptions
* Change function argument order
* Rename quote map variables
* Fix edge case quote handling
* Update terminator maps to support character inclusion
* Copy set intersection functions
* Remove unused functions
* Simplify url check
* Remove parseUrl
* Simplify stringReverse
* Remove hasOwn due to infrequent use
* Rename errorToJson/jsonToError to de/serializeError
For clarity on intended use.
* Fix time argument on timeout
* Add missing return value
* Throw an error for unexpected argument values
* Add documentation comments
* Add support for regex replacements during the translation process
* Allow assignment of textReplacements
* Rename
* Set up test data
* Write expected data
* Set up options
* Prevent infinite loop if regex matches empty string
* Implement setting controller
* Add support for testing pattern replacements
* Separate material styles into a separate file
* Improve action button styles
* Rename --font-size-default to --font-size
* Remove px units
* Remove some material vars
* Fix some variable names
* Define variables
* Remove --shadow-vertical
* Revert name change
* Move var
* Rename var
* Update vars
* Remove redundant vars
* Update search styles
* Update styles
* Update colors
* Update variable names
* Include material.css on float.html page
* Improve styles for #content-scroll-focus
* Create new class to manage and control document focus
* Use new focus class
* Add a check to prevent redundant .blur calls
* Improve furigana when reading kana is not an exact match
* Simplify group structure
* Return consistent type
* Add more tests
* Remove redundant isAmbiguous assignment
* Simplify group usage
* Add helper function
* Optimize returned arrays
* Use variable
* Remove s(p)lice calls
* Reduce number of convertKatakanaToHiragana calls
* Optimize text length access
* Optimize reading substring
* Move segmentize to a separate function
* Use var
* Use _createFuriganaSegment
* Optimize distributeFuriganaInflected
* Improve styles for settings-item-button
* Add hover/active styles to settings-item-button
* Use consistent phrasing for setting buttons and include ellipsis
* Add script to build library files
* Add built parse5 library
* Add new SimpleDOMParser which uses parse5
* Update license info
* Update MV3 build to use the new SimpleDOMParser
* Update file exclusions
* Hide/clarify license info for MV2 builds
* Update tag style
* Add styles/HTML for notifications
* Add DisplayNotification class
* Add support for tag notifications
* Simplify notification content
* 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 formatting
* Add missing rule for progressive/perfect
* Add adnomial -ki rule
* Update rules for irregular verbs
* Organize rules by rulesOut
For the most part, the order is:
adj-i => v1 => v5 => vs => vk => other
* Add tests
* Remove unused
* Create DatabaseVM
* Update sequences in test dictionary
* Update documentation
* Add second valid testing dictionary
* Set up translator tests
* Write expected data
* Initial setup of settings page v2
* Add security options
* Add layout-aware scanning option
* Fix style
* Set up simple setting bindings
* Convert colors to variables
* Refactor, remove unused
* Set up variables for some size values
* Mark expandable entries with a pointer cursor
* Add scroll top link
* Update sidebar styles
* Update icon button styles
* Fix padding when settings are wrapped
* Update shadow styles
* Use animation timings
* Add support for being able to open the sidebar on small-screen/mobile devices
* Update styles and preview sidebar
* Add ability to expand the preview sidebar
* Scroll to initial target only after advanced setting is set
* Fix rebase issues
* Update z-index of modal
* Use Modal for testing
* Set up modal controller
* Update button styles
* Update modal design
* Update styling of multi-part inputs
* Fix button styles
* Create SettingsDisplayController
* Update scanning inputs
* Use nested option
* Update animation timings
* Update modals to be display:none when not open
* Update included scripts
* Move modal link/input control to SettingsDisplayController
* Simplify event handlers
* Add audio sources options modal
* Allow certain nodes to be selected on click
* Implement top link
* Add environment-specific display styles
* Implement storage info
* Update modal controller
* Remove TODO
* Remove unnecessary <br>
* Add primary dictionary option under result grouping option
* Simplify transform
* Update styles for short inputs
* Add toggleable status footer
* Update modal styles
* Fix more-toggle elements sometimes affecting wrong targets
* Add selector-observer.js reference
* Add support for dynamically-generated more-toggle elements
* Rename result grouping modes and add descriptions
* Update icon button style
* Add a no-more-only class
* Use absolute URLs
* Add kebab-menu icon button
* Update text styles
* Add disabled styles
* Update toggle styles to support default pointer when disabled
* Update modal.js reference
* Disable box shadow for disabled buttons
* Add support for menus, use menus for audio source removal
* Disable pointer events when a modal is closing
* Update the escape key to close menus before closing modals
* Add support for dictionary modals
* Remove debug log
* Remove redundant spinner
* Update nested option visibility
* Add support for import/export/reset
* Update URL
* Reorganize
* Add comments
* Fix toggle highlight not working
* Add radio style
* Fix dictionary separator line
* Add mouse icon
* Add support for an icon button container with input height
* Update profile selects
* Add support for editing profiles and profile conditions
* Enable overflow scrolling for popup menus
* Add support for input suffix buttons
* Style updates
* Implement Anki card controls
* Improve dictionary information
* Punctuation
* Add support for Anki card templates
* Add support for using the tab key
* Add support for custom CSS modal
* Add support for simple scanning inputs
* Simplify
* Don't exit modals/menus when pressing escape while an input is focused
* Add checkbox styles
* Set up advanced scanning inpugs
* Reorganize
* Add outer theme option
* Add controller for nested popups
* Update scannings inputs
* Set up settings for touch/pen inputs
* Add modal for input prevention
* Update label styles
* Options updates
* Update duplicate scope options
* Only show quality when format is JPEG
* Add auto-scaling options
* Update navigation options
* Rearrange options
* Fix icon
* Add group for popup-size
* Update styles for inputs
* Update description
* Update appearance of checkboxes, toggles, and radios
* Add more advanced popup options
* Add debug option
* Add pitch accent display options
* Update input fields
* Add conjugation
* Update guide link
* Update and simplify primary/secondary dictionaries
* Update link
* Un-nest a setting
* Update wordings
* Use consistent styling for lists
* Fix custom CSS modal fade affecting the layout
* Fix z-index of the top link
* Disable word wrap on some text
* Disable highlight color
* Update FAB positioning and sizing
* Update button spacing
* Remove preview frame controller code
* Remove welcome.html
* Update seconds units
* Use all appearance styles
* Add option for anki.checkForDuplicates
* Rearrange options
* Fix redundant margin assignment
* Move scanning.enableOnSearchPage option such that it is not nested
* Organize/update options