fix(tracker): en macOS medir inactividad sin permiso de Accesibilidad
El sensor leia el teclado/mouse global con device_query para saber si hubo entrada. En macOS eso exige el permiso de Accesibilidad y, como la app va sin firma estable, macOS nunca lo retiene: el dialogo «... quiere controlar este ordenador» reaparecia en cada arranque aunque ya se hubiera concedido. Solo hace falta saber SI hubo entrada, no cual. macOS lo da con CGEventSourceSecondsSinceLastEventType (segundos desde la ultima entrada HID), de solo lectura y sin pedir ningun permiso. Windows/Linux siguen con device_query (ahi no piden permiso), ahora como dependencia solo de esas plataformas. Verificado: cargo check OK (4.5s); prueba aislada de la API devuelve los segundos de inactividad en vivo sin ningun dialogo de permiso. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Este commit está contenido en:
@@ -34,10 +34,16 @@ serde_json = "1"
|
||||
# ureq: subir los lotes a /api/tracker (bloqueante, corre en su propio hilo).
|
||||
# gethostname: el nombre del equipo, que bautiza al device en el servidor.
|
||||
active-win-pos-rs = "0.11"
|
||||
device_query = "4"
|
||||
ureq = { version = "2", features = ["json"] }
|
||||
gethostname = "0.5"
|
||||
|
||||
# device_query solo en Windows/Linux: la huella de entrada (posición del mouse + cuántas teclas
|
||||
# hay presionadas). En macOS NO se usa —leer el teclado global dispara el permiso de
|
||||
# Accesibilidad y el diálogo «… quiere controlar este ordenador»— y se sustituye por
|
||||
# CGEventSourceSecondsSinceLastEventType (idle_seconds_macos en tracker.rs), que no pide permiso.
|
||||
[target.'cfg(not(target_os = "macos"))'.dependencies]
|
||||
device_query = "4"
|
||||
|
||||
# ── Excepción del video (Windows) ──
|
||||
# Para saber si «hay un video reproduciéndose» sin espiar el navegador: se mira el MEDIDOR de
|
||||
# la salida de audio por defecto (WASAPI, IAudioMeterInformation). Si al frente hay un navegador
|
||||
|
||||
Referencia en una nueva incidencia
Block a user