localStorage.getItem('plugins-restart-notice-dismissed') !== 'true'
+ )
const [searchQuery, setSearchQuery] = useState('')
const [categoryFilter, setCategoryFilter] = useState('all')
const [activeTab, setActiveTab] = useState('all') // all | installed | updates
@@ -67,6 +70,11 @@ function PluginsPageContent() {
const { toast } = useToast()
+ const dismissRestartNotice = () => {
+ localStorage.setItem('plugins-restart-notice-dismissed', 'true')
+ setRestartNoticeVisible(false)
+ }
+
// 加载插件统计数据
const loadPluginStats = async (pluginList: PluginInfo[]) => {
const statsPromises = pluginList.map(async (plugin) => {
@@ -705,16 +713,23 @@ function PluginsPageContent() {
{/* 安装提示 */}
-
-
-
-
-
- 安装、卸载或更新插件后,需要重启麦麦才能使更改生效
-
-
-
-
+ {restartNoticeVisible && (
+
+
+
+
+
+
+ 安装、卸载或更新插件后,部分插件需要重启麦麦才能生效
+
+
+
+
+
+
+ )}
{/* Git 状态警告 */}
{gitStatus && !gitStatus.installed && (
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 0ac15c7b..17c14c5b 100644
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -10,4 +10,6 @@ if [ ! -e "$ADAPTER_TARGET" ] && [ -d "$ADAPTER_TEMPLATE" ]; then
cp -a "$ADAPTER_TEMPLATE" "$ADAPTER_TARGET"
fi
+uv pip install --python "/MaiMBot/.venv/bin/python" --upgrade maibot-dashboard
+
exec /MaiMBot/.venv/bin/python bot.py "$@"
diff --git a/pyproject.toml b/pyproject.toml
index 4a639f2e..8b830551 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,7 +19,7 @@ dependencies = [
"jieba>=0.42.1",
"json-repair>=0.47.6",
"maim-message>=0.6.2",
- "maibot-dashboard>=1.0.8",
+ "maibot-dashboard>=1.0.10",
"maibot-plugin-sdk>=2.4.0",
"matplotlib>=3.10.5",
"mcp",
diff --git a/requirements.txt b/requirements.txt
index 737bedcc..2b50090a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -33,4 +33,4 @@ tomlkit>=0.13.3
typing-extensions
uvicorn>=0.35.0
watchfiles>=1.1.1
-maibot-dashboard>=1.0.8
\ No newline at end of file
+maibot-dashboard>=1.0.10
\ No newline at end of file
diff --git a/src/config/config.py b/src/config/config.py
index f0366d5f..38ea4c6f 100644
--- a/src/config/config.py
+++ b/src/config/config.py
@@ -56,7 +56,7 @@ BOT_CONFIG_PATH: Path = (CONFIG_DIR / "bot_config.toml").resolve().absolute()
MODEL_CONFIG_PATH: Path = (CONFIG_DIR / "model_config.toml").resolve().absolute()
LEGACY_ENV_PATH: Path = (PROJECT_ROOT / ".env").resolve().absolute()
A_MEMORIX_LEGACY_CONFIG_PATH: Path = (CONFIG_DIR / "a_memorix.toml").resolve().absolute()
-MMC_VERSION: str = "1.0.0-pre.15"
+MMC_VERSION: str = "1.0.0-pre.16"
CONFIG_VERSION: str = "8.10.15"
MODEL_CONFIG_VERSION: str = "1.16.1"
diff --git a/src/emoji_system/emoji_manager.py b/src/emoji_system/emoji_manager.py
index 19823ff3..6029221f 100644
--- a/src/emoji_system/emoji_manager.py
+++ b/src/emoji_system/emoji_manager.py
@@ -388,7 +388,6 @@ class EmojiManager:
if existing_record := session.exec(statement).first():
existing_record.full_path = str(emoji.full_path)
existing_record.no_file_flag = False
- existing_record.is_banned = False
existing_record.last_used_time = datetime.now()
existing_record.query_count += 1
session.add(existing_record)
@@ -473,7 +472,6 @@ class EmojiManager:
image_record.full_path = str(new_emoji.full_path)
image_record.description = new_emoji.description
image_record.no_file_flag = False
- image_record.is_banned = False
session.add(image_record)
except Exception as exc:
logger.error(f"Update cached emoji description failed: {exc}")
@@ -531,6 +529,9 @@ class EmojiManager:
statement = select(Images).filter_by(image_hash=emoji.file_hash, image_type=ImageType.EMOJI).limit(1)
existing_record = session.exec(statement).first()
if existing_record:
+ if existing_record.is_banned:
+ logger.info(f"[register_emoji] Emoji is banned, skipping: {emoji.file_hash}")
+ return "skipped"
if existing_record.is_registered and _is_available_emoji_record(existing_record):
# logger.info(f"[register_emoji] Emoji already registered, skipping: {emoji.file_hash}")
return "skipped"
@@ -1085,6 +1086,10 @@ class EmojiManager:
return "failed"
if existing_record is not None:
+ if existing_record.is_banned:
+ logger.info(f"[register_emoji] Emoji is banned, skipping: {target_emoji.file_name}")
+ return "skipped"
+
if existing_record.is_registered and _is_available_emoji_record(existing_record):
logger.info(f"[register_emoji] Emoji already registered, skipping: {target_emoji.file_name}")
return "skipped"
diff --git a/uv.lock b/uv.lock
index 81e0cff4..2e06f64f 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1511,7 +1511,7 @@ requires-dist = [
{ name = "httpx", extras = ["socks"] },
{ name = "jieba", specifier = ">=0.42.1" },
{ name = "json-repair", specifier = ">=0.47.6" },
- { name = "maibot-dashboard", specifier = ">=1.0.8" },
+ { name = "maibot-dashboard", specifier = ">=1.0.9" },
{ name = "maibot-plugin-sdk", specifier = ">=2.4.0" },
{ name = "maim-message", specifier = ">=0.6.2" },
{ name = "matplotlib", specifier = ">=3.10.5" },
@@ -1549,11 +1549,11 @@ dev = [
[[package]]
name = "maibot-dashboard"
-version = "1.0.8"
+version = "1.0.9"
source = { registry = "https://pypi.tuna.tsinghua.edu.cn/simple" }
-sdist = { url = "https://pypi.tuna.tsinghua.edu.cn/packages/13/9f/e59b1a6299cc4f8c9ac16c7c2774581220fdd27227ac9c2fdfb947dfc2f5/maibot_dashboard-1.0.8.tar.gz", hash = "sha256:a47309072d8154905738d02ccad17a543d5159a1e62ca87076ac4dce39e6c922", size = 2496374, upload-time = "2026-05-07T13:58:39.386Z" }
+sdist = { url = "https://pypi.tuna.tsinghua.edu.cn/packages/ac/5b/e90896cbdddc89ec5586873de07a3d70c0107e4dc76db8666a0c0fde6ae8/maibot_dashboard-1.0.9.tar.gz", hash = "sha256:0e5c00be021419686105238cded501024f0383a3815bd85f9a1e747f3f04d0cd", size = 2496957, upload-time = "2026-05-07T18:37:51.291Z" }
wheels = [
- { url = "https://pypi.tuna.tsinghua.edu.cn/packages/0f/60/fde671bf332133f1403673096eefcd49f36133141a6b9229e72c2588b221/maibot_dashboard-1.0.8-py3-none-any.whl", hash = "sha256:39da973fed56f1491245109615d81ea79add859467798af92d4ace7d8a5d7557", size = 2563243, upload-time = "2026-05-07T13:58:37.868Z" },
+ { url = "https://pypi.tuna.tsinghua.edu.cn/packages/8c/27/ab227a84e55356039004a375e78031e5e8aaf4192e11908a568498816d5e/maibot_dashboard-1.0.9-py3-none-any.whl", hash = "sha256:197b26c5c3d0e6ba1238b91d12c88e57db71c65303cc602fcccdca84ce4db582", size = 2563281, upload-time = "2026-05-07T18:37:49.648Z" },
]
[[package]]