Saltar para o conteúdo principal

Mapa de Rota do Roam

Trabalho Concluído para a Próxima Atualização

  • Adicionados widgets de controlo: Reproduzir, Silenciar, Alterar Volume e Selecionar a partir do centro de controlo!
  • Melhoria no tratamento de campos de texto para muitas apps roku
    • Abertura automática do campo de texto quando a edição de texto está disponível
    • Copiar, Cortar, Colar a partir do macOS (com teclado)
    • Copiar, Cortar, Colar + Edição generalizada no iOS
  • Melhor relatório em volta das permissões da rede local e conectividade
  • Melhoria da funcionalidade do teclado
  • Melhorias na estabilidade da conexão

Em Breve

  • Adicionar opções de pressão longa às chaves

    • Pressionar prolongadamente a seta para a direita para ff
    • Pressionar prolongadamente a seta para a esquerda para rr
    • Pressionar prolongadamente mute para long-mute
      • Tornar o +30 configurável para 30, 15, opções de mudo de 60 segundos
      • Mostrar banner com +30 seg, x para cancelar, indicador de progresso linear em fundo
        • Mostrar sob o painel de botão principal para que esteja perto de mute
      • Cancela quando silencia novamente (e também faz chamada para api)
  • Corrigir widgets de macOS

  • Futuro: Fornecer uma visualização minimalista opcional no iOS que replica de perto a visualização do controle remoto siri

Ideias Futuras Gerais

Correções de Erros

  • Descobrir se o ciclo de chamadas para nextPacket faz sentido.
    • Em vez de fazer um ciclo a cada 10ms e esperar que a temporização esteja correta, será que deveria ciclar sobre os pacotes recebidos e tentar agendá-los no momento de host 10ms * globalSequenceNumber + startHostTime e sampleTime para sequenceNumber * Int64(lastSampleTime.sampleRate) / packetsPerSec + startSampleTime
    • Então posso mudar de um ciclo for await pelo relógio para um ciclo while !Task.isCancelled com um Task.sleep nele.
    • Então precisamos fazer um ciclo a cada 10 ms e tentar tirar o último pacote e agendá-lo nesse momento
    • Sempre que fazemos uma sincronização de áudio
      • Temos lastRenderTime + um pacote de sync
      • Estimar o número de pacote que devemos estar enviando para fora + o tempo de sync
        • Render Time + additional

Melhorar a comunicação ao usuário em torno da gestão de info/estado/capacidades

  • Quando ligar o dispositivo com WOL e não se conectar após 5 segundos, ou quando ligar o dispositivo e falhar imediatamente, mostrar uma mensagem de aviso abaixo da wifi
    • “Não conseguimos acordar o seu Roku” (Saiba mais) (Não mostrar novamente para este dispositivo), (X)
    • Saiba mais mostra algumas razões porquê
      • Não está conectado à mesma rede (Mostrar o último nome de rede do dispositivo. Perguntar se o usuário está conectado a esta rede)
      • O seu dispositivo está em modo de descanso profundo (não foi desligado recentemente) e não pode ser acordado
        • O seu dispositivo não suporta WWOL e está conectado ao wifi
        • O seu dispositivo não suporta WWOL ou WOL
      • A sua rede não está configurada de uma maneira que nos permita enviar comandos de acordar para o dispositivo
  • Ao clicar num botão desativado, mostrar notificação indicando porque está desativado
    • Mostrar um indicador de informação no botão para indicar que a informação pode ser recebida quando é clicado?
    • Modo de fones de ouvido desativado -> porque o dispositivo não suporta o modo de fones de ouvido para esta app
    • Controle de volume desativado -> porque o áudio está sendo emitido sobre HDMI que não suporta controles de volume?
  • Ao fazer um exame ativo de dispositivos e não encontrar novos, mostrar uma mensagem de aviso abaixo da lista de dispositivos
    • “Não conseguimos acordar o seu Roku” (Descubra porquê), (X)
    • Descubra porquê mostra um popup com algumas razões porque isto pode estar acontecendo
  • Adicionar crachá para supportsWakeOnWLAN e supportsAudioControls

Para atualizar quando deixar de suportar o iOS 17/macOS 14 (Fev 2026)

  • Ir à volta e remover as etiquetas @available(iOS 18)
  • Usar as características de previsão para injetar dados de amostra nas pré-visualizações
  • SwiftData
    • Usar a nova macro #Index para modelos
    • Usar a nova macro #Unique para modelos
    • Usar exclusão em lote
  • TipKit