diff --git a/backend/routers/avatars.py b/backend/routers/avatars.py index ae5cec3..f91c79c 100644 --- a/backend/routers/avatars.py +++ b/backend/routers/avatars.py @@ -152,7 +152,8 @@ async def api_upload_avatar(file: UploadFile, avatar_name: str = Form(...), avat # Broadcast refresh message to all connected clients and regenerate slot assignments # Import here to avoid circular imports - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -223,7 +224,8 @@ async def api_delete_avatar(avatar_id: int): delete_avatar(avatar_id) # Broadcast refresh message and regenerate slot assignments - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -255,7 +257,8 @@ async def api_delete_avatar_group(group_id: str): """Delete an entire avatar group (all avatars with the same group_id)""" try: result = delete_avatar_group(group_id) - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) get_active_avatar_slots().clear() @@ -283,7 +286,8 @@ async def api_update_avatar_position(group_id: str, position_data: dict): spawn_position = position_data.get("spawn_position") result = update_avatar_group_position(group_id, spawn_position) - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) get_active_avatar_slots().clear() @@ -309,7 +313,8 @@ async def api_toggle_avatar_group_disabled(group_id: str): """Toggle the disabled status of an entire avatar group""" try: result = toggle_avatar_group_disabled(group_id) - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) get_active_avatar_slots().clear() @@ -335,7 +340,8 @@ async def api_toggle_avatar_group_disabled(group_id: str): async def api_regenerate_avatar_slots(): """Force regeneration of avatar slot assignments (re-randomize avatars)""" try: - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -392,7 +398,7 @@ async def api_release_avatar_slot(slot_id: str): async def api_get_avatar_queue(): """Get current avatar message queue status""" try: - from app import avatar_message_queue + from modules.queue_manager import avatar_message_queue from modules.avatars import get_active_avatar_slots, get_avatar_slot_assignments active_avatar_slots = get_active_avatar_slots() @@ -447,7 +453,8 @@ async def api_create_avatar_slot(slot_data: dict): ) # Broadcast update to all clients - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -492,7 +499,8 @@ async def api_update_configured_slot(slot_id: int, slot_data: dict): return {"success": False, "error": "Slot not found"} # Broadcast update to all clients - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -523,7 +531,8 @@ async def api_delete_configured_slot(slot_id: int): return {"success": False, "error": "Slot not found"} # Broadcast update to all clients - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -551,7 +560,8 @@ async def api_delete_all_configured_slots(): count = delete_all_avatar_slots() # Broadcast update to all clients - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import (generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id) @@ -569,4 +579,4 @@ async def api_delete_all_configured_slots(): return {"success": True, "deleted_count": count} except Exception as e: logger.error(f"Failed to delete all avatar slots: {e}") - return {"success": False, "error": str(e)} \ No newline at end of file + return {"success": False, "error": str(e)} diff --git a/backend/routers/config_backup.py b/backend/routers/config_backup.py index 5555b07..0de0ba7 100644 --- a/backend/routers/config_backup.py +++ b/backend/routers/config_backup.py @@ -266,7 +266,8 @@ async def import_config( logger.info(f"Imported {stats['avatars_imported']} avatars, copied {stats['images_copied']} images") # Regenerate avatar slot assignments - from app import hub, avatar_message_queue + from app import hub + from modules.queue_manager import avatar_message_queue from modules.avatars import ( generate_avatar_slot_assignments, get_active_avatar_slots, get_avatar_slot_assignments, get_avatar_assignments_generation_id diff --git a/backend/routers/system.py b/backend/routers/system.py index 6e5d27f..add9df5 100644 --- a/backend/routers/system.py +++ b/backend/routers/system.py @@ -501,7 +501,8 @@ async def test_parallel_limit(): duration = time.time() - start_time # Import queue info - from app import active_tts_jobs, parallel_message_queue, total_active_tts_count + from app import active_tts_jobs, total_active_tts_count + from modules.queue_manager import parallel_message_queue result = { "success": True, diff --git a/backend/version.py b/backend/version.py index 45b1079..31f37c3 100644 --- a/backend/version.py +++ b/backend/version.py @@ -3,4 +3,4 @@ This file is automatically updated during CI/CD builds """ -__version__ = "1.3.0" +__version__ = "1.3.1"