Adolfo Reyna 6235fa0541 fix: MCP overlay persists, not auto-closed by idle tick in <1s
DisplayIdle::tick() runs every 50ms. After startMcpScreensaver()
sets displayDimmed=true, the next tick saw inactive_ms < 100ms
(user navigated Settings) and called stopScreensaver() ->
overlay deleted in <1s, text tool flash-then-back.

Root cause: idle wake logic (inactive<100ms) + charging guard +
duty-restore all operated on any overlay including MCP override.

Fix: detect MCP active via (drawArea != nullptr || overrideActive)
under state.mutex, guard all auto-stop paths with !isMcpActive.
MCP still closable via click handler on overlay (CLICKABLE flag).

Test: flash es3c28p 2be0c0 31% free to /dev/cu.usbmodem101
192.168.68.113 dashboard 200, dev 6666 ok, /api/mcp 25 tools.
Requires PYTHONPATH cleaned for idf.py build (Hermes venv hijacks
pydantic_core).
2026-07-11 20:32:05 -04:00
2026-07-04 21:26:43 +02:00
2026-07-04 21:26:43 +02:00
2025-02-08 23:10:31 +01:00
2026-07-03 23:56:03 +02:00
2026-02-15 01:41:47 +01:00
2025-08-02 12:28:28 +02:00
2026-07-02 20:52:26 +02:00

Overview

Tactility is an operating system that focuses on the ESP32 microcontroller family.

See https://tactilityproject.org for more information.

photo of devices running Tactility  screenshot of launcher app

You can run built-in apps or start them from an SD card. It's easy to manage system settings:

screenshot off app list app  screenshot of settings app

License

GNU General Public License Version 3

S
Description
No description provided
Readme 128 MiB
Languages
C++ 65%
C 28.9%
Python 3.5%
CMake 1.4%
HTML 1.1%