feat: implement MCP drawing as screensaver instead of standalone app

- Add ScreensaverType::McpScreen to DisplaySettings enum, toString/fromString
- Add 'MCP Screen' option to the Display settings screensaver dropdown
- New McpScreensaver (Screensaver subclass): creates full-screen lv_canvas on
  the overlay, allocates framebuffer in SPIRAM, registers canvas pointer in
  McpSystemState, shows 'Waiting for LLM...' until first draw command arrives
- Wire McpScreensaver into DisplayIdle::activateScreensaver() switch
- McpSystem::ensureOverrideScreen() now calls displayidle::findService()->
  startScreensaver() instead of launching McpOverrideApp — canvas appears
  automatically on any LLM draw command
- Remove McpOverrideApp (replaced by screensaver), deregister from Tactility.cpp
- Remove mcpOverrideEnabled from McpSettings — no longer needed
- Simplify McpSettingsApp: remove Screen Override toggle, update info text to
  direct users to Settings -> Display -> Screensaver -> MCP Screen
This commit is contained in:
Adolfo Reyna
2026-06-27 09:17:50 -04:00
parent 41004a3c6f
commit cd921e1aa9
11 changed files with 160 additions and 59 deletions
+1 -10
View File
@@ -11,7 +11,6 @@ static const auto LOGGER = Logger("McpSettings");
constexpr auto* SETTINGS_FILE = "/data/service/mcp/settings.properties";
constexpr auto* KEY_MCP_ENABLED = "mcpEnabled";
constexpr auto* KEY_MCP_OVERRIDE_ENABLED = "mcpOverrideEnabled";
bool load(McpSettings& settings) {
std::map<std::string, std::string> map;
@@ -20,23 +19,16 @@ bool load(McpSettings& settings) {
}
auto mcp_enabled = map.find(KEY_MCP_ENABLED);
auto mcp_override = map.find(KEY_MCP_OVERRIDE_ENABLED);
settings.mcpEnabled = (mcp_enabled != map.end())
? (mcp_enabled->second == "1" || mcp_enabled->second == "true")
: false;
settings.mcpOverrideEnabled = (mcp_override != map.end())
? (mcp_override->second == "1" || mcp_override->second == "true")
: true; // Default true
return true;
}
McpSettings getDefault() {
return McpSettings{
.mcpEnabled = false,
.mcpOverrideEnabled = true
.mcpEnabled = false
};
}
@@ -55,7 +47,6 @@ bool save(const McpSettings& settings) {
std::map<std::string, std::string> map;
map[KEY_MCP_ENABLED] = settings.mcpEnabled ? "true" : "false";
map[KEY_MCP_OVERRIDE_ENABLED] = settings.mcpOverrideEnabled ? "true" : "false";
if (!file::savePropertiesFile(SETTINGS_FILE, map)) {
LOGGER.error("Failed to save MCP settings to {}", SETTINGS_FILE);