Saltar al contenido principal

Hoja de Ruta de Roam

Trabajo Completado para la Próxima Actualización

  • Se añadieron widgets de control: Play, Mute, Change Volume y Select desde el Control center!
  • Se mejoró el manejo de los campos de texto para muchas aplicaciones roku
    • Auto-abrir campo de texto cuando la edición de texto está disponible
    • Copiar, Cortar, Pegar desde macOS (con teclado)
    • Copiar, Cortar, Pegar + Edición generalizada en iOS
  • Mejor informe alrededor de los permisos de red local y conectividad
  • Mejora de la funcionalidad del teclado
  • Mejoras en la estabilidad de la conexión

Próximamente

  • Añadir opciones de presión prolongada a las teclas

    • Pulsación larga en la flecha derecha para avanzar rápido
    • Pulsación larga en la flecha izquierda para rebobinar
    • Pulsación larga en mute para silenciar prolongadamente
      • Hacer que el +30 sea configurable a 30, 15, 60 opciones de silencio de segundos
      • Mostrar banner con +30 sec, x para cancelar, indicador de progreso lineal de fondo
        • Mostrar debajo del panel de botón principal para que esté cerca de mute
      • Cancela cuando se vuelve a silenciar (y también hace la llamada a la API)
  • Reparar los widgets de macOS

  • Futuro: Proporcionar una vista Minimalista opcional en iOS que replica de cerca la vista del control remoto de Siri

Ideas Futuras Generales

Corrección de Errores

  • Descifra si el ciclo de llamadas a nextPacket tiene sentido.
    • En lugar de hacer un looping cada 10 ms y esperar que el tiempo sea correcto, ¿no debería estar más bien haciendo un looping sobre los paquetes recibidos e intentando programarlos al tiempo de host 10ms * globalSequenceNumber + startHostTime y sampleTime a sequenceNumber * Int64(lastSampleTime.sampleRate) / packetsPerSec + startSampleTime
    • Entonces puedo cambiar de un bucle for await sobre el reloj a un bucle while !Task.isCancelled con un Task.sleep en él.
    • Vale, así que necesitamos hacer un looping cada 10 ms e intentar sacar el último paquete y luego programarlo en ese tiempo
    • Cada vez que hacemos una sincronización de audio
      • Tenemos lastRenderTime + un paquete de sincronización
      • Estimar el número de paquete que deberíamos estar enviando en + el tiempo de sincronización
        • Render Time + adicional

Mejorar la mensajería al usuario alrededor de la gestión de info/estado/funciones

  • Al encender el dispositivo con WOL y no conectar después de 5 segundos, o al encender el dispositivo y fallar inmediatamente, mostrar un mensaje de advertencia debajo del wifi
    • "No pudimos despertar tu Roku" (Descubrir más) (No mostrar de nuevo para este dispositivo), (X)
    • Descubrir más muestra algunas razones por qué
      • No estás conectado a la misma red (Mostrar el último nombre de red del dispositivo. Preguntar si el usuario está conectado a esta red)
      • Tu dispositivo está en sueño profundo (no se apagó recientemente) y no puede ser despertado
        • Tu dispositivo no soporta WWOL y está conectado a wifi
        • Tu dispositivo no soporta WWOL o WOL
      • Tu red no está configurada de una forma que nos permita enviar comandos de despertar al dispositivo
  • Al hacer clic en un botón desactivado, mostrar notificación indicando por qué está desactivado
    • Mostrar un indicador de info en el botón para indicar que se puede recibir información cuando se hace clic en él?
    • Modo auriculares desactivado -> porque el dispositivo no soporta el modo auriculares para esta aplicación
    • Control de volumen desactivado -> porque el audio se está reproduciendo por HDMI que no soporta controles de volumen?
  • Al escanear activamente dispositivos y no encontrar nuevos, mostrar un mensaje de advertencia debajo de la lista de dispositivos
    • "No pudimos despertar tu Roku" (Descubre por qué), (X)
    • Descubre más muestra una ventana emergente con algunas razones por las que esto puede estar pasando
  • Añadir insignia para supportsWakeOnWLAN y supportsAudioControls

Para actualizar cuando se deje de dar soporte a iOS 17/macOS 14 (Febrero 2026)

  • Dar una vuelta y eliminar las etiquetas @available(iOS 18)
  • Usar las características de previsualización para inyectar datos de muestra en las previsualizaciones
  • SwiftData
    • Usar nueva macro #Index para modelos
    • Usar nueva macro #Unique para modelos
    • Usar eliminación por lotes
  • TipKit