- Explorar el repositorio existente antes de asumir arquitectura.
- Confirmar que la base actual es una plantilla GNOME en Python con GTK4/libadwaita y Flatpak.
- Crear memoria persistente del proyecto.
- Documentar la arquitectura inicial, permisos Flatpak, riesgos de polkit y plan de validación.
- Añadir claves GSettings para puerto, token y estado del listener.
- Ajustar el manifest Flatpak para hablar con
org.freedesktop.login1. - Crear una primera UI de estado y diagnóstico.
- Implementar un listener HTTP local autenticado por token.
- Implementar la integración D-Bus básica con
org.freedesktop.login1. - Cerrar un contrato HTTP inicial compatible con la app Android.
- Acordar con Android el uso canónico de
/api/v1/...y el uso deGET /statuspara prueba de conexión. - Acordar el plan mínimo de implementación Android para
status,poweroffy mapeo de errores. - Mostrar en la UI Linux la
baseUrlsugerida para configurar Android. - Añadir un toggle de menú para mostrar u ocultar
Diagnostics. - Guardar y aplicar la configuración automáticamente, sin botón manual de guardado.
- Preparar el proyecto para construir el
.flatpakdesde GitHub Actions. - Automatizar prereleases de
mainy adjuntar el bundle.flatpaka las releases publicadas. - Preparar publicación de un repo Flatpak estático en GitHub Pages para
main. - Preparar firma GPG del repo Flatpak y de los bundles publicados por CI.
- Preparar publicación de un
.flatpakreffirmado para instalación directa desde GitHub Pages. - Añadir la primera fase del modo background sin depender todavía de bandeja de sistema.
- Añadir la segunda fase de background para Plasma con tray icon visible al ocultar la app.
- Simplificar el listener para que siempre arranque al abrir la app y ya no tenga toggles de activación.
- Reducir responsabilidades de
window.pyextrayendo utilidades de networking y simplificando lifecycle helpers. - Añadir una preferencia persistente para arrancar directamente oculto en la bandeja.
- Convertir la plantilla actual en la base real de KineticSOL.
- Verificar el comportamiento real del apagado no interactivo desde Flatpak.
- Ajustar la UX según el resultado real de polkit.
- Exponer en la UI el estado de conectividad, autorización y energía.
- Probar la app empaquetada en entorno real con GNOME/Bazzite.
- Registrar resultados reales de
CanPowerOff()yPowerOff(false). - Decidir, según la validación, si la app única sigue siendo suficiente o si hace falta separar componentes.
- Polkit puede impedir el apagado no interactivo desde Flatpak.
- La app única requiere estar en ejecución para poder recibir órdenes.
- Puede haber diferencias de comportamiento entre GNOME estándar y variantes gaming/inmutables como Bazzite.
-
La siguiente implementación debe centrarse en la base funcional mínima:
- UI con estado
- configuración persistente
- listener remoto
- cliente
login1
-
No se debe introducir una arquitectura de daemon separado sin evidencia previa de que la app única no basta.