No description
  • HTML 71%
  • JavaScript 28.3%
  • Shell 0.7%
Find a file
Nostress767 e52129930e
All checks were successful
Deploy / deploy (push) Successful in 1m11s
Adicionado cancelamento de echo para Chromium
2026-09-20 17:50:01 -03:00
.forgejo/workflows Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
vendor Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
.gitignore Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
404.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
_headers Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
apple-touch-icon.png Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
build.sh Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
call.js Adicionado opções para escolher áudio e melhorado experiência na tela cheia 2026-09-09 19:53:38 -03:00
derive.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
disk.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
favicon.ico Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
favicon.png Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
favicon.svg Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
files.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
friends.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
ggjz.png Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
group.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
handshake.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
harness.mjs Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
host.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
ice.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
identity.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
index.html Adicionado relay temporário 2026-09-19 20:13:46 -03:00
LICENSE Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
lobby.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
log.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
logsync.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
members.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
notify.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
pair.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
pairs.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
picture.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
presence.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
quota.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
rate.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
README.md Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
seal.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
serve.sh Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
share.js Adicionado cancelamento de echo para Chromium 2026-09-20 17:50:01 -03:00
store.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
stream.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
sw.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
test-files.html Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
test-friends.html Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
test-handshake.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
test-ice.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
test-lobby.html Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
test-log.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
test-members.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
test-pair.html Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
test-presence.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
test-share.html Adicionado cancelamento de echo para Chromium 2026-09-20 17:50:01 -03:00
test-voice.html Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00
transfer.js Primeira versão do au.ggjz.org 2026-09-09 18:49:21 -03:00
voice.js Adicionado convite por link e agora a voz é compartilhada entre pessoas na mesma chamada para o maior alcance 2026-09-10 20:27:12 -03:00

会う — au.ggjz.org

Voz, tela compartilhada, canais de texto, mensagens diretas e arquivos para um grupo pequeno de amigos. Não há servidor, banco de dados nem cadastro: cada pessoa é um par de chaves guardado no próprio navegador, o grupo é um log assinado que todos os navegadores carregam, e tudo trafega direto de um navegador para o outro por WebRTC.

Uma página estática, um index.html sobre módulos ES. Nada de build, nada de framework.

Rodando localmente

./serve.sh

Isso serve a pasta em https://localhost:8770 com um certificado autoassinado — crypto.subtle e RTCPeerConnection exigem contexto seguro, e um endereço de LAN sem HTTPS não é um. Aceite o aviso do navegador uma vez. PLAIN=1 serve por HTTP simples, o que só vale para localhost.

Duas identidades na mesma máquina são duas origens. Abra a página em localhost numa janela e em 127.0.0.1 na outra (ou 127.0.0.2, e assim por diante) — cada origem cria a própria chave. Duas abas na mesma origem são a mesma pessoa.

Testes

Onze arquivos test-*.html exercitam os módulos fora da rede, com salas e relay falsos. Abra cada um no navegador, ou rode os onze de uma vez sem interface:

npm i -D playwright                   # uma vez
PLAIN=1 PORT=8771 ./serve.sh          # noutro terminal
node harness.mjs http://localhost:8771
BROWSER=chromium node harness.mjs http://localhost:8771

O runner não traz o Playwright junto: ele resolve playwright como qualquer outra dependência, e PLAYWRIGHT=<caminho> aponta para uma instalação que esteja em outro lugar. Os onze precisam passar no Firefox e no Chromium antes de qualquer mudança ser considerada pronta.

Publicando

./build.sh        # monta dist/ — só o que a página serve

.forgejo/workflows/deploy.yml roda isso a cada push na main e envia o dist/ para o Cloudflare Pages, que é o que responde em au.ggjz.org. Os testes, o runner e este arquivo não vão para o ar.

Contribuindo

Este repositório é mantido por uma pessoa só, e o git.ggjz.org não aceita cadastro próprio: as contas vêm por OAuth do ggjz.org. Não há como abrir um pull request de fora — se você quer mexer no código, mande um email para nostress767@ggjz.org e a gente combina.

Licença

AGPL-3.0-or-later. O que a página usa de terceiros está creditado no botão licenças, no topo da tela de amigos.