In case the configure step found the QtMultimedia libs, we also
include the camera / QR-scanner functionality in the desktop
app since users may use a laptop which contains a camera.
Make the selector more compact, Instead of showing empty space, make
the size just fit the actual content.
This makes it more usable on mobile layouts.
Also improve the UX of the NewAccount page on mobile, less implicit text
and more explicit intention based titles.
Last, make the title-label's font scale to fit the size it is given.
This completely re-designed the 'import wallet' screens on
mobile.
We use the various new features available now, most importantly the
ability to detect derivation and start-height from an electrum
indexing server.
We now get an actual endpoint from the IndexerServices which is handed
to the ImportHandler for remote services.
This also includes a bunch of bugfixes and basic 'make it work' stuff.
Fix ComboBox general colors to fit in the theme.
This also adds enabled usage, so the enabled comboboxes fall in
line with the textfield color settings, same for disabled ones.
We also added a focus indicator.
This moves the component out to its own file while fixing some UX
issues.
* It is now always visible for (UI) discovery purposes.
* When we paste when there is no matching text we show negative
feedback.
This does not hardcode any indexers, as that would be fragile as
well as painting a bulls-eye on the backs of the server operators
for ddos targets.
Instead this reuses the same concept from Satoshi's Bitcoin. We have
DNS feeds (currently only one) maintained by a crawler.
This finds us a handful of Electrum servers.
We connect to one of those to find more servers, notice that this is
not SSL encrypted because we only have an IP address at that time
while SSL wants a hostname.
This quick connection over plainnet is there just to fetch the
server list known to the server, we can then open an SSL connection
to any of those.
This is purely a future-proofing measure, don't accept transactions that
are likely to be handled differently than todays transactions.
Since the May 2023 upgrade versions other than 1 or two are not allowed
on-chain, but before that some version 4 transactions were mined (and some
negative numbered ones longer ago).
Talks about a version 10 transaction has started, so make sure this software,
if it is still running at someone's machine, will already reject higher
version transactions because we can't know if they are compatible or not.
Last year I increased the bloom filters to make sure that bcom wallets
could be imported with their weird behavior.
The side-effect has been that wallets imported that have 3K addresses
and up start to have massive amounts of false-positives on their bloom
filter during import.
So while the hacks done before were for wallet vendors intentionally
keeping their list of private keys small (100 or so), we know we can
thus turn off said weird workarounds when the wallet is in actual fact
much larger. And thus save bandwidth.
This now uses a shared-pointer and moves the creation to the point where
we know the new data is actually a transaction for us, avoiding work
when the bloom filter caught a transaction not actually for us.
Now we view the creation of more private keys, and how many, as a
separate concept as the bloom-filter 'gap' counts.
This cleans up the concepts of bloom filters, we now use the
design as documented on;
https://codeberg.org/Flowee/pay/wiki/dev/bloom
This removes the 'debug' logging (again) in non-debug builds,
but it also adds a new 'debugFile' argument where the user can
point to the logs.conf (as used by all flowee server components)
which allows setting of log levels per section, and more.
The isSingleAccount property controls if the UI is simple or more
complex.
The single account setup doesn't show you that you have any concept on
differnt accounts at all. No account chooser etc.
On Desktop, however, we choose to always show the archived wallets
anyway. Even though its not in-your-face. Which makes the behavior
between those UIs slightly different.
The addition of the limitedArchiveView property is meant to
facilitate that.
The page-up/page-down now actually scroll a significant chunk of a
page and not an annoyingly small distance.
As we scroll, we make it a point to show the ScrollBar-thumb in order
to give the user feedback on where in the list they are.
We simply use the font size, which is our basic scaling system anyway.
This avoids sizing issues for really large fonts when items start taking
multiple lines.