Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 25cb54f35b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
[Medium impact] The PR appears safe to merge; no actionable issues were found. SummaryCustom on-chain fees now show a confirmation-time estimate based on the loaded fee tiers.
Tests and Android UI capture were not run during this review. Reviews (1) · Last reviewed commit: "feat: estimate confirmation time for a c..." · Reviewed by Greptile |
Regtest APKDownload bitkit-dev-debug universal APK (expires in 30 days). |
talosmachina
left a comment
There was a problem hiding this comment.
No findings. Shows the matching preset's confirmation time for a custom on-chain fee rate on the send confirm sheet, falling back to the custom description when fee tiers are unknown. Reviewed 25cb54f, full tier.
What I checked, and 4 candidates I ruled out
Read in full: FeeRate.kt, SendConfirmScreen.kt (the OnChainDetails fee cell), FeeRateTest.kt, the onchainFeeUi writers in AppViewModel.kt
CI: lint, detekt, build, build-local green; e2e running
Build: Bitkit track: the branch was not built here (Android branches are not built on this box, iOS does not build on Linux), so this review is reasoned from the code and from CI.
Ruled out
- Preset fees changed: the new branch only runs when
feeUi.rate == FeeRate.CUSTOM; preset rates render as before. - Zero or missing rate:
Custom(0u)(whatFeeRate.CUSTOM.toSpeed()returns) andfeeRates == nullboth keepCUSTOM, so no tier is invented; the test covers both. - Retained hardware payment: that path sets
rate = CUSTOMwithspeed = Custom(hardwareFeeRate), so it now gets a tier estimate from the real rate, which is the intent. - Tier boundaries:
fromSatsPerVByteuses>=per tier, and the tests pin exact-boundary, between-tier and below-slow cases.
Merge confidence: 4/5, the e2e shards had not finished at review time; FeeRateTest.kt covers the new mapping.
|
Pushed 2b146fe: adds |
jvsena42
left a comment
There was a problem hiding this comment.
Code scan at 2b146fe: no issues found. iOS needs no twin: it already maps a custom rate onto the fee tiers (SendConfirmationView.swift:624), and the Android text matches.
- Tier mapping: the custom rate and the tiers are both in sat/vB and compared per tier with
>=, the same as iOS. Below the slow tier it shows "+2 hours". Fast shows only at or above the loaded fast tier. - Hardware retry: a retained hardware payment uses its real signed rate.
- Parity: with no estimates loaded, this side shows "Depends on the fee" and iOS shows the normal-tier time.
Device gate (partial): 2b146fe — not run yet. Pending: send/custom-fee-confirmation-estimate.xml. It assumes the regtest Fast tier is below 50 sat/vB, so check the loaded tiers first.
Device results will follow in a separate review.
jvsena42
left a comment
There was a problem hiding this comment.
Device gate passed on regtest (emulator, Pixel 9). Approving; my earlier code scan found no issues.
The loaded tiers were Fast 3, Normal 1 and Slow 1 sat/vB, so the journey's assumption that Fast is below 50 holds.
custom-fee-confirmation-estimate.xml: all 5 steps passed. A custom 50 sat/vB rate shows "Custom (₿7 025)" with "±10-20 minutes".
Extra rates:
- 3 sat/vB (= Fast): ±10-20 minutes.
- 2 sat/vB (between Normal and Fast): ±20-60 minutes.
- 1 sat/vB: ±20-60 minutes. Regtest has Normal and Slow at the same rate, and
>= midwins, as the code intends.
Preset speeds are unchanged: Fast ±10-20 minutes, Normal ±20-60 minutes, Slow ±1-2 hours. Nothing was broadcast and there was no crash.
Not reachable on regtest: a rate below Slow ("+2 hours"). Slow is 1 sat/vB and the custom screen won't continue at 0, so FeeRateTest covers that case.
Not from this PR: after a custom rate is set, the speed picker's Custom row still reads "Depends on the fee".
Device gate: 2b146fe — journeys: 1 passed, 0 failed (custom-fee-confirmation-estimate.xml), plus 3 extra rates and the presets; not run: below-Slow rate (unreachable on regtest, covered by FeeRateTest).
Closes #1634
Description
TransactionSpeed.getFeeTierLocalizedinSendConfirmationView), so this matches it and needs no iOS change.Out of Scope
Design
N/A — reuses the preset speeds' time copy.
Preview
Custom fee of 4 sat/vB with fee tiers 2 / 1 / 1 sat/vB, confirm sheet with details shown. Before and after:
QA Notes
Journeys
custom-fee-confirmation-estimate.xmlManual Tests
N/A
Automated Checks
FeeRateTest.ktSendConfirmScreenTest.kt(custom fee shows its tier's time)FeeRateTest, and the newSendConfirmScreenTestcase on an emulator