mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 16:14:40 +00:00
Durability & correctness: - Keep the job entry + disk checkpoint alive until the publish continuation completes (was: dropped at mining-complete); failed publishes keep their checkpoint for restart retry and surface through a failures SharedFlow - Move draft deletion into the publish continuations in every composer so a cancelled or process-killed mining job can't destroy the only copy of a post - Persist gift-wrap mining: split NIP17Factory into createSeals (signer interaction, runs inline) + wrapSeal (pure CPU, runs on the queue), new REPLAY_WRAPS records restore pending DM wraps after process death - Clamp synced NIP-78 difficulty (PoWPolicy.MAX_DIFFICULTY), require a sane target in PoWMiner, bound PoWRankEvaluator against short ids - Reaction double-tap while mining now toggles (dedupeKey + cancelByKey) instead of publishing duplicates - Restore checkpoints for every loaded account, not just the active one - logOff purges the account's checkpoints and cancels its queued jobs - Private notes: composer chip now gates on the gift-wrap kind and the per-post override reaches sendPrivateNote Coverage: - Public/live chat (kinds 42 + 1311) and voice replies (1244 + kind-1 audio replies) now route through the mining gate Perf: - FGS start() dedupes with a running flag; PendingIntents built once - Banner 1 Hz clock only ticks while a job shows elapsed time - PoWEstimator benchmark is single-flight behind a Mutex UX / l10n: - Post-mining failures toast with retry information - Count strings converted to <plurals>; elapsed time via DateUtils; settings estimate uses localized units; shared powKindLabelRes replaces three duplicated kind→label maps; dead pow_chip_* strings removed - CLI: pow mine lowercases the pubkey before mining (uppercase hex mined an id that never matches the signed event) and validates via quartz Hex New queue tests: checkpoint lifetime, failure reporting, cancelByKey toggle, per-owner cancellation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADb3dez9jPk6QqyQ1rTx4V