Pular para o conteúdo principal

Planejamento do Roam

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

  • Adicionado widgets de controle: Play, Mudo, Alterar Volume e Selecionar do Central de Controle!
  • Melhor manipulação de campos de texto para muitos aplicativos Roku
    • Campo de texto de abertura automática quando a edição de texto está disponível
    • Copiar, cortar, colar do macOS (com teclado)
    • Copiar, cortar, colar + Edição generalizada no iOS
  • Melhorias na geração de relatórios em torno de permissões de rede local e conectividade
  • Aprimoramento da funcionalidade do teclado
  • Melhorias na estabilidade da conexão

Em Breve

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

    • Pressione longamente a seta da direita para avançar rápido
    • Pressione longamente a seta da esquerda para retroceder
    • Pressione longamente o botão mudo para silenciar por um longo tempo
      • Tornar a opção de +30 configurável para 30, 15, 60 opções de mudo por segundo
      • Mostrar banner com +30 seg, x para cancelar, indicador de progresso linear de fundo
        • Exibir abaixo do painel de botões principal para ficar próximo ao botão mudo
      • Cancela ao clicar no botão mudo novamente (e também faz uma chamada de API)
  • Resolver problemas com os widgets do macOS

  • Futuro: Fornecer uma visualização Minimalista opcional no iOS que reproduza de perto a vista do controle remoto Siri

Ideias Gerais Futuras

Correções de Bugs

  • Descobrir se o ciclo de chamadas para nextPacket faz sentido.
    • Em vez de fazer loop a cada 10 ms e esperar que o tempo esteja correto, eu deveria fazer loop pelos pacotes recebidos e tentar agendá-los no horário do host 10ms * número de sequência global + horário inicial do host e sampleTime para número de sequência * Int64 (últimoSampleTime.sampleRate) / pacotesPorSeg + startSampleTime
    • Então eu posso mudar de um loop para aguardar sobre o relógio para um loop while !Task.isCancelled com um Task.sleep nele.
    • Ok, então precisamos fazer loop a cada 10 ms e tentar pegar o último pacote e, em seguida, agendá-lo nesse momento
    • Sempre que fazemos uma sincronização de áudio
      • Temos lastRenderTime + um pacote de sincronização
      • Estimar o número do pacote que devemos estar enviando + o tempo de sincronização
        • Tempo de Renderização + adicional

Melhorar as mensagens do usuário em torno do gerenciamento de info/status/capabilidades

  • Ao 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 do wifi
    • “Não conseguimos acordar seu Roku” (Saiba mais) (Não mostrar novamente para este dispositivo), (X)
    • Saiba mais mostra algumas razões possíveis
      • Você não está conectado à mesma rede (Mostrar o último nome da rede do dispositivo. Pergunte se o usuário está conectado a esta rede)
      • Seu dispositivo está em sono profundo (não foi desligado recentemente) e não pode ser acordado
        • Seu dispositivo não suporta WWOL e está conectado ao wifi
        • O seu dispositivo não suporta WWOL ou WOL
      • Sua rede não está configurada de uma maneira que nos permita enviar comandos de despertar para o dispositivo
  • Ao clicar em um botão desativado, exibir notificação indicando por que ele está desativado
    • Mostrar um indicador de informação no botão para indicar que as informações podem ser recebidas quando ele é clicado?
    • Modo de fones de ouvido desativado -> porque o dispositivo não suporta o modo de fones de ouvido para este aplicativo
    • Controle de volume desativado -> porque o áudio está sendo transmitido por HDMI que não suporta controles de volume?
  • Quando estiver verificando ativamente os dispositivos e não encontrar novos, mostrar uma mensagem de aviso abaixo da lista de dispositivos
    • “Não conseguimos acordar o seu Roku” (Saiba por quê), (X)
    • Saiba mais mostra um pop-up com algumas razões possíveis para isso estar acontecendo
  • Adicionar crachá para supportsWakeOnWLAN e supportsAudioControls

Para atualizar ao descartar o suporte para iOS 17/macOS 14 (Fev 2026)

  • Vá por aí e remova as tags @available(iOS 18)
  • Use traits de pré-visualização para injetar dados de amostra em pré-visualizações
  • SwiftData
    • Use a nova macro #Index para modelos
    • Use a nova macro #Unique para modelos
    • Use a exclusão em lote
  • TipKit