fix(vault): drain and replay the pin retry queue
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 55/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- bun, javascript, localization, typescript
Direção de pesquisa
Read frontend/src/features/vault-pinning/lib/sync-queue.ts and frontend/src/features/vault-pinning/hooks/use-pin.ts to understand queue storage and enqueue behavior. Then inspect the pin UI and the /api/vault/pin handler to trace manual retry, startup and online triggers, and idempotent replay. Add tests in the frontend/tests/*.test.mjs style and run them with bun test; done means retries are ordered and bounded, successful entries are removed, and persistent failures appear in the UI.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
Failed pin-audit writes are queued in the browser but never replayed. Add a drain that retries them safely.
Estimated size: S
Motivation
A pin can succeed at the provider while the audit write fails, leaving quota accounting wrong until someone fixes it by hand.
Current state in this repo
frontend/src/features/vault-pinning/hooks/use-pin.tscallsenqueue(...)when the audit write fails.frontend/src/features/vault-pinning/lib/sync-queue.tsstores entries undervault:pin_queueinlocalStorage; nothing reads and replays them.
Proposal
- Add
drainQueue()that replays entries against/api/vault/pinin timestamp order. - Run it on app start, on the browser
onlineevent, and from a manual retry action in the pin UI. - Exponential backoff with a cap; de-duplicate by
(cid, service, action)keeping the latest entry; stop after N failures and surface the entry in the UI.
Acceptance criteria
- A failed audit write is replayed after reconnect and then removed from the queue.
- Replaying the same entry twice does not change quota (the server write is idempotent).
- Entries that keep failing are surfaced to the user instead of retrying forever.
Out of scope
- Syncing the queue across devices.
Dependencies
- None; can be picked up independently.
Testing plan
- Unit tests with a fake
fetchand fake timers (frontend/tests/*.test.mjsstyle, run withbun test).
Part of #43. Ground rules for the content layer: no secrets in the repo, content-layer failures must never block or discard quantum execution, and tests and docs ship with every PR.
- Linguagem predominante
- Python
- Estrelas
- 2
- Forks
- 4
- Merge médio
- 6h 14min
- PRs com merge (30d)
- 18
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de QMeshPy/distributed-quantum
-
enhancement good first issue helia storage tier-1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
QMeshPy/distributed-quantum#53 ·
Mantenedores costumam responder em até 1 dia
-
chain-integration enhancement payments research-spike tier-2
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
QMeshPy/distributed-quantum#78 ·
Mantenedores costumam responder em até 1 dia
-
chain-integration enhancement payments research-spike tier-2
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 66/100
QMeshPy/distributed-quantum#77 ·
Mantenedores costumam responder em até 1 dia
-
documentation good first issue kubo storage tier-1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 42/100
QMeshPy/distributed-quantum#75 ·
Mantenedores costumam responder em até 1 dia
-
enhancement kubo storage tier-2
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 56/100
QMeshPy/distributed-quantum#74 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de QMeshPy/distributed-quantum
Issues semelhantes
-
[Resource]: LoreAbertaresource-submission validation-passed
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
hesreallyhim/awesome-claude-code#3234 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
openminion/openminion#376 ·
Mantenedores costumam responder em até 1 dia
-
Type: ☹︎ Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
posit-dev/great-tables#1028 ·
Mantenedores costumam responder em até 1 dia
-
integration: apple_tv
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
home-assistant/core#188282 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
A "since" range is worded as a career: "the past two seasons" says "regular season career (2025 on)"AbertaP4: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
jeffknupp/association#538 ·