* 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