helpers/ui_server.py.dox.md
ui_server.py helper module.ui_server.py because this directory is intentionally flat.ui_server.py owns the runtime implementation.ui_server.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.UiServerRuntime (no explicit base class)
create(cls) -> 'UiServerRuntime'refresh_runtime_settings(self) -> Noneregister_http_routes(self) -> Noneregister_transport_handlers(self) -> Nonebuild_asgi_app(self, startup_monitor: StartupMonitor)access_log_enabled(self) -> boolUiRouteHandlers (no explicit base class)
async login_handler(self)async logout_handler(self)async serve_splash(self)async serve_safe(self)async serve_index(self)async serve_ui_asset_bundle(self)async serve_builtin_plugin_asset(self, plugin_name, asset_path)async serve_plugin_asset(self, plugin_name, asset_path)async serve_extension_asset(self, asset_path)_positive_int_env(name: str, default: int) -> intconfigure_process_environment() -> NoneUPLOAD_LIMIT_BYTES, SOCKETIO_PING_INTERVAL_SECONDS, SOCKETIO_PING_TIMEOUT_SECONDS, GZIP_MINIMUM_RESPONSE_BYTES, GZIP_COMPRESSION_LEVEL, UI_INDEX_ASSET_URL, A0_SOCKETIO_PING_INTERVAL_SECONDS, A0_SOCKETIO_PING_TIMEOUT_SECONDS.asyncio, dataclasses, datetime, flask, helpers, helpers.api, helpers.extension, helpers.files, helpers.print_style, helpers.server_startup, helpers.ws, helpers.ws_manager, logging, os, secrets, socketio, starlette.middleware.gzip.logging.getLogger.setLevel, Localization.get.apply_process_timezone, _positive_int_env, field, Flask, threading.RLock, socketio.AsyncServer, WsManager, set_shared_ws_manager, cls, server_runtime.refresh_runtime_settings, settings_helper.get_settings, settings_helper.set_runtime_settings_snapshot, self.ws_manager.set_server_restart_broadcast, UiRouteHandlers, self.webapp.add_url_rule, register_api_route, register_ws_namespace, files.read_file, render_template_string, session.pop.serve_index() bootstraps the normalized UI control visibility map, timezone and time-format preferences, and the complete enabled WebUI extension manifest so startup extension discovery requires no per-surface API requests./ route uses serve_splash() to return the no-store, self-contained bootstrap document. The authenticated extensionless /ui/index route renders the existing index and runtime/user placeholders for the splash to install into the current document without navigation; /index.html remains a direct fallback for the same rendering path. The authenticated /safe route first returns a no-store, self-contained document that unregisters all origin service workers, then renders the existing index through serve_index() when its internal __direct=1 marker is present; it never initializes the asset bundle or a worker. The authenticated serve_ui_asset_bundle() endpoint passes the application entry URL to the generic recursive bundler and supports gzip transfer and payload-specific ETag revalidation while component, extension, and Alpine lifecycles remain unchanged.No child DOX files.