mirror of
https://github.com/BeamMW/beam-ui.git
synced 2026-10-03 23:12:17 +00:00
Beam Desktop Wallet (Win / Mac / Linux)
- QML 52%
- C++ 45.6%
- CMake 1.5%
- Rich Text Format 0.5%
- JavaScript 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
* UI: WalletModel slatepack signals + send-flow manual exchange WalletModel relays the wallet client's onSlatepackReady / onSlatepackImportResult callbacks as Qt signals. SendViewModel gains a manualExchange toggle that sets TxParameterID::ManualTransport on the tx, and re-emits the produced armored string; the send screen shows it in a new SlatepackDialog (copyable). Bumps the beam submodule to the feat/slatepack core work. * UI: Slatepack import flow + global display + i18n WalletViewModel gains importSlatepack() and relays slatepackReady / slatepackImportResult globally, so any produced Slatepack is shown (and import errors surfaced) regardless of the active screen. Adds a Slatepack button on the wallet header opening a paste-import dialog, and consolidates the produced-Slatepack display here (removed from the send screen to avoid double dialogs). Adds the i18n strings (en_US finished; other locales pending). * UI: Slatepack review/confirm import dialog and send-flow polish Import opens a review dialog (amount, fee, sending/receiving address, tx id, explorer link) with Send/Cancel before the transaction proceeds. Register the Slatepack dialogs, fix the manual-exchange send flow, and bump the beam submodule. * UI: Slatepack — file save/load + shorten confirmation label to 'Slatepack' * UI: Slatepack — file save/load via native QFileDialog + drag-drop * UI: re-copy a pending tx's Slatepack from Transaction Details * UI: translate Slatepack strings across locales; remove orphaned rs_RS * UI: remove "WALLET SUITE" subtext from start-page logo * UI: Slatepack review fixes — move off the DApps screen, translated errors Addresses review feedback on the Slatepack UI PR, and bumps the beam submodule to the matching core review-fix commit. Lifecycle moved out of the DApps screen - applications.qml owned the WalletViewModel, both Connections and the Slatepack button. That only worked because applications.qml happens to be contentStack's initialItem and so stays alive at depth 0; anything that changed the initial item would have silently dropped the produced-pack dialog, leaving a completed send with a Slatepack in the DB and no way for the user to reach it. The lifecycle now lives on main, next to the other global dialogs, and the import button sits on the wallet header beside Send/Receive where the PR said it would. - Dropped wallet.qml's WalletViewModel: it was unused, and now that the class subscribes to wallet-model signals in its constructor, a second idle instance is a duplicate-subscription footgun rather than a no-op. - WalletViewModel tolerates being constructed with no wallet open. It is qmlRegisterType'd, so any QML file can instantiate it, and getWalletModel() throws before login. Translated import failures - The failure reason arrived from core as a raw English string and was rendered as-is. It now travels as a slatepack::Error code, and the new SlatepackError singleton maps it to a specific, translatable message (bad checksum reads differently from "not addressed to your wallet"). en_US here; the other locales follow in the next commit. - Fixed the stale comment in wallet_model.cpp claiming the QML dialog resolves the asset ticker and icon. It does not — WalletViewModel does, on the UI thread, where touching AssetsManager is safe. Review dialog can no longer be dismissed without answering - Closing by clicking outside called close() without emitting rejected(), so cancelSlatepack never ran and the core endpoint kept holding the pending import. Set NoAutoClose, and release the import from onClosed if the dialog goes away by any other route. Manual exchange and offline-only tokens - Enabling the toggle unconditionally forced choiceOffline off, which for a public-offline or max-privacy token silently produced a combination the send cannot satisfy. Those tokens have no interactive leg for a Slatepack to carry, so the panel is hidden and the flag refuses to latch (canManualExchange). Smaller - SlatepackImportDialog exposes a signal instead of a property named onImport; the on- prefix is reserved for signal handlers in QML. - Null-check the results of Qt.createComponent().createObject(), and guard the file-load and drag-drop paths against an undefined result. * UI: translate Slatepack import-failure strings across locales Ten new slatepack-error-* messages, translated for every shipped locale. * beam submodule: Slatepack merged to master (daf719156) |
||
| .github | ||
| 3rdparty | ||
| beam@daf7191567 | ||
| ui | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| LICENSE | ||
| macos_cert.tar.enc | ||
| notarize.sh | ||
| README.md | ||
| SECURITY.md | ||
| TERMS.rtf | ||
| TERMS.txt | ||
| version.h.in | ||
Beam Desktop GUI Wallet
Beam is focused on usability as much as confidentiality, which is why all Beam wallets are beautiful and carefully designed to provide the best experience for both new and veteran users.
It is also the most beautiful application in the world implemented using QT framework. If you think you know a more beautiful one please send it to contact@beam.mw
If you would like to help us with translations, please, visit https://crowdin.com/project/beammw