merge: resolve v1.0-dev conflict in scheduled_votes.rs#593
Merged
PastaPastaPasta merged 11 commits intoFeb 17, 2026
Conversation
* Initial plan * Skip chain lock refresh in SPV mode Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Document SPV guard intent Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com>
* fix: compute relative timestamps from actual data Replace hardcoded display strings like "Received: 1 day ago" with real relative timestamps computed from document createdAt/updatedAt fields using chrono::Utc::now(). Fixes dashpay#579 * style: fix import ordering per cargo fmt * refactor: extract format_relative_time to shared dashpay module Deduplicate the identical format_relative_time function that existed in both contact_requests.rs and send_payment.rs. Move it to the dashpay mod.rs as a pub(crate) function and import from both files. --------- Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com>
…shpay#575) * fix: update dashpay/platform to d6f4eb9 for DIP-18 HRP fix The previous platform revision used incorrect bech32m HRP prefixes (evo/tevo) for Platform addresses. The updated commit uses the correct DIP-0018 prefixes (dash/tdash). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(spv): use dash-spv SyncProgress API directly Replace the intermediate SyncProgress/DetailedSyncProgress/SyncStage translation layer with direct use of dash_spv::sync::SyncProgress. This eliminates ~120 lines of bridge code in spawn_progress_watcher() and determine_sync_stage(), and lets the UI query per-manager progress (headers, filter_headers, filters, masternodes, blocks) via the upstream API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve sync progress accuracy and robustness - Log headers() error before discarding for easier debugging - Restore download-window optimization for headers progress on checkpoint-resumed syncs (progress starts near 0% not 83%) - Replace catch-all _ => 0.0 with explicit SyncState variant matches so new variants produce compile errors - Fix filters progress to use current_height/target_height instead of downloaded/target_height (session count vs absolute height mismatch) - Restore peer count in sync status text - Add "Querying peer heights" label and diffs_processed to masternode status for more informative sync messages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): use height-based blocks progress to prevent bar from jumping The blocks progress bar was bouncing backward because it used processed/requested session counters whose denominator grows as filters discover more matching blocks. Switch to last_processed block height relative to headers target_height, which only increases. Display "current / target" heights instead of percentage on the blocks bar. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve progress bar resilience across resume and network switch - Add windowed progress tracking for filters (consistent with headers/filter_headers) - Reset blocks_stage_start on Error state so recovery gets a fresh window - Track spv_progress_network to detect network changes and rebuild progress state from the new network's sync_progress instead of resetting to zero - Eliminate redundant clone in progress watcher (move instead of clone twice) - Consolidate all progress state reset logic into rebuild_spv_progress_state() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…#565) * build: add git and cargo permissions to Claude Code workflow Allow Claude to run git fetch/merge/checkout/rebase/push and cargo build/test/clippy/fmt commands. Switch model to opus. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use claude_args for model and allowed tools The `model` and `allowed_tools` inputs are not declared in claude-code-action@v1 and are silently ignored. Move them to `claude_args` with --model and --allowedTools flags. Also fix deprecated colon syntax (`:*`) to space syntax (` *`). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use single quotes to prevent glob expansion in allowed tools Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build: sandbox cargo commands and add git permissions for Claude - Add safe-cargo.sh wrapper that strips CI secrets before running cargo - Use --allowedTools for git and safe-cargo, --disallowedTools for raw cargo - Document safe-cargo usage in CLAUDE.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: switch safe-cargo.sh from denylist to allowlist approach Use `env -i` (start with empty environment, explicitly pass only what cargo needs) instead of `env -u` (strip known secrets). This is more robust against future secrets being added to the workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build: deny Claude from editing CI scripts and workflows Prevent Claude from modifying .github/scripts/ and .github/workflows/ to ensure the safe-cargo wrapper cannot be tampered with. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: conditionally pass optional env vars in safe-cargo.sh Empty PROTOC="" caused prost build scripts to fail with "protoc not found". Now optional vars (PROTOC, CC, CXX, etc.) are only passed when set and non-empty. Tested: build, test, fmt all pass through the wrapper. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * rabbit feedback * build: move safe-cargo.sh to scripts/ and allow +nightly fmt Move safe-cargo.sh from .github/scripts/ to top-level scripts/ for better discoverability. Add detailed comment explaining why the wrapper exists (prevent CI secret exfiltration via build scripts). Update all references in claude.yml, CLAUDE.md, and permission settings. Add `+nightly fmt` to allowedTools so Claude can follow CLAUDE.md formatting instructions in CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ashpay#561) * fix: return error instead of panicking on corrupted database blobs (dashpay#560) - Replace `unreachable!()` in `get_scheduled_votes` with warning log and default to false for unexpected `executed` column values - Change `QualifiedIdentity::from_bytes()` to return `Result` instead of panicking via `.expect()` - Propagate deserialization errors as `rusqlite::Error` in all 6 callers so corrupted database is surfaced to the user rather than silently ignored or crashing the app - Add `CorruptedBlobError` newtype in database module to eliminate repeated `FromSqlConversionFailure` boilerplate Closes dashpay#560 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: impl thiserror * chore: fmt * build: add Claude Code GitHub workflow and settings (dashpay#552) Cherry-pick from v1.0-dev to enable @claude mentions in PRs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: fix after merge * fix: skip corrupted identity blobs in get_wallets instead of aborting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: fail on corrupted identity * doc: document error handling in the db --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
) * fix: connection status not updated * chore: rabbit feedback * Initial plan * Track DAPI connection status and display in tooltips and connection info - Add dapi_total_endpoints and dapi_available fields to ConnectionStatus - Factor DAPI availability into overall_connected status (RED when no endpoints available) - Query SDK AddressList during periodic refresh for endpoint counts and availability - Display DAPI status in connection indicator tooltip - Display DAPI status in network chooser Connection Status card (all modes) - Add dapi_status_label() helper for consistent status text formatting Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Address review feedback: store available endpoint count and extract DRY helper - Changed dapi_available from AtomicBool to AtomicU16 (dapi_available_endpoints) to store the count of available endpoints instead of just a boolean - Display format now shows "Available ({available}/{total} endpoints)" - Extracted repeated DAPI status rendering into add_dapi_status_label() helper function in network_chooser_screen.rs to eliminate code duplication Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Fix rustfmt formatting issues in connection_status.rs - Reorder atomic imports (AtomicU8 before AtomicU16) per rustfmt - Wrap long .store() call to respect line length - Wrap long format!() strings to respect line length Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Fix borrow checker error: extract DAPI status values before mutable self borrow The add_dapi_status_label helper was capturing a &ConnectionStatus reference (derived from self) in closures, which extended the immutable borrow past the self.render_spv_sync_progress() mutable borrow on line 594. Fix: change add_dapi_status_label to accept pre-computed owned values (dapi_total, dapi_available, dapi_label) instead of &ConnectionStatus, and extract those values early alongside other status fields. Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Switch Platform to c2c88e4 and use get_live_addresses() for accurate available count Updated dash-sdk dependency to Platform commit c2c88e4a988ce930 which adds AddressList::get_live_addresses() method. Replaced the workaround that used get_live_address().is_some() (which could only tell if at least one endpoint was live) with get_live_addresses().len() to get the exact count of available non-banned DAPI endpoints. Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * chore: typo + network changes * chore: apply feedback * chore: rabbit review * chore: rabbit feedback * chore: rabbitting * Remove overall_connected_with method (deleted upstream in base branch) Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * Merge v1.0-dev into copilot/update-dapi-connection-status Resolved modify/delete conflict on src/context.rs: removed the file since v1.0-dev refactored it into src/context/mod.rs and submodules, which already include our Arc<ConnectionStatus> changes. Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> * chore: fix platfom versioning issues * chore: add todo * chore: fmt --------- Co-authored-by: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…d UX (dashpay#577) * fix: update dashpay/platform to d6f4eb9 for DIP-18 HRP fix The previous platform revision used incorrect bech32m HRP prefixes (evo/tevo) for Platform addresses. The updated commit uses the correct DIP-0018 prefixes (dash/tdash). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(spv): use dash-spv SyncProgress API directly Replace the intermediate SyncProgress/DetailedSyncProgress/SyncStage translation layer with direct use of dash_spv::sync::SyncProgress. This eliminates ~120 lines of bridge code in spawn_progress_watcher() and determine_sync_stage(), and lets the UI query per-manager progress (headers, filter_headers, filters, masternodes, blocks) via the upstream API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve sync progress accuracy and robustness - Log headers() error before discarding for easier debugging - Restore download-window optimization for headers progress on checkpoint-resumed syncs (progress starts near 0% not 83%) - Replace catch-all _ => 0.0 with explicit SyncState variant matches so new variants produce compile errors - Fix filters progress to use current_height/target_height instead of downloaded/target_height (session count vs absolute height mismatch) - Restore peer count in sync status text - Add "Querying peer heights" label and diffs_processed to masternode status for more informative sync messages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): use height-based blocks progress to prevent bar from jumping The blocks progress bar was bouncing backward because it used processed/requested session counters whose denominator grows as filters discover more matching blocks. Switch to last_processed block height relative to headers target_height, which only increases. Display "current / target" heights instead of percentage on the blocks bar. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve progress bar resilience across resume and network switch - Add windowed progress tracking for filters (consistent with headers/filter_headers) - Reset blocks_stage_start on Error state so recovery gets a fresh window - Track spv_progress_network to detect network changes and rebuild progress state from the new network's sync_progress instead of resetting to zero - Eliminate redundant clone in progress watcher (move instead of clone twice) - Consolidate all progress state reset logic into rebuild_spv_progress_state() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): update ConnectionStatus immediately on connect/disconnect Propagate SPV status into ConnectionStatus right after start_spv() and stop_spv() so the UI reflects the change on the next frame instead of waiting for the next throttled trigger_refresh() cycle (2-10 seconds). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): check cancellation token in listener tasks to prevent shutdown hang SPV finality and reconcile listeners blocked app shutdown for up to 10s because they never checked the global cancellation token. Add cancel branches to their tokio::select! loops so they exit immediately on shutdown. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: remove log spamming line * fix(spv): make listener handler calls cancellation-aware and add shutdown trace logging Wrap reconcile_spv_wallets(), handle_spv_finality_event(), and the debounce sleep inside tokio::select! with the cancellation token so shutdown can interrupt them even when blocked on locks held by the SPV sync thread. Add trace-level logging to TaskManager::shutdown() for per-task join timing to aid future shutdown diagnostics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): disable Disconnect button during stopping and poll status faster - Disable the Disconnect button while SPV status is Stopping to prevent double-clicks and provide visual feedback - Poll SPV status every 200ms during Stopping instead of the 10s connected interval so the Stopped transition is reflected within 1s - Reset the throttle timer in stop_spv() so fast polling starts immediately Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(tasks): add mandatory task names to spawn_sync for shutdown diagnostics Change spawn_sync() signature to require a &'static str name. The JoinSet now yields the task name on completion, letting shutdown() log which tasks finished and which ones timed out. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: log task names * refactor(spv): eliminate separate OS thread and tokio runtime Replace the dedicated SPV thread + 4-worker tokio runtime with a spawned task on the main 12-worker runtime via TaskManager::spawn_sync. This simplifies shutdown (SPV loop now tracked in unified JoinSet), removes cross-runtime complexity, and improves debuggability. Additional changes: - Fix: zeroize xprv_str after wallet import (security H-1) - Fix: sanitize devnet_name in build_spv_data_dir to prevent path traversal - Add 21 integration tests covering lifecycle, concurrency, deadlock detection, and live testnet sync Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): derive stop_token as child of global cancel for clean shutdown The spv_request_handler selected on stop_token, which was independent of the global cancellation token. During window-close shutdown only the global token was cancelled, leaving the request handler running and causing a ~5s hang until the TaskManager timeout aborted it. Fix by creating stop_token as a child_token() of the global cancel. This also simplifies run_spv_loop and run_sync_and_monitor by removing the redundant global_cancel parameter — a single stop_token now covers both explicit SpvManager::stop() and application-wide shutdown. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * CLAUDE: minor changes about docs * fix(spv): bump rust-dashcore to d8bc066 for faster disconnect and add shutdown tracing Pin rust-dashcore patches to commit d8bc066 which includes: - sync manager task loop exits on network errors instead of logging indefinitely - sync coordinator signal_shutdown() cancels tasks before network disconnect - connection tasks race Peer::connect() against shutdown token Add debug tracing to SpvManager::stop() and run_sync_and_monitor() to measure client.stop() duration, and trace-level polling of SPV status in ConnectionStatus. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: update rust-dashcore rev * merge: resolve v1.0-dev conflicts for dashpay#577 (dashpay#585) * fix: compute relative timestamps from actual data (dashpay#581) * fix: compute relative timestamps from actual data Replace hardcoded display strings like "Received: 1 day ago" with real relative timestamps computed from document createdAt/updatedAt fields using chrono::Utc::now(). Fixes dashpay#579 * style: fix import ordering per cargo fmt * refactor: extract format_relative_time to shared dashpay module Deduplicate the identical format_relative_time function that existed in both contact_requests.rs and send_payment.rs. Move it to the dashpay mod.rs as a pub(crate) function and import from both files. --------- Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com> * fix: update platform for DIP-18 HRP and improve SPV sync progress (dashpay#575) * fix: update dashpay/platform to d6f4eb9 for DIP-18 HRP fix The previous platform revision used incorrect bech32m HRP prefixes (evo/tevo) for Platform addresses. The updated commit uses the correct DIP-0018 prefixes (dash/tdash). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(spv): use dash-spv SyncProgress API directly Replace the intermediate SyncProgress/DetailedSyncProgress/SyncStage translation layer with direct use of dash_spv::sync::SyncProgress. This eliminates ~120 lines of bridge code in spawn_progress_watcher() and determine_sync_stage(), and lets the UI query per-manager progress (headers, filter_headers, filters, masternodes, blocks) via the upstream API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve sync progress accuracy and robustness - Log headers() error before discarding for easier debugging - Restore download-window optimization for headers progress on checkpoint-resumed syncs (progress starts near 0% not 83%) - Replace catch-all _ => 0.0 with explicit SyncState variant matches so new variants produce compile errors - Fix filters progress to use current_height/target_height instead of downloaded/target_height (session count vs absolute height mismatch) - Restore peer count in sync status text - Add "Querying peer heights" label and diffs_processed to masternode status for more informative sync messages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): use height-based blocks progress to prevent bar from jumping The blocks progress bar was bouncing backward because it used processed/requested session counters whose denominator grows as filters discover more matching blocks. Switch to last_processed block height relative to headers target_height, which only increases. Display "current / target" heights instead of percentage on the blocks bar. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(spv): improve progress bar resilience across resume and network switch - Add windowed progress tracking for filters (consistent with headers/filter_headers) - Reset blocks_stage_start on Error state so recovery gets a fresh window - Track spv_progress_network to detect network changes and rebuild progress state from the new network's sync_progress instead of resetting to zero - Eliminate redundant clone in progress watcher (move instead of clone twice) - Consolidate all progress state reset logic into rebuild_spv_progress_state() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * build: add git and cargo permissions to Claude Code workflow (dashpay#565) * build: add git and cargo permissions to Claude Code workflow Allow Claude to run git fetch/merge/checkout/rebase/push and cargo build/test/clippy/fmt commands. Switch model to opus. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use claude_args for model and allowed tools The `model` and `allowed_tools` inputs are not declared in claude-code-action@v1 and are silently ignored. Move them to `claude_args` with --model and --allowedTools flags. Also fix deprecated colon syntax (`:*`) to space syntax (` *`). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use single quotes to prevent glob expansion in allowed tools Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build: sandbox cargo commands and add git permissions for Claude - Add safe-cargo.sh wrapper that strips CI secrets before running cargo - Use --allowedTools for git and safe-cargo, --disallowedTools for raw cargo - Document safe-cargo usage in CLAUDE.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: switch safe-cargo.sh from denylist to allowlist approach Use `env -i` (start with empty environment, explicitly pass only what cargo needs) instead of `env -u` (strip known secrets). This is more robust against future secrets being added to the workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build: deny Claude from editing CI scripts and workflows Prevent Claude from modifying .github/scripts/ and .github/workflows/ to ensure the safe-cargo wrapper cannot be tampered with. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: conditionally pass optional env vars in safe-cargo.sh Empty PROTOC="" caused prost build scripts to fail with "protoc not found". Now optional vars (PROTOC, CC, CXX, etc.) are only passed when set and non-empty. Tested: build, test, fmt all pass through the wrapper. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * rabbit feedback * build: move safe-cargo.sh to scripts/ and allow +nightly fmt Move safe-cargo.sh from .github/scripts/ to top-level scripts/ for better discoverability. Add detailed comment explaining why the wrapper exists (prevent CI secret exfiltration via build scripts). Update all references in claude.yml, CLAUDE.md, and permission settings. Add `+nightly fmt` to allowedTools so Claude can follow CLAUDE.md formatting instructions in CI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com> Co-authored-by: lklimek <842586+lklimek@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * chore: bump rust-dashcore * chore: imports --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Pasta Lil Claw <pasta+claw@dashboost.org> Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com> Co-authored-by: PastaPastaPasta <6443210+PastaPastaPasta@users.noreply.github.com>
* ci: cancel in-progress workflow runs on new push Add concurrency groups to Tests and Clippy workflows so that previous runs are automatically cancelled when a new commit is pushed to the same branch or PR. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * trigger ci --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…o" (dashpay#582) The DashPay contract schema defines the field as "publicMessage", not "bio". This caused profile bios to never load in contact info. Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com>
…reens (dashpay#592) * fix(ui): correct platform address hint text in transfer screen The hint text showed "y..." which is a Core address prefix. Platform addresses use evo1.../tevo1... (Bech32m format per DIP-18). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui): add network-aware hint text and platform address detection in withdraw screen The withdraw screen only supports Core addresses but had no hint text and showed a generic "Invalid address" for platform addresses. Now shows network-appropriate Core address hints and a specific error message when a user enters an evo1.../tevo1... platform address. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui): use network-aware hint text in wallet send dialog The send dialog hint text showed "y..." which is only valid for testnet/devnet. Now shows network-appropriate Core address prefixes (X.../7... for mainnet, y.../8... for testnet). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui): add inline address validation to wallet send dialog The send dialog had no frontend address validation — invalid addresses only errored at the backend level. Now validates on input change using Address parsing with inline error display, and detects platform addresses (evo1.../tevo1...) with a specific unsupported format message. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use DIP-18 HRP constants (dash/tdash) instead of deprecated evo/tevo prefixes - Add is_platform_address_string() helper using SDK's PLATFORM_HRP_MAINNET/TESTNET constants - Replace all hardcoded starts_with("evo1")/starts_with("tevo1") checks with the helper - Update all UI hint text, error messages, and doc comments to reference dash1.../tdash1... - The '1' is the bech32 separator, not part of the HRP — detection now properly uses HRP + separator Addresses review feedback on PR dashpay#592. * fix: address CodeRabbit review feedback - Use trimmed input for Address::from_str in withdraw_screen (bug fix) - Make transfer_screen hint text network-aware (dash1 vs tdash1) - Disable Send button when address validation error is present * style: cargo fmt --------- Co-authored-by: PastaClaw <thepastaclaw@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Keep the more descriptive warning message from the PR branch that includes the contested_name context.
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (2)
Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
57bae38
into
dashpay:fix/replace-panics-with-error-propagation
3 checks passed
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.
Resolves the merge conflict in
src/database/scheduled_votes.rsfor PR #562.Conflict: Both branches modified the warning message in the
executedcolumn parser.contested_nameResolution: Kept the PR branch's version since it provides better context for debugging (includes the scheduled vote name).
Once merged, PR #562 should be conflict-free against
v1.0-dev.