Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion astrbot/dashboard/api/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,12 @@ def create_dashboard_asgi_app(
app.state.jwt_secret = jwt_secret
app.state.dashboard_static_folder = static_folder
log_broker = getattr(core_lifecycle, "log_broker", None) or LogBroker()
stats = StatService(db, core_lifecycle, core_lifecycle.astrbot_config)
stats = StatService(
db,
core_lifecycle,
core_lifecycle.astrbot_config,
dashboard_static_folder=static_folder,
)
app.state.services = SimpleNamespace(
config_profiles=ConfigProfileService(core_lifecycle, db, runtime=stats.runtime),
config_display=ConfigDisplayService(core_lifecycle),
Expand Down Expand Up @@ -141,6 +146,7 @@ def create_dashboard_asgi_app(
pip_install_func=call_pip_install,
demo_mode=DEMO_MODE,
clear_site_data_headers=CLEAR_SITE_DATA_HEADERS,
dashboard_static_folder=static_folder,
),
)

Expand Down
24 changes: 15 additions & 9 deletions astrbot/dashboard/services/stat_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,13 @@ def __init__(
db_helper: BaseDatabase,
core_lifecycle: AstrBotCoreLifecycle,
config: AstrBotConfig,
*,
dashboard_static_folder: str | None = None,
) -> None:
self.db_helper = db_helper
self.core_lifecycle = core_lifecycle
self.config = config
self.dashboard_static_folder = dashboard_static_folder
self.storage_cleaner = StorageCleaner(config)

# Probe sandbox startup once; restart AstrBot to refresh this snapshot.
Expand Down Expand Up @@ -153,7 +156,9 @@ async def get_version(self) -> dict:
if is_desktop_session_auth_enabled():
return {
"version": VERSION,
"dashboard_version": await get_dashboard_version(),
"dashboard_version": await get_dashboard_version(
self.dashboard_static_folder
),
"change_pwd_hint": False,
"md5_pwd_hint": False,
"password_upgrade_required": False,
Expand All @@ -171,7 +176,9 @@ async def get_version(self) -> dict:
md5_pwd_hint = is_md5_dashboard_password(password)
return {
"version": VERSION,
"dashboard_version": await get_dashboard_version(),
"dashboard_version": await get_dashboard_version(
self.dashboard_static_folder
),
"change_pwd_hint": await self.is_default_cred(),
"md5_pwd_hint": md5_pwd_hint,
"password_upgrade_required": not storage_upgraded,
Expand All @@ -186,7 +193,7 @@ async def get_public_versions(

Args:
dashboard_static_folder: Static WebUI dist directory currently served by
the dashboard, when available.
the dashboard. Defaults to the directory configured on the service.

Returns:
Public WebUI and AstrBot version information.
Expand Down Expand Up @@ -219,12 +226,11 @@ def read_code_version() -> str | None:

dashboard_version = None
try:
if dashboard_static_folder:
dashboard_version = await get_dashboard_version(
Path(dashboard_static_folder)
)
if dashboard_version is None:
dashboard_version = await get_dashboard_version()
dashboard_version = await get_dashboard_version(
dashboard_static_folder
if dashboard_static_folder is not None
else self.dashboard_static_folder
)
except Exception as exc:
logger.warning("Failed to read public WebUI version: %s", exc)

Expand Down
6 changes: 5 additions & 1 deletion astrbot/dashboard/services/update_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,15 @@ def __init__(
pip_install_func: Callable[..., Awaitable[Any]],
demo_mode: bool,
clear_site_data_headers: dict,
dashboard_static_folder: str | None = None,
) -> None:
self._updater = astrbot_updater
self.core_lifecycle = core_lifecycle
self.get_dashboard_version = get_dashboard_version_func
self.pip_install = pip_install_func
self.demo_mode = demo_mode
self.clear_site_data_headers = clear_site_data_headers
self.dashboard_static_folder = dashboard_static_folder
self.update_progress: dict[str, dict] = {}
self._update_tasks: dict[str, asyncio.Task] = {}

Expand All @@ -73,7 +75,9 @@ def get_update_progress(self, progress_id: str) -> UpdateServiceResult:

async def check_update(self, update_type: str | None) -> UpdateServiceResult:
try:
dashboard_version = await self.get_dashboard_version()
dashboard_version = await self.get_dashboard_version(
self.dashboard_static_folder
)
if update_type == "dashboard":
return UpdateServiceResult(
data={
Expand Down
Loading