revault / revault-gui Goto Github PK
View Code? Open in Web Editor NEWRevault terminal
Home Page: https://revault.dev
License: BSD 3-Clause "New" or "Revised" License
Revault terminal
Home Page: https://revault.dev
License: BSD 3-Clause "New" or "Revised" License
When starting revaultd from revault-gui, the UI freezes until the child process has terminated (see https://github.com/revault/revault-gui/blob/master/src/revaultd/mod.rs#L191-L194), but if daemon=false is in the configuration, the child process never terminates.
The current state is a little messy.
Each component is often paired with a <Component>Style
which is often a struct implementing the container::StyleSheet
trait.
Maybe it would be cleaner to implement a new module style
in the component module with a generic struct implementing container::StyleSheet
and with chained methods:
example:
pub struct ContainerStyle(iced::container::Style);
impl ContainerStyle {
pub fn new() -> Self {
ContainerStyle(iced::container::Style::default())
}
pub fn rounded(mut self) -> Self {
self.0.border_radius = 10.0;
self
}
}
impl iced::container::StyleSheet for ContainerStyle {
fn style(&self) -> container::Style {
return self.0;
}
}
usage:
Container::new(content)
.padding(15)
.style(ContainerStyle::new().rounded().backround(color::BACKGROUND))
In order to generate at build time the struct needed.
Currently the settings button on the sidebar (view/sidebar.rs) is sending a message::Install,
It should send message::Menu(Settings)
State
call SettingsState, (find inspiration with HistoryState) with a view SettingsViewThe state should handle the app Config and keep it loaded.
First we will only display the config and will not modify it.
For the view: check the config file and for each section, implement a new card
for each of the following sections:
some state like Home, Network, History should have a simplified reloading mechanism.
State::load
every 15s min if the last_reloading is before now()-15sservers
entry to revaultd
's getinfo
revaultd has new API, we need to fix our side
We've been discussing the UI and UX a lot lately with all the demo tests, and getting valuable feedback for Kevin and Jake from a "blunt" software perspective. By this i mean that since they did not assist to the incremental development, they could raise fundamental questions on the layout and clickpath.
I touched about it during the last meeting but it seems to me that increasing the abstraction of a "vault" at the expense of onchain transactions details would address a lot of these concerns.
For example take the confirmation of the deposit transaction:
revaultd
will tell it's funded
after n
blocks (6
right now but configurable soon ™️)revaultd
will tell it's unconfirmed
otherwiseI think there is a number of other places where removing the Bitcoin language for a simpler one (effectively coining a vault language if i may :p) would help, even though here i just reused the coinbase one.
Opening this issue to gather feedback and point to other places where it would benefit. What do you think @edouardparis @danielabrozzoni @kloaec ?
Stakeholder should have a panel to sign unvault transactions and activate vaults.
Resuse state/signer to have a common interface to sign unvault PSBT
Right now you need to get back to home
This would then open a confusing blank page
Right now they are implicitly deduced from the vault value and/or the detailed transaction screen
Check that vaults list is empty, if it is display a card whith text: "No vaults yet, start using Revault by making a deposit [button deposit]"
Show the revaultd log under "Starting daemon..." like this: iced-rs/iced#355 (comment)
As a manager, after I broadcast a Spend Tx, the Tx shows up under 'pending spend transactions' but there's no info to tell me when it is expected to be confirmed. Perhaps we should put pending unvault: 0/CSV
, pending spend: 0/6 confirmations
or something?
we introduce tokio in one of the PR, should be nice to use https://github.com/tokio-rs/tracing now
User is send to acknowledge vaults not delegate funds
Would be nice to:
After a manager signs and share his/her sig with other, he/she might want to cancel the tx. It is currently not possible before the Unvault is mined.
Should we have a WT tool for this?
To set the path to the revaultd
binary, it's not practical to have to install it globally every time...
unvaulting | unvaulted vaults should have a section in stakeholder home panel and a button "Cancel" to cancel the unvaulting
This would be really helpful for the external reader, or to anyone not particularly familiar with the codebase to have a short top-level description for each module. As for instance what we did for revaultd https://github.com/re-vault/revaultd/blob/3141908c8c1e847b2e76f9240c109734d1324599/src/daemon/control.rs#L1-L7 .
Something like a "tour" of the software.
Related: revault/revaultd#105
There are two ways to approach this:
our_xpub
field in revaultd
's getinfo
so the GUI can keep it in its context (or even poll it on demand)listonchaintransactions <deposit outpoint>
after a listvaults
to check if the PSBT's partial_sigs
contain a signature for derivation_index
at input 0@edouard: I think the first one would be easier for now, since you already call listonchaintransactions
for each vault on the homepage so this would not bloat it either. Wdyt?
Both for manager and stakeholder mode:
getdepositaddress
resultwhen using buttons components, in order to disable the button a Message::None is passed as argument.
Problem is: we want these components to be imported in widget or state returning its own message enum like DepositMessage without adding a new value in enum like DepositMessage::None.
Solution: remove .on_press from Macro and let the caller add it.
Only when they actually are a stk or a man..
thread 'main' panicked at 'called Option::unwrap()
on a None
value', src/ui/view/settings/boxes.rs:216:57
Maybe it can be "No confirmed vaults yet" ?
There will be one for revaultd
. You may either link to it or copy it then augment it here with the GUI features.
https://github.com/apoelstra/rust-jsonrpc/ or async-jsonrpc
wgpu force user to install vulkan driver.
glow may be a solution: iced-rs/iced#613 (comment)
We will lost svg and qr_code features but we may be able to replace them with png and iced Image
tokio is unused now, remove it from iced features
needs to do some best effort fee computation to prevent the user from paying too much and not choosing enough vaults to pay for 1. the feerate they ask
2. the under-the-hood added CPFP output
Not a bug, just that it's confusing
Maybe on the homepage ?
We should add it to getinfo
on revaultd side, see revault/revaultd#101 and then use it here
Struct Pricer or Rater with currency conversion method.
Should be in view::Context and use in views
Like an atomic counter which would trigger the alert when it reaches 100 ?
Users will have different use-cases, and we should need to adapt to their requirements.
Typically:
"Accounting view" with receive/spend
"transaction view" as in Bitcoin transaction
"detailed view" with fees, cancel, change, etc
We also should have a tool to extract a CSV for accounting purpose.
From feedback:
Also, can you check if the number of entries partial_sigs strictly increased and if not tell them that "No new signature was inserted in the PSBT" ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.