Skip to content
| Marketplace
Sign in
Visual Studio Code>Education>Atividades JSNew to Visual Studio Code? Get it now.
Atividades JS

Atividades JS

Atividades JS

|
7 installs
| (0) | Free
Atividades JavaScript com autenticação Google e acompanhamento de sessão.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

extensaoAtividadesJS

Extensão independente, inspirada no fluxo do Frontend Teams Cup. Versão inicial para VS Code Desktop local no Windows, com JavaScript sem dependências de execução. Não altera a extensão original.

Estado da entrega

Versão 0.2.0: o servidor Python está implementado em server/, pronto para upload manual. Leia server/DEPLOY.md. A extensão usa o prefixo fixo /atividades-js/, envia inventário de extensões e respeita fechamento/reabertura pelo professor. As rotas do serviço antigo permanecem separadas.

O botão abre diretamente o Google no navegador, usando OAuth Desktop com PKCE e o cliente autorizado pelo responsável. O aluno não configura servidor. A API Python valida a conta em /atividades-js/api/login. O backend está implementado, mas sua instalação e a homologação no domínio ainda precisam ser realizadas.

Uso

  1. Instale o VSIX ou abra esta pasta no VS Code e execute uma janela de desenvolvimento com code --extensionDevelopmentPath="CAMINHO_ABSOLUTO_DA_PASTA".
  2. No painel Atividade JS, clique em Entrar com Google. O navegador abre a seleção de conta.
  3. Depois do login, informe o código da atividade solicitado pela extensão. Sua conta permanece conectada para tentar outro código, se necessário.
  4. O código aceita de 1 a 8 letras/números. Leia e confirme o aviso de monitoramento para iniciar. Não há formulário de configuração.
  5. O servidor retorna o modelo script.js da atividade. O arquivo aparece na seção Atividade JS do Explorer e abre no editor. Entre em tela cheia com F11; a edição libera após confirmação de foco e tela cheia.
  6. Execute Atividades JS: Ver relatório de foco ou clique no indicador da barra de status.
  7. Execute Atividades JS: Finalizar e enviar. Aguarde a confirmação de recebimento.

Comportamento

Requisito Implementação
Google/Gmail Navegador → Google → retorno local → código → API. PKCE/state por tentativa; tokens pessoais somente em memória.
Código da atividade Expressão ^[A-Z0-9]{1,8}$.
Foco a cada 2 s Heartbeat com focused e indicação do editor selecionado. Mudanças de janela são registradas imediatamente, mesmo entre heartbeats.
Relatório Horário de saída/retorno, duração por intervalo, quantidade de saídas e tempo acumulado. Inclui saída ainda em andamento.
Arquivos a cada 5 s Snapshot completo do único arquivo autorizado, script.js, incluindo alterações ainda não salvas; SHA-256 e sequência.
Tela cheia a cada 3 s Consulta Windows da janela em primeiro plano, tamanho do monitor e estilo de janela. Maximizar normalmente não basta. Falha da consulta mantém bloqueado.
Bloqueio Permissão somente leitura, comando do editor, rejeição de gravações e reversão de mudanças recebidas quando bloqueado. Perda de foco bloqueia imediatamente.
Área de transferência Limpa texto ao sair e retornar ao VS Code; registra sucesso ou falha. Não apaga histórico Win+V, sincronização ou gerenciadores externos.
IP, MAC e rede Interfaces locais não loopback (IPv4/IPv6/MAC) e perfis do Windows na abertura; atualização a cada 30 s quando mudam. IP público deve ser extraído pelo servidor.
Apenas script.js FileSystemProvider virtual por instância; recusa criação, exclusão e renomeação. Limite de 1 MiB em UTF-8.
Pasta .vscode Não pode ser criada na pasta virtual. Nenhuma pasta real preexistente é apagada.
Outra instância URI aleatória por sessão; outra instância não tem os bytes da pasta virtual. Exclusividade real exige lease no backend.
Extensões Inventário de IDs, versões e estado ativo na abertura, quando a lista muda e a cada 10 s se houver alteração de estado.
Prova fechada O backend recusa snapshots; o heartbeat informa o fechamento e a edição bloqueia. A reabertura é percebida no próximo heartbeat.

Os intervalos são agendamentos de melhor esforço, sujeitos à carga do computador e latência. Requisições possuem prazo de 10 s, não se sobrepõem por tipo e não seguem redirecionamentos. Após 15 s sem resposta do servidor, a edição bloqueia. A consulta de tela cheia expira após 6,5 s. Não há garantias de tempo real.

A pasta da atividade é virtual, não uma pasta comum no disco. Isso impede que um editor externo abra o mesmo script.js por caminho físico. Backups de recuperação e relatório ficam no armazenamento privado da extensão (globalStorageUri), fora da pasta da prova. Eles não são reaplicados automaticamente ao editor.

Interrupções e recuperação

Eventos são gravados em <instanceId>.events.jsonl; cópia de recuperação em <instanceId>.script.js, atualizada a cada snapshot e no encerramento normal. A cópia local não é criptografada e não é prova inviolável. A janela pode ser fechada abruptamente antes da última gravação.

Enquanto a janela permanece aberta, eventos pendentes são reenviados com IDs estáveis. Com 10.000 eventos pendentes, novos heartbeats locais deixam de ser acumulados; transições de foco continuam registradas e a ausência de heartbeat deve aparecer no servidor. Não há limite de duração de prova imposto pelo cliente: o backend deve aplicar prazo.

Ao reiniciar o VS Code, não se retoma silenciosamente uma prova: a instância anterior expira no servidor e o professor autoriza a retomada. Sem sessão ativa, o comando de relatório abre a pasta de armazenamento numa nova janela. O professor deve conciliar a cópia local com a última versão aceita no servidor. Não há reenvio automático do journal de uma execução anterior.

Validação e empacotamento

npm run check
npm test
# Instalação necessária apenas para empacotar em máquina sem vsce:
npm install
npm run package

Confira SEGURANCA.md antes de usar em avaliação. Testes automatizados não substituem o roteiro manual com backend real, F11, múltiplos monitores, perda de rede e fechamento do VS Code.

Resultado da validação desta entrega

Verificação de sintaxe e dez testes automatizados aprovados, incluindo uma sessão com API/VS Code simulados. Login Google e backend reais ainda não foram homologados. A execução de native/probe.ps1 neste computador foi recusada pelo AuthorizationManager do PowerShell; por isso a detecção real de tela cheia não foi validada. A instituição precisa distribuir o script assinado/confiável conforme sua política de execução. A extensão não altera nem contorna essa política e permanece bloqueada quando a consulta nativa falha.

Manutenção da distribuição

src/deployment.json contém o servidor fixo e o cliente OAuth Desktop original, incluindo seu client secret, cuja reutilização foi autorizada pelo responsável. Esses dados fazem parte do VSIX; o aluno não configura nada. Clientes Desktop são públicos e não podem manter esse valor confidencial: a proteção do fluxo depende de PKCE/state, validação Google e autenticação da API. Tokens pessoais ficam somente em memória. A extensão original não precisa estar instalada.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft