argendirast / patch_v1 /app_settings_patch.py
sir-radix367's picture
Upload patch_v1/app_settings_patch.py
82d5003 verified
Raw
History Blame Contribute Delete
4.07 kB
# app.py — Settings UI patch for sensorium companion
#
# PATCH v1 — Sensorium Companion Digest:
# - Add Settings toggles: "Enable screen awareness", "Enable desktop audio awareness"
# - Add audio source selector: auto / loopback / microphone / off
# - Add sensorium storage status display
#
# This file contains the new helper functions and the Settings tab UI patch.
# To apply: add these functions to app.py and add the UI elements to the Settings tab.
# ==================================================================
# NEW SETTINGS HELPERS — Sensorium toggles
# ==================================================================
def toggle_screen_awareness(enabled):
try:
result = daemon.set_screen_awareness(bool(enabled))
return f"Screen awareness: {result.get('screen_awareness', '?')}"
except Exception as e:
return f"Error: {e}"
def toggle_audio_awareness(enabled):
try:
result = daemon.set_audio_awareness(bool(enabled))
# Also start/stop audio capture
if result.get("audio_awareness") == "on":
if hasattr(daemon, "start_audio_capture"):
daemon.start_audio_capture()
else:
if hasattr(daemon, "stop_audio_capture"):
daemon.stop_audio_capture()
return f"Audio awareness: {result.get('audio_awareness', '?')}"
except Exception as e:
return f"Error: {e}"
def get_sensorium_status():
try:
storage = daemon.tool_sensorium_storage_status()
audio = daemon.tool_audio_status()
screen_on = getattr(daemon, "_screen_awareness", False)
audio_on = getattr(daemon, "_audio_awareness", False)
lines = ["**Sensorium Status**\n"]
lines.append(f"- Screen awareness: `{'on' if screen_on else 'off'}`")
lines.append(f"- Audio awareness: `{'on' if audio_on else 'off'}`")
lines.append(f"- Audio capture active: `{'yes' if audio.get('capture_active') else 'no'}`")
lines.append(f"- Whisper loaded: `{'yes' if audio.get('whisper_loaded') else 'no'}`")
lines.append(f"- Storage: `{storage.get('size_mb', '?')}MB` ({storage.get('file_count', '?')} files)")
if audio.get("last_transcript"):
lines.append(f"- Last transcript: `{audio['last_transcript'][:80]}...`")
return "\n".join(lines)
except Exception as e:
return f"⚠️ Sensorium status error: {e}"
def do_sensorium_cleanup():
try:
result = daemon.tool_sensorium_cleanup(max_age_hours=24)
return f"Cleaned up {result.get('deleted', 0)} files"
except Exception as e:
return f"Error: {e}"
# ==================================================================
# SETTINGS TAB UI ADDITION
# Add this block inside the Settings tab in app.py, after the existing
# audio source dropdown section:
#
# with gr.Accordion("Sensorium — Screen & Audio Awareness", open=True):
# gr.Markdown("### 🖥️ Screen & Audio Awareness")
# sensorium_status_md = gr.Markdown(value=get_sensorium_status())
# refresh_sensorium_btn = gr.Button("⟳ Refresh Sensorium", size="sm")
# with gr.Row():
# screen_toggle = gr.Checkbox(label="Enable screen awareness (OCR)", value=False)
# apply_screen_btn = gr.Button("Apply", size="sm")
# with gr.Row():
# audio_toggle = gr.Checkbox(label="Enable desktop audio awareness (loopback)", value=False)
# apply_audio_btn = gr.Button("Apply", size="sm")
# with gr.Row():
# sensorium_cleanup_btn = gr.Button("🧹 Cleanup old files", size="sm")
# sensorium_result = gr.Textbox(label="Result", interactive=False)
#
# # Event handlers
# apply_screen_btn.click(fn=toggle_screen_awareness, inputs=[screen_toggle], outputs=[sensorium_result])
# apply_audio_btn.click(fn=toggle_audio_awareness, inputs=[audio_toggle], outputs=[sensorium_result])
# refresh_sensorium_btn.click(fn=get_sensorium_status, outputs=[sensorium_status_md])
# sensorium_cleanup_btn.click(fn=do_sensorium_cleanup, outputs=[sensorium_result])