From 3e06a67e240103cd52ab66474732876725f0ecdb Mon Sep 17 00:00:00 2001 From: Mikhail Putilovskij Date: Fri, 3 Apr 2026 12:33:15 +0300 Subject: [PATCH] feat(01-06): remove matrix reaction-era adapter UX - Drop reaction-based skill and confirmation helpers from Matrix conversion - Render !settings as a strict read-only dashboard snapshot - Align Matrix adapter regressions with command-only helper text --- adapter/matrix/converter.py | 38 ----------------------------- adapter/matrix/handlers/settings.py | 2 -- adapter/matrix/reactions.py | 14 ++--------- 3 files changed, 2 insertions(+), 52 deletions(-) diff --git a/adapter/matrix/converter.py b/adapter/matrix/converter.py index 1005512..00fcdc4 100644 --- a/adapter/matrix/converter.py +++ b/adapter/matrix/converter.py @@ -2,7 +2,6 @@ from __future__ import annotations from typing import Any -from adapter.matrix.reactions import CANCEL_REACTION, CONFIRM_REACTION, reaction_to_skill_index from core.protocol import ( Attachment, IncomingCallback, @@ -95,43 +94,6 @@ def from_command(body: str, sender: str, chat_id: str, room_id: str | None = Non ) -def from_reaction(event: Any, sender: str, chat_id: str) -> IncomingCallback | None: - content = getattr(event, "content", {}) or {} - relates_to = content.get("m.relates_to", {}) - key = getattr(event, "key", None) or relates_to.get("key") - event_id = getattr(event, "event_id", None) or relates_to.get("event_id") - if not key: - return None - - if key == CONFIRM_REACTION: - return IncomingCallback( - user_id=sender, - platform=PLATFORM, - chat_id=chat_id, - action="confirm", - payload={"event_id": event_id, "reaction": key}, - ) - if key == CANCEL_REACTION: - return IncomingCallback( - user_id=sender, - platform=PLATFORM, - chat_id=chat_id, - action="cancel", - payload={"event_id": event_id, "reaction": key}, - ) - - skill_index = reaction_to_skill_index(key) - if skill_index is not None: - return IncomingCallback( - user_id=sender, - platform=PLATFORM, - chat_id=chat_id, - action="toggle_skill", - payload={"event_id": event_id, "reaction": key, "skill_index": skill_index}, - ) - return None - - def from_room_event(event: Any, room_id: str, chat_id: str) -> IncomingEvent | None: body = (getattr(event, "body", None) or "").strip() sender = getattr(event, "sender", "") diff --git a/adapter/matrix/handlers/settings.py b/adapter/matrix/handlers/settings.py index a3e2172..b72590f 100644 --- a/adapter/matrix/handlers/settings.py +++ b/adapter/matrix/handlers/settings.py @@ -60,8 +60,6 @@ async def handle_settings( "", f"Активные чаты ({len(chats)}):", chats_text, - "", - "Изменить: !skills, !soul, !safety", ] ) diff --git a/adapter/matrix/reactions.py b/adapter/matrix/reactions.py index fdfc237..432cb32 100644 --- a/adapter/matrix/reactions.py +++ b/adapter/matrix/reactions.py @@ -2,18 +2,12 @@ from __future__ import annotations from sdk.interface import UserSettings -CONFIRM_REACTION = "👍" -CANCEL_REACTION = "❌" -SKILL_REACTIONS = ["1️⃣", "2️⃣", "3️⃣", "4️⃣", "5️⃣", "6️⃣", "7️⃣", "8️⃣", "9️⃣"] -REACTION_TO_INDEX = {emoji: idx + 1 for idx, emoji in enumerate(SKILL_REACTIONS)} - def build_skills_text(settings: UserSettings) -> str: lines: list[str] = ["Скиллы"] - for idx, (name, enabled) in enumerate(settings.skills.items(), start=1): + for name, enabled in settings.skills.items(): state = "on" if enabled else "off" - emoji = SKILL_REACTIONS[idx - 1] if idx - 1 < len(SKILL_REACTIONS) else f"{idx}." - lines.append(f" {state} {emoji} {name}") + lines.append(f" {state} {name}") lines.append("") lines.append("!skill on/off <название> — переключить навык.") return "\n".join(lines) @@ -28,7 +22,3 @@ def build_confirmation_text(description: str) -> str: "Ответьте !yes для подтверждения или !no для отмены.", ] ) - - -def reaction_to_skill_index(key: str) -> int | None: - return REACTION_TO_INDEX.get(key)