Uh oh!
There was an error while loading. Please reload this page.
feat: calculator v61 redesign - #554
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
122da44 to
87b302aCompare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
62b0997 to
bb69832Compare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
bb69832 to
e2cebe3Compare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
e2cebe3 to
f27ead0Compare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
6b93395 to
62bfa55Compare
This comment was marked as resolved.
This comment was marked as resolved.
62bfa55 to
3045c46Compare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
ovitrif
commented
May 25, 2026
@pwltr Thanks for testing, it was ack on my side that it doesn't work, so you just caught one state of how it didn't work. It was very hard to get all cases work without breaking the other(s). It seems stable now, I will request your review as well once I do my final checks around the rest of the work and tidy up the PR description with preview recordings 🙏🏻 . |
@pwltr Mainly outlook of how the app looks and feels, probably it wasn't that much of a need on iOS, on Android it's not from app's side who dictates what color theme the keyboard has, so, it used to be white and we used to have both
Theoretically it still behaves like a keyboard, it will probably look a litte odd because the calculator card is small and positioned either on the left or right above the numpad, but it ain't more different than what the OS keyboard look would bring in same case. |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
0a5d50e to
989b9a4Compare989b9a4 to
0e3cff7Compare
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
8dc1f5a to
fe04040Comparefe04040 to
af4e8bfComparepiotr-iohk
commented
May 26, 2026
Testing Notes
The only thing is that https://bitkit.stag0.blocktank.to/fx/rates/btc has some pairs stale (e.g. BTCUSD) which causes mismatches in staging build. Flagged in https://synonymworkspace.slack.com/archives/C03UWHGKUNP/p1779786482683179, but perhaps we can just consider using https://blocktank.synonym.to/fx/rates/btc for all builds across the board. |
There was a problem hiding this comment.
Tested:
- Open calculator widget in multiple positions from column
- Switch currency -> Conversion updated
- Switch BTC denomination -> BTC inout updated
- Press decimal key multiple times
- Hold delete button -> clean input
- Decimal placeholder for fiat and BTC classic
- iPhone SE 3rd generation
Uh oh!
There was an error while loading. Please reload this page.
Description
This PR:
ovi/calculator-os-widget-v61-backup-ios.Rationale for replacing OS keyboard with custom version of the in-app Numpad revolved around maintaining the app's look and feel and having more control to style it and have it behave like the app usually does in other flows.
Linked Issues/Tasks
Screenshot / Video
Note Recordings are sped up using
ffmpegat 2x for time reasons, actual capture of manual walkhroughs, not AI.calcWidgetPos2x.mov
calcWidgetOpts2x.mov
QA Notes
changelog.d/next/554.changed.mdManual Tests
➕ Dev + AI verified locally
0.00000000) like Android, including empty, integer, partially decimal, and fully decimal states..as the decimal key for both Classic BTC and fiat input, including comma-decimal locales.Reviewer / QA Requested
Note
These checks are marked as covered because they were exercised during local implementation and follow-up verification, including the final confirmed manual pass on the calculator focus/dismiss behavior.
The checks cover formatting/input behavior, Classic BTC placeholder parity with Android, fixed
.calculator decimal-key behavior, first/middle/last widget positions, above/around/below-center focus transitions, outside-tap dismissal, vertical numpad collapse, scroll locking while focused, and the vertical Home pager swipe-back regression..as the decimal key, matching the Android calculator behavior.Automated Tests
Added in this PR:
CalculatorWidgetTests: covers calculator grouping, fiat and Classic BTC decimal placeholder behavior, fixed.calculator decimal key behavior, number-pad delete/clear, decimal caps, localized comma input normalization, localized decimal input handling, fiat-only persistence, symbol shortening, classic BTC-to-sats conversion, classic BTC max-supply rejection, and visible0sats for fiat conversions that round to zero.Automated Checks
swiftformat Bitkit/Models/CalculatorWidgetData.swift Bitkit/Components/Widgets/CalculatorWidget.swift BitkitTests/CalculatorWidgetTests.swiftcompleted with no formatting changes needed after the Classic BTC placeholder / decimal-key patch.swiftformat Bitkit/Components/Widgets/CalculatorWidget.swift Bitkit/Views/Home/HomeWidgetsView.swiftcompleted with no formatting changes needed after the final animation patch.git diff --checkpassed.xcodebuild -workspace Bitkit.xcodeproj/project.xcworkspace -scheme Bitkit -configuration Debug -destination 'id=00008150-001C691C2604401C' -derivedDataPath build/DeviceValidation SWIFT_ACTIVE_COMPILATION_CONDITIONS='$(inherited) E2E_BUILD' buildpassed on the connected iPhone.LDKNodeFFI.frameworkinstall stub frombuild/DeviceValidation/Build/Products/Debug-iphoneos/Bitkit.app, re-signed the generated app product, installed it withxcrun devicectl device install app --device 07CD4544-B1F1-59BB-BB01-D50A80AECAC9, and launchedto.bitkitsuccessfully.xcodebuild build-for-testing ... -only-testing:BitkitTests/CalculatorWidgetTestspassed; after removing the known generated staticLDKNodeFFI.frameworkinstall stub and re-signing the generated app product,xcodebuild test-without-building ... -only-testing:BitkitTests/CalculatorWidgetTestspassed with 14 tests and 0 failures.xcodebuild test-without-building ... -only-testing:BitkitTests/CalculatorWidgetTestspassed on the connected iPhone with 18 tests and 0 failures after removing the known generated staticLDKNodeFFI.frameworkinstall stub from the generated app product.