A sincronização por dentro

O artigo Como funciona a sincronização descreve o que vês. Este vai um nível mais fundo, até ao que cada dispositivo e o servidor fazem realmente com as tuas alterações.

Cada alteração torna-se uma operação

Quando editas uma nota, o teu dispositivo faz duas coisas num só passo: guarda o novo texto na base de dados local e acrescenta uma operação a uma fila, um pequeno registo que diz "esta nota mudou, aqui está a nova versão". Criar, editar, fixar, etiquetar, arquivar e eliminar uma nota são tudo operações.

Antes de enviar a fila, o teu dispositivo arruma-a. Dez edições rápidas à mesma nota passam a ser uma só. Se fixares uma nota enquanto ainda estás a escrever nela, a fixação e o novo texto fundem-se numa única operação, por isso nenhuma das alterações se perde. A ordem da fila é a única que conta: uma alteração posterior ganha sempre a uma anterior, diga o relógio do dispositivo o que disser.

Uma operação só sai da fila depois de o servidor a confirmar. Se a ligação cair a meio, ou se fechares a aplicação durante a sincronização, a fila continua lá da próxima vez e nada se perde.

Enviar, depois receber

A sincronização são duas conversas simples com o servidor:

  • Enviar. O teu dispositivo envia as operações em fila, em lotes. O servidor aplica cada uma e escreve-a num registo de alterações da tua conta, dando a cada entrada o número seguinte da sequência.
  • Receber. O teu dispositivo pergunta: "o que mudou desde o número 1234?" O servidor responde com todas as entradas do registo depois desse número, e o dispositivo aplica-as à sua base de dados local.

Como cada dispositivo se lembra do último número que viu, só descarrega o que é novo. Não importa quanto tempo um dispositivo esteve offline: retoma exatamente onde tinha ficado.

Tudo o que altera as tuas notas passa por esse registo, incluindo as alterações feitas através da API ou de uma ferramenta de IA ligada por MCP. É por isso que uma nota que um assistente de IA escreve por ti aparece em todos os teus dispositivos como qualquer outra.

Como se detetam os conflitos

Cada edição que o teu dispositivo envia leva consigo uma indicação da última versão dessa nota que ele viu. Se a cópia do servidor tiver mudado entretanto, porque outro dispositivo a editou nesse meio-tempo, o servidor não substitui nada. Em vez disso, responde com a sua própria cópia.

O teu dispositivo tenta então uma fusão a três vias, a técnica usada pelas ferramentas de controlo de versões. Compara três textos: a versão de onde ambos os dispositivos partiram, a tua e a do servidor. Se as edições tocarem em partes diferentes da nota, combina-as e envia o resultado fundido, sem que dês por isso. Só quando ambos os dispositivos alteraram as mesmas linhas é que o Caliu te pergunta que versão manter. Consulta o artigo Resolver conflitos de sincronização.

Algumas alterações nunca entram em conflito. Fixar, arquivar e tornar uma nota só de leitura não contam como edições ao seu texto, por isso fundem-se sem problemas com qualquer outra coisa.

As mesmas regras em todos os dispositivos

As aplicações web, Apple e Android estão escritas em três linguagens diferentes, mas seguem as mesmas regras de sincronização. As regras para arrumar a fila são verificadas contra um único conjunto partilhado de casos de teste nas três, por isso uma alteração feita num dispositivo é tratada da mesma forma por todos os outros.

Sem conta

Sem conta, nada sai alguma vez do teu dispositivo. Quando inicias sessão, as notas que já estão no teu dispositivo passam a fazer parte da tua conta e são enviadas como qualquer outra alteração.