Configurações acompanham o perfil entre dispositivos (storage.sync) - #46
Open
juansilvadesign wants to merge 1 commit into
Open
Configurações acompanham o perfil entre dispositivos (storage.sync)#46juansilvadesign wants to merge 1 commit into
juansilvadesign wants to merge 1 commit into
Conversation
…storage.sync) As chaves de preferência — settings do motor, lastMode, memória por canal e tema — passam a viver em chrome.storage.sync, atrás de uma fachada em common.js (settingsArea/getSettings/setSettings). Migração local→sync única e idempotente (planSyncMigration, pura e testada; executada no boot do worker e na abertura do popup), com leitura de reserva no storage.local até ela rodar — usuário existente nunca vê um flash de padrões. Nenhuma chave é renomeada. Ficam locais de propósito: donate* (uso por dispositivo; sincronizar contaria em dobro), goLiveSignal (one-shot transitório), currentChannelId (é a aba DESTE dispositivo) e lastSeenVersion (cada navegador encontra o update no seu ritmo). De quebra, corrige o contador de uso da doação lendo `enabled` da área roaming — pós-migração ele leria undefined no local e contaria uso mesmo com a extensão desligada. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AiLQznJ15KbuK73b9YxAjS
13 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Descrição da mudança
As chaves de preferência — settings do motor,
lastMode, memória por canal (channelMemory/channelModes) e tema — passam a viver emchrome.storage.sync: quem usa o mesmo perfil do navegador em mais de um computador encontra o ZeroDelay do jeito que deixou.Como foi feito:
common.js(settingsArea/getSettings/setSettings): todos os consumidores (content, popup, background) leem/escrevem por ela.getSettingstem leitura de reserva nostorage.localenquanto a migração não aconteceu — usuário existente nunca vê um flash de padrões.ensureSettingsMigrated, executada no boot do worker e na abertura do popup): copia local→sync e limpa o local; se outro dispositivo migrou primeiro, o sync vence. O plano da migração é uma função pura (planSyncMigration) coberta por testes para os três cenários.donate*(uso é por dispositivo; sincronizar contaria em dobro),goLiveSignal(one-shot transitório) ecurrentChannelId(é literalmente "a aba vista NESTE dispositivo").enableddireto dostorage.local, então após a migração leriaundefinede contaria tempo de uso mesmo com a extensão desligada — agora lê pela fachada.Quota do sync é folgada para esses dados (o maior item é o
channelModescom teto de 50 canais, ~2 KB, contra 8 KB/item do sync).Tipo de mudança
Impacto em storage
Nenhuma chave é renomeada ou tem o formato alterado (inclusive
skipThreatholdfica exatamente como está) — o que muda é a área: as chaves de preferência migram destorage.localparastorage.sync, uma única vez, com plano puro testado (planSyncMigration) e leitura de reserva no local até lá. Se a escrita no sync falhar (quota/offline), o local é preservado e a migração tenta de novo no próximo boot. Downgrade da extensão: a versão antiga volta a ler o local (limpo) e encontra os padrões — nunca dado corrompido.Testes
npm run lintsem errosnpm testsem falhas (53 testes, incluindo 4 novos da migração)Também:
npm run check:locales,npm run build,npm run build:firefoxeweb-ext lint(0 erros / 0 avisos — ostorage.syncfunciona no Gecko MV3).Screenshots
Sem mudança visual — comportamento de storage apenas.
Checklist final
🤖 Generated with Claude Code
https://claude.ai/code/session_01AiLQznJ15KbuK73b9YxAjS