0a674d591affd6190d5b4979718fb09d3d8f79f3 gui: load app directly if wallet was previously synced (Michael Mallan)
1408f66963cf6ae5f2fe2ac29d2cd91f747477bc gui(home): indicate if blockchain is syncing (Michael Mallan)
62788d105c2fcdb1e6c400ca6f5f19138378ae0b gui(cache): include sync progress (Michael Mallan)
f3a136c30be0e443cebae85785f70999dfaf8485 gui(home): refactor sync status logic (Michael Mallan)
Pull request description:
This is to resolve#1384 by skipping the loading screen for an existing wallet even if the blockchain is still syncing.
This change will only make a difference for local backends given that ~~the blockchain for a Liana Connect wallet is always considered to be synced and so the loading screen was already loading the application directly~~ Liana Connect doesn't use the loading screen.
It builds on #1377, to additionally check the blockchain sync progress, and show a message with the sync progress as a percentage in case the blockchain is not fully synced. ~~using the logic added there to indicate on the home page that syncing is in progress if the poller has not yet run. Polling does not start until the blockchain has fully synced and so the same logic can be applied here.~~
~~For now, no distinction is made on the home page between the wallet syncing and the blockchain syncing, but this may change in future.~~
ACKs for top commit:
edouardparis:
ACK 0a674d591affd6190d5b4979718fb09d3d8f79f3
Tree-SHA512: 802e31b7f4be7ed9687e32a5921f19e4560f5f4b4f975fff452be2907954fc9c4c577add713bc999f6d8efa4c6502825361553c9cd5bcdb3be0d5f800f0aa213
ec7556ee12f13c87229974769667bb892695889c gui(home): indicate existing wallet is syncing (Michael Mallan)
f7314aa26ebb75fdbc016e7519eed52a827782a6 gui(cache): include last poll timestamp (Michael Mallan)
9dd737b98c74ff9e815b06ed20c35840f4eddb66 gui: upgrade liana dependency (Michael Mallan)
Pull request description:
This PR uses the changes from #1376 to complete #1373.
It builds on the changes from #1370 to consider an existing wallet (that uses a local backend) to be syncing until the first poll completes after opening the GUI, where "existing wallet" means one that has positive height (since a newly created wallet has height 0).
Note that for an external Liana daemon, this logic is only applied in case the last poll timestamp has already been set when starting the GUI. Otherwise, we can't be sure if this external daemon will ever set this value.
ACKs for top commit:
edouardparis:
ACK ec7556ee12f13c87229974769667bb892695889c
Tree-SHA512: a6db8e510a7d24ca554965512e289eb271dab41871bde9362a7af71b73c771431025b1be1092bab98b106fb520d8c6959d712909d1db9a21731f3a79c9f766a1
If opening an existing wallet that uses a local backend, indicate
that it is checking for new transactions until the first poll
completes.
A remote backend is always synced after the initial scan.
dee9554c518793b57b71965d835905300ef86fbc database: add `wallet()` method and use in `getinfo` command (Michael Mallan)
4694eaaef9f6650047ab5a527c8c7852a01ab7fe poller: don't poll now if blockchain syncing (Michael Mallan)
0f9f1f352c9bef22d7b21508d47daa77573b446c commands: return last poll timestamp from `getinfo` (Michael Mallan)
c6add0aeb1a0d16301a96745b560b94b31476d13 qa: add method to get lianad poll interval (Michael Mallan)
61e39f7d8623c288639122e295c26a0961687cb9 poller: store last poll timestamp (Michael Mallan)
e9fdcde995a57695769637228e503779c84a1aed database: get and set last poll timestamp (Michael Mallan)
a2b79f1b07bca86e955603ecb2f2489686ae901d sqlite: get and set last poll timestamp (Michael Mallan)
Pull request description:
This is a first step towards #1373.
The timestamp of the last completed poll of the blockchain will be stored in the database, and this value will be made available via the `getinfo` command.
ACKs for top commit:
edouardparis:
ACK dee9554c518793b57b71965d835905300ef86fbc
Tree-SHA512: 32706d516e9915d7320583b37990a5d907bb254905efbb0318c5eae4b27753800933d1b9e68bf43a0190c27d8a5d349f633c0e6e70ba21815ed6eed1648f0625
This allows us to get several values relating to the wallet
in one call.
The field names of the `Wallet` struct have been chosen to
match the corresponding DB interface methods.
Some sqlite methods will call `wallet()` instead of `db_wallet()`
to ensure consistency in output.
If a user broadcasts a spend while the blockchain is syncing
(e.g. via liana-cli), we tell the poller to run now. However, if
the blockchain is still syncing, the blockchain height is likely
to increase before the poll completes and so the poller is likely
to restart multiple times.
Even if the poller doesn't restart multiple times, this change
makes the poller behaviour consistent with regard to a syncing
blockchain.
f9b7a25b40f7599c71e1e5be9bc03d9a25de7647 electrum: use debug log level for sync messages (Michael Mallan)
Pull request description:
These sync messages appear typically every 30 seconds and are only useful for debugging purposes.
The full scan messages can remain at info level for now as they are only expected to occur once for a new wallet and then only in case a rescan is performed.
ACKs for top commit:
edouardparis:
utACK f9b7a25b40f7599c71e1e5be9bc03d9a25de7647
Tree-SHA512: b0414489856b31825be9c3dac9be5422c136aed15540fcd39debeb06dc172a23742420aef2c887f1443e529db600fa453d920bf85c17f8da568ddeca6060911e
These sync messages appear typically every 30 seconds and are
only useful for debugging purposes.
The full scan messages can remain at info level for now as
they are only expected to occur once for a new wallet and then
only in case a rescan is performed.
9208cd11b23a9d234cba008fff3a820bc9d3a702 gui: don't treat wallets using bitcoind as syncing (Michael Mallan)
f34bb1b79a524689400fac07f213857c7a0ebc93 gui: include node type in embedded daemon backend (Michael Mallan)
Pull request description:
This is a follow-up to #1370.
If the user has imported a descriptor and is using bitcoind as a local node, then they will need to perform a rescan in order
to see past transactions. Treating the wallet as syncing in this case could mislead the user that a rescan is being performed. Therefore, it's better to keep the past behaviour here to avoid further confusion.
ACKs for top commit:
edouardparis:
ACK 9208cd11b23a9d234cba008fff3a820bc9d3a702
Tree-SHA512: fabb3289f01c68309cd511854b0ea249e5fa1279c736bfc61c3140ca3352dfc24a1be46c977ed21c528a67c3d1f0e16521d94aaa0ee1c17d8f9ed4f3403547d0
If the user has imported a descriptor and is using bitcoind as
a local node, then they will need to perform a rescan in order
to see past transactions.
Treating the wallet as syncing in this case could mislead the
user that a rescan is being performed. Therefore, it's better
to keep the past behaviour here to avoid further confusion.
This is for convenience in case we need to know the node type
being used.
Although we expect there to always be a node type, it is kept as
`Option` to be consistent with the daemon config.
6f4eb79a5a45751a1c919565ea9c88f59fbda0ab gui: refresh cache more often while height is 0 (Michael Mallan)
a51110269c96e7a9d7c4143e0bd6f8cf27a703a3 gui(home): indicate that wallet is syncing (Michael Mallan)
b452966653da1f2d857dd5901972171aa9d1250c gui(home): track blockheight from cache (Michael Mallan)
1d1e735ae975bb73af5389090e1eee68c727c7ea ui: add loading spinner that types text (Michael Mallan)
3c46a7337c57ef646626d052a0ab23a7fa0ecb17 ui: add carousel loading spinner (Michael Mallan)
e4c1ab106d74ad193aa1ba2f5746ce598c4801e5 ui: render amount with chosen colors (Michael Mallan)
013feb3909ebed0a8850a51a7d61383f327b5d4d ui: refactor amount function (Michael Mallan)
Pull request description:
This is to resolve#1361.
The home page considers the wallet to be syncing if its height is 0. In this case, the balance will slowly blink and a "Syncing..." text will appear just below.
The home page will check the wallet's height upon each cache refresh, and will reload the home page once the syncing has completed so that the updated balance is displayed without the user needing to do anything.
Both the blinking balance and "Syncing..." text use a new `Carousel` widget that cycles through different child widgets at a specified rate.
EDIT: I've added an extra commit to address #1363 as that is also related to the wallet height and cache refresh.
ACKs for top commit:
edouardparis:
ACK 6f4eb79a5a45751a1c919565ea9c88f59fbda0ab
Tree-SHA512: 04214ccb1cf998ae6f7589f2c37335416a6d39b668269c4e07e30c8713e1a0e9e46257c60cea7b19ee6d6e35cbdccaf1122d25a66e6e7e905de51fce185f9180
3e33353745212e6d344c2b172941c8eae1bdcb53 change button kind for transaction save modal (edouardparis)
0c2f0de951c0fb050a9934aabc256343aed83c4c Add light background to active buttons (edouardparis)
5c9171d0903a3f674f8a3e01fc7f878ece432c6a remove unused picklist theme (edouardparis)
8546e55ffaaa1585e1f1c9d724853682087656e7 change button for secondary button for consistency (edouardparis)
08854c4940569697e634e0c7ce53316ee04a049e change secondary button ui (edouardparis)
277945dddf63295d65abb8f3a28cbe3c671f8f47 convert all primary button to secondary button (edouardparis)
Pull request description:
close#1380
We removed all the primary buttons, they will be introduced back in the GUI incrementally to follow a one primary button per page policy
The secondary button is border grey then border and text green on hover, whereas primary button will have its background green to be a call to action to the user.
The background of the secondary button is changed for a light grey in order to be consistent with items list selection.



ACKs for top commit:
edouardparis:
Self-ACK 3e33353745212e6d344c2b172941c8eae1bdcb53
Tree-SHA512: ab4a2f347e4d85edeee5b38bbc5da1ff995ae8a6d62ea819ac6f23ed30881a61391b63d325268e374c9b100238fe5993d31323283abcfeb9f922051965f9ebe1
The secondary button is light grey border and transparent
background that has border and text green on hover.
It brings consistency with item list selection that
has green border on hover.
The wallet's height is taken from the cache and is used to check
if the wallet has been initially synced after creation.
For the remote backend, the cache refresh should be done with the
usual frequency while the wallet's height is 0 so that the sync
completion can be detected sooner.
37cea480b83651171739edc453a41c3dde1c14ba hw: check if app is open before sending old version error message (edouardparis)
Pull request description:
We check if we are able to fetch master fingerprint to see if the bitcoin app is open. The error is then displayed with the generic connection error message.
ACKs for top commit:
edouardparis:
Self-ACK 37cea480b83651171739edc453a41c3dde1c14ba
Tree-SHA512: e477987a57d2e79ed21cd1b1e61bdbd5725d39b88913a19bb6b9fffcbddde7ef95e8065de8695517ab57e8f830d078b76b42c01f7f257ac8f02bf0f03ddfe793
We check if we are able to fetch master fingerprint
to see if the bitcoin app is open. The error is then displayed
with the generic connection error message.
0219752f784db12fa7a92231e596b7f264df8523 Add processing state to next page load (edouardparis)
1a370d380655b0cf852f2a51688cd15a327e1d7e fix history events and txs pagination (edouardparis)
Pull request description:
The problem:
We display the button if the size of the list is a multiple of the page size. Otherwise, we assume that the user has reached a partial page, indicating they've reached the bottom. However, since we chose to include all transactions with the same block time on a single page (because it's not possible to order them by block index in the database, as we don't store the block index), this can cause the page size to exceed the set limit. As a result, the list size may not be a multiple of the page size.
The solution:
keep in the state if the last fetched page has a length inferior of the expected page size and do not display the button 'See more' then as we reached the bottom.
ACKs for top commit:
jp1ac4:
Tested ACK 0219752f78.
Tree-SHA512: acba63aaa269e1c974ca3b6ffc7e5f7545d273b6cea8cea4f380c76a3aa569eaa5ac7b413525e613e1fbb55b7076b0b541bc72f802b5c619eeef3244f3366b52
The problem:
We display the button if the size of the list is a multiple of the page
size. Otherwise, we assume that the user has reached a partial page,
indicating they've reached the bottom. However, since we chose to
include all transactions with the same block time on a single page
(because it's not possible to order them by block index in the database,
as we don't store the block index), this can cause the page size to
exceed the set limit. As a result, the list size may not be a multiple
of the page size.
The solution:
keep in the state if the last fetched page has a length inferior
of the expected page size and do not display the button 'See more'
then as we reached the bottom.
7124e09b7555f46a9c16e265eed4bf247ea8326c Check coldcard version and request user to upgrade (edouardparis)
Pull request description:
Close#1343
ACKs for top commit:
jp1ac4:
utACK 7124e09b75.
edouardparis:
Self-ACK 7124e09b7555f46a9c16e265eed4bf247ea8326c
Tree-SHA512: 105ada9d34b36020b1be369d515486f3e245ce975a253f4b075273037345d2c7e97aa9b0921715d3e9d45c5bd5856c51f2737882188bc8d2f13dc1e8db3e82f9
00841631760241d58f89f433be7529cc705e2b02 gui: add help text for electrum address (Michael Mallan)
Pull request description:
This adds a short text explanation about SSL usage in Electrum addresses to both the installer and settings page.
This is a modified version of #1342.
ACKs for top commit:
edouardparis:
ACK 00841631760241d58f89f433be7529cc705e2b02
Tree-SHA512: 1b25547c07afaebc3ce86bdcb8c9de8d83b9f36b1bbfabbec2303e1c57e8c64c154412081c2bc26500e2c0d1d48f764b47730ebd4fb21d1c554e7da26ce8f0fb