summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Blättler <blatc2@bfh.ch>2024-03-11 20:47:09 +0100
committerChristian Blättler <blatc2@bfh.ch>2024-03-11 20:47:09 +0100
commit7af0b3eb8b07027bb8dc079a08abb0bb44662f99 (patch)
tree73f80ce1efb4a6c5727f451615ac2ddd901e9458
parent9b0678d5fb4b7ffafae92539797858a84680c656 (diff)
parentf3cf0a283c328ebc71cfdbcf2894429066014a96 (diff)
downloaddocs-feature/tokens.tar.gz
docs-feature/tokens.tar.bz2
docs-feature/tokens.zip
Merge branch 'master' into feature/tokensfeature/tokens
-rw-r--r--.gitignore3
-rw-r--r--checklists/qa-0.10.rst233
-rw-r--r--checklists/qa-0.9.4.rst25
-rw-r--r--conf.py40
-rw-r--r--core/api-bank-revenue.rst2
-rw-r--r--core/api-corebank.rst8
-rw-r--r--core/api-exchange.rst29
-rw-r--r--core/api-merchant.rst36
-rw-r--r--design-documents/024-age-restriction.rst2
-rw-r--r--design-documents/053-wallet-ui.rst699
-rw-r--r--design-documents/054-dynamic-form.rst14
-rw-r--r--design-documents/055-wallet-problem-report.rst33
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/READE22
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/1-balance.pngbin0 -> 30910 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/10-testkudos-in-the-list.pngbin0 -> 32709 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/11-select-test-kudos.pngbin0 -> 49363 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/2-click-get-cash.pngbin0 -> 36330 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/3-click-add-exchange.pngbin0 -> 42139 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/4-input-URL.pngbin0 -> 56001 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/5-click-next.pngbin0 -> 37919 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/6-review-tos.pngbin0 -> 72501 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/7-accept-tos.pngbin0 -> 37051 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/8-confirm.pngbin0 -> 30910 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/add-exchange/9-click-get-cash.pngbin0 -> 36330 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/1-balance.pngbin0 -> 35087 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/10-balance.pngbin0 -> 47824 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/2-click-send.pngbin0 -> 47464 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/3-click-deposit.pngbin0 -> 35569 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/4-click-add-account.pngbin0 -> 54335 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/5-complete-form.pngbin0 -> 60639 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/6-click-add.pngbin0 -> 59490 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/7-confirm-deposit.pngbin0 -> 60419 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/8-show-transaction.pngbin0 -> 65622 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/deposit/9-after-deposit-confirmed.pngbin0 -> 76645 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/dev-tools.pngbin0 -> 95380 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/1-balance.pngbin0 -> 36026 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/10-confirm-transfer.pngbin0 -> 55732 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/11-show-history.pngbin0 -> 49646 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/2-click-add.pngbin0 -> 48365 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/3-input-six.pngbin0 -> 48827 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/4-click-invoice.pngbin0 -> 62019 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/5-complete-form.pngbin0 -> 64943 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/6-create-invoice.pngbin0 -> 73127 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/7-copy-qr-open-qr-page.pngbin0 -> 48070 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/8-paste-URI.pngbin0 -> 63650 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/invoice/9-click-open.pngbin0 -> 52823 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/1-load-shop.pngbin0 -> 2449960 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/10-click-article-URL.pngbin0 -> 76691 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/2-click-first-article.pngbin0 -> 83759 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/3-confirm-payment.pngbin0 -> 442385 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/4-click-refund.pngbin0 -> 101347 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/5-click-request-refund.pngbin0 -> 41768 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/6-accept-refund.pngbin0 -> 85837 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/7-click-refund-detail.pngbin0 -> 69279 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/8-show-history.pngbin0 -> 81889 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/payment/9-click-receipt.pngbin0 -> 85837 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/scan-qr-code.pngbin0 -> 36358 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/settings-developer-mode.pngbin0 -> 170233 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/settings-normal-mode.pngbin0 -> 47851 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/store-installed.pngbin0 -> 32548 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/store-payment.pngbin0 -> 28060 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/store-withdraw.pngbin0 -> 20772 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/1-initial-balance.pngbin0 -> 36311 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/10-open-URI.pngbin0 -> 51973 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/11-accept-transfer.pngbin0 -> 49787 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/12-show-history.pngbin0 -> 47985 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/2-click-send.pngbin0 -> 47235 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/3-amount-five.pngbin0 -> 47547 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/4-send-wallet.pngbin0 -> 56300 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/5-complete-form.pngbin0 -> 58617 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/6-confirm-transfer.pngbin0 -> 77092 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/7-show-history.pngbin0 -> 55329 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/8-scan-qr.pngbin0 -> 48384 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/transfer/9-paste-URI.pngbin0 -> 64510 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/10-transaction-completed.pngbin0 -> 44344 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/11-history-after-withdraw.pngbin0 -> 35260 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/2-empty-wallet.pngbin0 -> 29113 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/3-get-digital-cash.pngbin0 -> 36120 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/4-select-kudos.pngbin0 -> 47910 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/5-set-amount-five.pngbin0 -> 48389 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/6-withdraw-from-bank.pngbin0 -> 52203 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/7-review-tos.pngbin0 -> 69841 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/8-accept-tos.pngbin0 -> 50475 bytes
-rw-r--r--design-documents/wallet-screenshots/webex-wallet/withdrawal/9-confirm-withdraw.pngbin0 -> 148862 bytes
-rw-r--r--frags/deploying-tos.rst45
-rw-r--r--frags/regional-system-on.rst28
-rw-r--r--images/grafana-postgres-exporter.pngbin0 -> 244971 bytes
-rw-r--r--images/kuma.pngbin0 -> 244687 bytes
-rw-r--r--images/kyc-process.pdf (renamed from kyc-process.pdf)bin24633 -> 24633 bytes
-rw-r--r--images/kyc-process.png (renamed from kyc-process.png)bin44435 -> 44435 bytes
-rw-r--r--images/kyc-process.tex (renamed from kyc-process.tex)0
-rw-r--r--images/regional-arch.pngbin0 -> 126574 bytes
-rw-r--r--images/taler-monitoring-infrastructure.pngbin0 -> 85006 bytes
-rw-r--r--images/uptime-kuma-edit.pngbin0 -> 116550 bytes
-rw-r--r--images/uptime-kuma-from-grafana.pngbin0 -> 345702 bytes
-rw-r--r--libeufin/regional-automated-manual.rst74
-rw-r--r--libeufin/regional-custom-manual.rst109
-rw-r--r--manpages/challenger.conf.5.rst2
-rw-r--r--manpages/taler-exchange-dbinit.1.rst4
-rw-r--r--manpages/taler-exchange-offline.1.rst8
-rw-r--r--manpages/taler.conf.5.rst6
-rw-r--r--screenshots/balance-list-1-ios-0.pngbin0 -> 395744 bytes
l---------screenshots/balance-list-1-ios-latest.png1
-rw-r--r--screenshots/balance-list-2-ios-0.pngbin0 -> 427641 bytes
l---------screenshots/balance-list-2-ios-latest.png1
-rw-r--r--screenshots/balance-list-android-0.pngbin0 -> 47885 bytes
l---------screenshots/balance-list-android-latest.png1
-rw-r--r--screenshots/balance-list-firefox-0.pngbin0 -> 44775 bytes
l---------screenshots/balance-list-firefox-latest.png1
-rw-r--r--screenshots/cta-accept-tos-android-0.pngbin0 -> 118553 bytes
l---------screenshots/cta-accept-tos-android-latest.png1
-rw-r--r--screenshots/cta-accept-tos-ios-0.pngbin0 -> 334259 bytes
l---------screenshots/cta-accept-tos-ios-latest.png1
-rw-r--r--screenshots/cta-deposit-1-ios-0.pngbin0 -> 155427 bytes
l---------screenshots/cta-deposit-1-ios-latest.png1
-rw-r--r--screenshots/cta-deposit-2-ios-0.pngbin0 -> 174391 bytes
l---------screenshots/cta-deposit-2-ios-latest.png1
-rw-r--r--screenshots/cta-deposit-android-0.pngbin0 -> 54746 bytes
l---------screenshots/cta-deposit-android-latest.png1
-rw-r--r--screenshots/cta-deposit-firefox-0.pngbin0 -> 59490 bytes
l---------screenshots/cta-deposit-firefox-latest.png1
-rw-r--r--screenshots/cta-payment-android-0.pngbin0 -> 59747 bytes
l---------screenshots/cta-payment-android-latest.png1
-rw-r--r--screenshots/cta-payment-ios-0.pngbin0 -> 198398 bytes
l---------screenshots/cta-payment-ios-latest.png1
-rw-r--r--screenshots/cta-payment-paid-1-ios-0.pngbin0 -> 197183 bytes
l---------screenshots/cta-payment-paid-1-ios-latest.png1
-rw-r--r--screenshots/cta-payment-paid-2-ios-0.pngbin0 -> 294874 bytes
l---------screenshots/cta-payment-paid-2-ios-latest.png1
-rw-r--r--screenshots/cta-payment-paid-android-0.pngbin0 -> 55338 bytes
l---------screenshots/cta-payment-paid-android-latest.png1
-rw-r--r--screenshots/cta-peer-pull-initiate-android-0.pngbin0 -> 54340 bytes
l---------screenshots/cta-peer-pull-initiate-android-latest.png1
-rw-r--r--screenshots/cta-peer-pull-initiate-firefox-0.pngbin0 -> 62019 bytes
l---------screenshots/cta-peer-pull-initiate-firefox-latest.png1
-rw-r--r--screenshots/cta-peer-pull-initiate-ios-0.pngbin0 -> 186311 bytes
l---------screenshots/cta-peer-pull-initiate-ios-latest.png1
-rw-r--r--screenshots/cta-peer-push-initiate-android-0.pngbin0 -> 50363 bytes
l---------screenshots/cta-peer-push-initiate-android-latest.png1
-rw-r--r--screenshots/cta-peer-push-initiate-firefox-0.pngbin0 -> 56300 bytes
l---------screenshots/cta-peer-push-initiate-firefox-latest.png1
-rw-r--r--screenshots/cta-peer-push-initiate-ios-0.pngbin0 -> 176120 bytes
l---------screenshots/cta-peer-push-initiate-ios-latest.png1
-rw-r--r--screenshots/cta-url-entry-1-android-0.pngbin0 -> 87037 bytes
l---------screenshots/cta-url-entry-1-android-latest.png1
-rw-r--r--screenshots/cta-url-entry-2-android-0.pngbin0 -> 23916 bytes
l---------screenshots/cta-url-entry-2-android-latest.png1
-rw-r--r--screenshots/cta-wire-transfer-1-android-0.pngbin0 -> 68795 bytes
l---------screenshots/cta-wire-transfer-1-android-latest.png1
-rw-r--r--screenshots/cta-wire-transfer-1-ios-0.pngbin0 -> 292949 bytes
l---------screenshots/cta-wire-transfer-1-ios-latest.png1
-rw-r--r--screenshots/cta-wire-transfer-2-android-0.pngbin0 -> 60355 bytes
l---------screenshots/cta-wire-transfer-2-android-latest.png1
-rw-r--r--screenshots/cta-wire-transfer-2-ios-0.pngbin0 -> 407510 bytes
l---------screenshots/cta-wire-transfer-2-ios-latest.png1
-rw-r--r--screenshots/cta-wire-transfer-3-ios-0.pngbin0 -> 331196 bytes
l---------screenshots/cta-wire-transfer-3-ios-latest.png1
-rw-r--r--screenshots/cta-withdraw-1-android-0.pngbin0 -> 42897 bytes
l---------screenshots/cta-withdraw-1-android-latest.png1
-rw-r--r--screenshots/cta-withdraw-2-android-0.pngbin0 -> 43977 bytes
l---------screenshots/cta-withdraw-2-android-latest.png1
-rw-r--r--screenshots/cta-withdraw-done-android-0.pngbin0 -> 44643 bytes
l---------screenshots/cta-withdraw-done-android-latest.png1
-rw-r--r--screenshots/cta-withdraw-done-ios-0.pngbin0 -> 310883 bytes
l---------screenshots/cta-withdraw-done-ios-latest.png1
-rw-r--r--screenshots/cta-withdraw-firefox-1.pngbin0 -> 50475 bytes
l---------screenshots/cta-withdraw-firefox-latest.png2
-rw-r--r--screenshots/cta-withdraw-ios-0.pngbin0 -> 193455 bytes
l---------screenshots/cta-withdraw-ios-latest.png1
-rw-r--r--screenshots/transaction-list-android-0.pngbin0 -> 83906 bytes
l---------screenshots/transaction-list-android-latest.png1
-rw-r--r--screenshots/transaction-list-firefox-0.pngbin0 -> 47985 bytes
l---------screenshots/transaction-list-firefox-latest.png1
-rw-r--r--screenshots/transaction-list-ios-0.pngbin0 -> 474321 bytes
l---------screenshots/transaction-list-ios-latest.png1
-rw-r--r--taler-challenger-manual.rst3
-rw-r--r--taler-developer-manual.rst114
-rw-r--r--taler-exchange-manual.rst2
-rw-r--r--taler-user-guide.rst2
-rw-r--r--taler-wallet.rst47
180 files changed, 1230 insertions, 398 deletions
diff --git a/.gitignore b/.gitignore
index 7dab94e6..03767229 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,6 @@ images/deposit.png
images/reserve.png
*.png
texinfo/
+
+!/design-documents/wallet-screenshots/**/*.png
+!/screenshots/*.png
diff --git a/checklists/qa-0.10.rst b/checklists/qa-0.10.rst
new file mode 100644
index 00000000..262f44f5
--- /dev/null
+++ b/checklists/qa-0.10.rst
@@ -0,0 +1,233 @@
+Taler 0.9.4 QA Plan
+-------------------
+
+Wallet Platforms
+^^^^^^^^^^^^^^^^
+
+Platforms listed here are the officially supported platforms for this release.
+
+* Overview / Installation Page
+
+ * https://taler.net/en/wallet.html
+
+* Android
+
+ * Google Play: https://play.google.com/store/apps/details?id=net.taler.wallet
+ * F-Droid: https://f-droid.org/en/packages/net.taler.wallet.fdroid/
+ * APK Download: TBD
+
+* Browser
+
+ * Chrome: https://chromewebstore.google.com/detail/gnu-taler-wallet/millncjiddlpgdmkklmhfadpacifaonc
+ * Firefox: https://addons.mozilla.org/en-US/firefox/addon/taler-wallet/
+
+* iOS
+
+
+Running Deployments
+^^^^^^^^^^^^^^^^^^^
+
+These deployments are maintained by us and should work for the release:
+
+* Sandcastle-based:
+
+ * demo.taler.net
+
+ * test.taler.net
+
+* Regio-based:
+
+ * regio-taler.fdold.eu
+
+
+Wallet Flows
+^^^^^^^^^^^^
+
+* Bank-integrated withdrawal
+
+ * webext: "Continue with Mobile Wallet" flow
+
+* Manual withdrawal
+
+ * ``taler://withdraw-exchange`` flow
+
+ * Currency conversion withdrawal
+
+* Peer push payments ("Send Money")
+
+* Peer pull payments ("Receive Money")
+
+* Deposit into bank account
+
+ * Check that deposit arrived
+
+* Payment at merchant
+
+ * on blog merchant
+ * on survey
+ * directly initiated via merchant SPA
+ * webext: "Pay with Mobile Wallet" flow
+
+* Pay templates
+
+ * Payment TOTP codes
+
+* Exchange management
+
+ * Reloading exchange keys
+ * Deleting an exchange
+
+* Offline handling
+
+ * Check error messages for other flows when internet connectivity
+ is bad or device is completely offline.
+
+
+libeufin-bank Flows
+^^^^^^^^^^^^^^^^^^^
+
+* Admin functionality
+
+ * Login
+
+ * Credential change
+
+ * Conversion settings
+
+ * Bank account creation
+
+ * Test transfers
+
+* Normal account functionality
+
+ * Transfers
+
+ * Transfer to the exchange should bounce
+
+ * Withdrawals
+
+ * (conversion-only): Test cash-in
+
+ * (conversion-only): Test cash-out
+
+ * Lower cash-out limit enforced
+
+ * 2FA for withdrawals, cash-out
+
+
+Merchant Backend SPA Flows
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+* Instance creation
+
+* Simple bank account setup
+
+* Order creation
+
+ * Pay order (with short wire transfer deadline)
+
+ * Check that money from order arrive at the bank with the right subject
+
+* Extended bank account setup
+
+ * Add Taler Bank Revenue API
+
+ * Check bank transfer list (for wire transfer of previously paid+wired order)
+
+ * Check order payment status goes to "final" automatically
+
+* TOTP Device Management
+
+ * Add device
+
+ * Edit device (set new secret, export new secret as QR code)
+
+ * Delete device
+
+* Templates
+
+ * Add template
+
+ * Edit template
+
+ * Add TOTP device to template
+
+ * Edit TOTP device associated with template
+
+ * Pay template
+
+ * Check TOTP code matches
+
+ * Remove TOTP device from template
+
+ * Delete template
+
+
+
+Regio Deployment
+^^^^^^^^^^^^^^^^
+
+* Deployment Automation (deployment.git/regional-currency)
+
+ * Test with Debian bookworm
+
+ * Test with Ubuntu mantic
+
+ * Check logs for errors
+
+ * Test with telesign (SMS)
+
+ * Set up EBICS integration
+
+ * Check that ToS is configured
+
+* Deployment Functionality
+
+ * All flows of the wallet should work (see ``Wallet Flows`` above)
+
+ * All flows of libeufin-bank should work (see ``libeufin-bank Flows`` above)
+
+ * Merchant backend should work (see ``Merchant Backend SPA Flows`` above)
+
+ * Check logs
+
+
+Android Merchant PoS
+^^^^^^^^^^^^^^^^^^^^
+
+* Test against demo.taler.net
+
+
+Android Cashier App
+^^^^^^^^^^^^^^^^^^^
+
+* Test against demo.taler.net
+
+
+CI
+^^
+
+* https://buildbot.taler.net/#/waterfall
+* CI should pass
+
+
+Debian Repository
+^^^^^^^^^^^^^^^^^
+
+* Debian
+
+ * repo at https://deb.taler.net/apt/debian/
+ * supported codename(s): bookworm
+
+
+* Ubuntu:
+
+ * repo at https://deb.taler.net/apt/ubuntu/
+ * supported codename(s): mantic
+
+
+GNU Release
+^^^^^^^^^^^
+
+* Release announcement
+* FTP upload
diff --git a/checklists/qa-0.9.4.rst b/checklists/qa-0.9.4.rst
index 98680c8d..77e51081 100644
--- a/checklists/qa-0.9.4.rst
+++ b/checklists/qa-0.9.4.rst
@@ -1,9 +1,8 @@
-===================
Taler 0.9.4 QA Plan
-===================
+-------------------
Wallet Platforms
-================
+^^^^^^^^^^^^^^^^
Platforms listed here are the officially supported platforms for this release.
@@ -26,7 +25,7 @@ Platforms listed here are the officially supported platforms for this release.
Running Deployments
-===================
+^^^^^^^^^^^^^^^^^^^
These deployments are maintained by us and should work for the release:
@@ -42,7 +41,7 @@ These deployments are maintained by us and should work for the release:
Wallet Flows
-============
+^^^^^^^^^^^^
* Bank-integrated withdrawal
@@ -80,7 +79,7 @@ Wallet Flows
libeufin-bank Flows
-===================
+^^^^^^^^^^^^^^^^^^^
* Admin functionality
@@ -112,7 +111,7 @@ libeufin-bank Flows
Merchant Backend SPA Flows
-==========================
+^^^^^^^^^^^^^^^^^^^^^^^^^^
* Instance creation
@@ -161,7 +160,7 @@ Merchant Backend SPA Flows
Regio Deployment
-================
+^^^^^^^^^^^^^^^^
* Deployment Automation (deployment.git/regional-currency)
@@ -189,26 +188,26 @@ Regio Deployment
Android Merchant PoS
-====================
+^^^^^^^^^^^^^^^^^^^^
* Test against demo.taler.net
Android Cashier App
-===================
+^^^^^^^^^^^^^^^^^^^
* Test against demo.taler.net
CI
-==
+^^
* https://buildbot.taler.net/#/waterfall
* CI should pass
Debian Repository
-=================
+^^^^^^^^^^^^^^^^^
* Debian
@@ -223,7 +222,7 @@ Debian Repository
GNU Release
-===========
+^^^^^^^^^^^
* Release announcement
* FTP upload
diff --git a/conf.py b/conf.py
index 9e16a795..db8a4069 100644
--- a/conf.py
+++ b/conf.py
@@ -78,7 +78,7 @@ master_doc = "index"
# General information about the project.
project = "GNU Taler"
-copyright = "2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)"
+copyright = "2014-2024 Taler Systems SA (GPLv3+ or GFDL 1.3+)"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -87,7 +87,7 @@ copyright = "2014-2022 Taler Systems SA (GPLv3+ or GFDL 1.3+)"
# The short X.Y version.
version = "0.9"
# The full version, including alpha/beta/rc tags.
-release = "0.9.0"
+release = "0.9.4"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -765,54 +765,54 @@ texinfo_documents = [
"taler-auditor",
"Taler Auditor Manual",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Auditor",
+ "External audit for Taler Exchange operation",
+ "Network applications",
),
(
"taler-exchange-manual",
"taler-exchange",
"Taler Exchange Manual",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Exchange",
+ "Taler payment service provider",
+ "Network applications",
),
(
"taler-challenger-manual",
"challenger",
"Taler Challenger Manual",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Challenger",
+ "Customer address validation service",
+ "Network applications",
),
(
"taler-merchant-manual",
"taler-merchant",
"Taler Merchant Manual",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Merchant",
+ "Backend for merchants accepting Taler payments",
+ "Network applications",
),
(
"taler-merchant-api-tutorial",
"taler-merchant-api-tutorial",
"Taler Merchant API Tutorial",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Merchant API",
+ "Tutorial for using the merchant backend API",
+ "Network applications",
),
(
"taler-developer-manual",
"taler-developer-manual",
"Taler Developer Manual",
"GNU Taler team",
- "MENU ENTRY",
- "DESCRIPTION",
- "CATEGORY",
+ "GNU Taler Development",
+ "Manual for GNU Taler contributors",
+ "Network applications",
),
]
diff --git a/core/api-bank-revenue.rst b/core/api-bank-revenue.rst
index a647fb35..98b38113 100644
--- a/core/api-bank-revenue.rst
+++ b/core/api-bank-revenue.rst
@@ -110,7 +110,7 @@ Querying the transaction history
**Response:**
:http:statuscode:`200 OK`:
- JSON object of type `MerchantIncomingHistory`.
+ JSON object of type `RevenueIncomingHistory`.
:http:statuscode:`400 Bad request`:
Request malformed. The bank replies with an `ErrorDetail` object.
:http:statuscode:`401 Unauthorized`:
diff --git a/core/api-corebank.rst b/core/api-corebank.rst
index e1cb4fb6..851fc3ba 100644
--- a/core/api-corebank.rst
+++ b/core/api-corebank.rst
@@ -83,7 +83,7 @@ Config
// The format is "current:revision:age".
version: string;
- // Bank display name to be used in user interfaces.
+ // Bank display name to be used in user interfaces.
// For consistency use "Taler Bank" if missing.
// @since v4, will become mandatory in the next version.
bank_name?: string;
@@ -175,7 +175,7 @@ Account Management
cashout_payto_uri?: string;
// Internal payto URI of this bank account.
- // Used mostly for testing, this field is ignored if the bank payment
+ // Used mostly for testing, this field is ignored if the bank payment
// method is not IBAN.
payto_uri?: string;
@@ -507,7 +507,7 @@ Account Management
// as well.
contact_data?: ChallengeContactData;
- // IBAN 'payto' URI with a 'receiver-name' parameter of a fiat bank
+ // IBAN 'payto' URI with a 'receiver-name' parameter of a fiat bank
// account where to send cashouts. This field is optional
// because not all the accounts are required to participate
// in the merchants' circuit. One example is the exchange:
@@ -831,7 +831,7 @@ Cashouts
:http:statuscode:`200 OK`:
The cashout request was correctly created.
- This returns the `CashoutPending` response.
+ This returns the `CashoutResponse` response.
:http:statuscode:`202 Accepted`:
2FA is required for this operation. This returns the `Challenge` response.
:http:statuscode:`404 Not found`:
diff --git a/core/api-exchange.rst b/core/api-exchange.rst
index 429170ce..b8979520 100644
--- a/core/api-exchange.rst
+++ b/core/api-exchange.rst
@@ -62,7 +62,7 @@ possibly by using HTTPS.
as well as the list of possible KYC requirements. This endpoint is largely
for the SPA for AML officers. Merchants should use ``/keys`` which also
contains the protocol version and currency.
- This specification corresponds to ``current`` protocol being version **18**.
+ This specification corresponds to ``current`` protocol being **v19**.
**Response:**
@@ -81,7 +81,7 @@ possibly by using HTTPS.
name: "taler-exchange";
// URN of the implementation (needed to interpret 'revision' in version).
- // @since v18, may become mandatory in the future.
+ // @since **v18**, may become mandatory in the future.
implementation?: string;
// Currency supported by this exchange, given
@@ -103,7 +103,7 @@ possibly by using HTTPS.
name: string;
// Code of the currency.
- // Deprecated in protocol v18 for the exchange
+ // Deprecated in protocol **v18** for the exchange
// and in protocol v6 for the merchant.
currency: string;
@@ -197,7 +197,7 @@ possibly by using HTTPS.
// Set to true if this exchange allows the use
// of reserves for rewards.
- // @deprecated in protocol v18.
+ // @deprecated in protocol **v18**.
rewards_allowed: false;
// EdDSA master public key of the exchange, used to sign entries
@@ -282,6 +282,17 @@ possibly by using HTTPS.
// a `TALER_MasterWireDetailsPS`
// with purpose ``TALER_SIGNATURE_MASTER_WIRE_DETAILS``.
master_sig: EddsaSignature;
+
+ // Display label wallets should use to show this
+ // bank account.
+ // Since protocol **v19**.
+ bank_label?: string;
+
+ // *Signed* integer with the display priority for
+ // this bank account. Optional, 0 if missing.
+ // Since protocol **v19**.
+ priority?: Integer;
+
}
.. ts:def:: AccountRestriction
@@ -1102,6 +1113,16 @@ Management operations authorized by master key
// become active immediately! Used ONLY to detect replay attacks.
validity_start: Timestamp;
+ // Display label wallets should use to show this
+ // bank account.
+ // Since protocol **v19**.
+ bank_label?: string;
+
+ // *Signed* integer with the display priority for
+ // this bank account.
+ // Since protocol **v19**.
+ priority?: Integer;
+
}
.. http:post:: /management/wire/disable
diff --git a/core/api-merchant.rst b/core/api-merchant.rst
index 7ae29d68..c1bbf058 100644
--- a/core/api-merchant.rst
+++ b/core/api-merchant.rst
@@ -123,7 +123,7 @@ such as the implemented version of the protocol and the currency used.
.. http:get:: /config
Return the protocol version and currency supported by this merchant backend.
- This specification corresponds to ``current`` protocol being version **10**.
+ This specification corresponds to ``current`` protocol being version **11**.
**Response:**
@@ -288,17 +288,17 @@ Making the payment
Either the client request is malformed or some specific processing error
happened that may be the fault of the client as detailed in the JSON body
of the response.
+ This includes the case where the payment is insufficient (sum is below
+ the required total amount, for example because the wallet calculated the
+ fees wrong).
:http:statuscode:`402 Payment required`:
There used to be a sufficient payment, but due to refunds the amount effectively
paid is no longer sufficient. (If the amount is generally insufficient, we
- return "406 Not Acceptable", only if this is because of refunds we return 402.)
+ return "400 Bad Request", only if this is because of refunds we return 402.)
:http:statuscode:`403 Forbidden`:
One of the coin signatures was not valid.
:http:statuscode:`404 Not found`:
The merchant backend could not find the order or the instance and thus cannot process the payment.
- :http:statuscode:`406 Not acceptable`:
- The payment is insufficient (sum is below the required total amount).
- TODO: Should probably change to a different status code in the future as 406 is technically wrong.
:http:statuscode:`408 Request timeout`:
The backend took too long to process the request. Likely the merchant's connection
to the exchange timed out. Try again.
@@ -2789,7 +2789,7 @@ to validate that a customer made a payment.
// ``otp_algorithm`` and matching client query arguments.
//
// Available since protocol **v10**.
- otp_code?: String;
+ otp_code?: string;
}
@@ -3048,6 +3048,30 @@ Removing template
Using template
----------------
+.. http:get:: [/instances/$INSTANCE]/templates/$TEMPLATE_ID
+
+ This is used to obtain information about a specific template by wallets
+ before they ask the user to fill in details.
+ This endpoint is available since protocol **v11**.
+
+ **Response:**
+
+ :http:statuscode:`200 OK`:
+ The backend has successfully returned the detailed information about a specific template.
+ Returns a `WalletTemplateDetails`.
+ :http:statuscode:`404 Not found`:
+ The instance or template(ID) is unknown to the backend.
+
+ .. ts:def:: WalletTemplateDetails
+
+ interface WalletTemplateDetails {
+
+ // Hard-coded information about the contrac terms
+ // for this template.
+ template_contract: TemplateContractDetails;
+ }
+
+
.. http:post:: [/instances/$INSTANCES]/templates/$TEMPLATE_ID
This using template can be modified by everyone and will be used to create order.
diff --git a/design-documents/024-age-restriction.rst b/design-documents/024-age-restriction.rst
index ee478ee1..0445aa6d 100644
--- a/design-documents/024-age-restriction.rst
+++ b/design-documents/024-age-restriction.rst
@@ -247,7 +247,7 @@ changed since the given timestamp.
// Similar as for ``.denoms``, if the query parameter ``last_issue_date``
// was provided by the client, the exchange will only return the keys that
// have changed since the given timestamp.
- age_restricted_denoms: Denom[];
+ age_restricted_denoms: DenomCommon[];
//...
}
diff --git a/design-documents/053-wallet-ui.rst b/design-documents/053-wallet-ui.rst
index c36d4759..99640ceb 100644
--- a/design-documents/053-wallet-ui.rst
+++ b/design-documents/053-wallet-ui.rst
@@ -40,20 +40,24 @@ Additionaly the document COULD defined the components of the UI. If one of this
properties is defined in the spec the implementation must implement it. The specification
should be minimal to achieve the objective in the description.
-* **Info**: Spec of information that the user should have access. The type of info
+* **Info**. Spec of information that the user should have access. The type of info
could be a field (id and value) or a banner (information and instructions).
The spec will help to reuse the text for i18n across apps and defined
-* **Inputs**: Spec of information need to provide in current screen. The type of input,
+* **Inputs**. Spec of information need to provide in current screen. The type of input,
range of values and validation should be defined if necessary.
-* **Actions**: Spec of buttons and interactable elements that will have a significant
+* **Actions**. Spec of buttons and interactable elements that will have a significant
change in the current state. It should also mention navigation when applicable.
-* **Layout**: Spec position of elements when needed. The spec should be "soft" in a sense
+* **Layout**. Spec position of elements when needed. The spec should be "soft" in a sense
that elements should be easy to find following directions like "close to X" or
"at the start/end of the screen".
+* **Screenshots**. Should be provided for all wallet implementations and kept
+ up to date, to ensure that they can be used to aid in UI/UX and QA
+ discussions.
+
Screen should be defined using the most relaxed definition that are good enough to
be clear for the user. Platform will use this definition and adapt to the differences
on the platform taking advantange of platform API and screen sizes.
@@ -72,252 +76,583 @@ Proposed Solutions
List of all screens with the defined properties.
+.. _balance-list-ref:
+
+balance-list
+------------
+
+This screen shows a currency-scoped list of the balances stored in the wallet,
+and includes information about the total, incoming, and outgoing amounts, as
+well as the currency scope information for each item.
+
+Info
+^^^^
+
+* List of balances in the wallet, where each item contains:
+
+ * Total amount with currency (see :doc:`051-fractional-digits`).
+ * Incoming amount (money pending to arrive).
+ * Outgoing amount (money pending to leave).
+ * Currency scope information (see :doc:`035-regional-currencies`).
+
+Actions
+^^^^^^^
+
+* **View transactions**. Clicking on a balance item should take you to the
+ transaction list (:ref:`transaction-list-ref`) associated with that balance.
+
+Screenshots
+^^^^^^^^^^^
+
++-----------+----------------------------------------------------------------+
+| Platform | Screenshot |
++===========+================================================================+
+| WebEx | .. image:: ../screenshots/balance-list-firefox-latest.png |
++-----------+----------------------------------------------------------------+
+| Android | .. image:: ../screenshots/balance-list-android-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/balance-list-1-ios-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/balance-list-2-ios-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+
+
+.. _transaction-list-ref:
+
+transaction-list
+----------------
+
+This screen shows a list of all the transactions associated with a given
+currency scope.
+
+Info
+^^^^
+
+* Total amount and currency (see :doc:`051-fractional-digits`).
+* List of transactions associated with the currency scope, with pending
+ transactions on top, and where each item contains the following:
+
+ * **Title**. It depends on the transaction type. It can be the exchange URL
+ (e.g. exchange.demo.taler.net), a description of the type of transaction
+ (e.g. Deposit, Invoice, Payment, etc.), the name of the merchant paid
+ (e.g. Essay Shop), etc.
+ * **Summary**. It provides complementary information about the transaction
+ for the user, such as the status of the transaction (e.g. “Waiting for
+ confirmation,” “KYC required,” an error message, etc.). (The summary is
+ provided by wallet-core, along with internationalized versions.)
+ * **Timestamp**. The moment when the transaction was created. Ideally, it
+ should be shown with minimal precision, only showing the minutes, hours or
+ days that have elapsed.
+ * **Amount**. The positive or negative impact that the transaction has in
+ the total balance of the currency scope. It should be made clear whether
+ the amount of the transaction is positive or negative, ideally with a sign
+ (+/-) and a color (green/red).
+ * **Pending**. It should be indicated whether the transaction is pending or
+ finished. This can be done with a small badge and with different colors,
+ however, it should be always clear and communicate the message
+ effectively.
+
+Actions
+^^^^^^^
+
+* **Send**. The transaction list should include a button that allows the user
+ to initiate transactions that result in money being sent, such as deposits
+ and peer push payments.
+* **Receive**. The transaction list should also include a button that allows
+ the user to initiate transactions that result in money being received, such
+ as withdrawals and peer pull payments.
+* **View transaction details**. When clicking on a transaction, the user
+ should be taken to its corresponding transaction details depending on the
+ type of the transaction clicked.
+* **Select transaction(s)**. The user should be able to select one or more
+ transactions to perform specific bulk actions, such as deleting. The
+ interaction that triggers this action might differ across platforms. For
+ example, in Android this would be achieved by double pressing a transaction
+ (to activate selection mode) and then clicking other transactions to be
+ selected. On iOS, this could be achieved using an “Edit” button in the
+ toolbar that reveals checkboxes that allow the user to select the desired
+ transactions.
+* **Delete transaction(s)**. This could be achieved in bulk via selection
+ mode, or individually for each transaction via a menu or a button. Either
+ way, performing a deletion should always show a confirmation menu before
+ doing the actual deletion.
+
+Screenshots
+^^^^^^^^^^^
+
++-----------+----------------------------------------------------------------+
+| Platform | Screenshot |
++===========+================================================================+
+| WebEx | .. image:: ../screenshots/transaction-list-firefox-latest.png |
++-----------+----------------------------------------------------------------+
+| Android | .. image:: ../screenshots/transaction-list-android-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/transaction-list-ios-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+
+
+.. _cta-withdraw-ref:
+
cta-withdraw
------------
-``Description``: this screen is used for the confirmation of a manual withdrawal,
-bank-integrated witdrawals and exchange withdrawals.
-the success of this operation will be an increase of the balance in the wallet.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of a manual withdrawal,
+bank-integrated witdrawals and exchange withdrawals. the success of this
+operation will be an increase of the balance in the wallet. fee, restrictions
+and ETA should be clear for the user.
+
+Info
+^^^^
+
+* exchange to be used showing the URL
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
+* starting currency: if the exchange has the currency conversion service enabled user should be able to the details based on the wire transfer currency
+* taler URI: show copy button or QR to complete the operation with another device
-``Info``:
- * exchange to be used showing the URL
- * table of details of the operation: use the ``operation-table-details`` screen
- * starting currency: if the exchange has the currency conversion service enabled user should be able to the details based on the wire transfer currency
- * taler URI: show copy button or QR to complete the operation with another device
+Inputs
+^^^^^^
-``Inputs``:
- * age restriction: allow the selection of the restriction in the age group possible by the exchange
- * service provider: allow the selection of different exchange
+* age restriction: allow the selection of the restriction in the age group possible by the exchange
+* service provider: allow the selection of different exchange
-``Actions``:
- * confirm operation: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * review and confirm ToS: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the ``accept-tos`` screen
- * cancel: user will be redirected to ``balance``
+Actions
+^^^^^^^
+
+* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **review and confirm ToS**: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
+* **cancel**: user will be redirected to ``balance``
.. attention::
User should be able to play with the amount, not possible in the current design
+Screenshots
+^^^^^^^^^^^
+
++-----------+----------------------------------------------------------------+
+| Platform | Screenshot |
++===========+================================================================+
+| WebEx | .. image:: ../screenshots/cta-withdraw-firefox-latest.png |
++-----------+----------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-withdraw-2-android-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-withdraw-ios-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------+
+
+
+.. _cta-wire-transfer-ref:
+
cta-wire-transfer
-----------------
-``Description``: this screen is used to show the user the information for
-the wire transfer to complete a manual withdrawal operation.
+This screen is used to show the user the information for the wire transfer to
+complete a manual withdrawal operation.
+
+Info
+^^^^
+
+* wire transfer subject to be used (first, most important)
+* target bank account to transfer funds to (e.g. IBAN)
+* total amount to transfer in the wire transfer currency
+* button to copy ``payto://`` URI with the information to clipboard
+
+Actions
+^^^^^^^
+
+* **abort**: aborts the withdrawal operation
+* **menu**: go back to the main balances list (operation continues in background)
+* **automatic**: screen changes to "cta-withdraw-done" upon completion
-``Info``:
- * wire transfer subject to be used (first, most important)
- * target bank account to transfer funds to (e.g. IBAN)
- * total amount to transfer in the wire transfer currency
- * button to copy ``payto://`` URI with the information to clipboard
+Screenshots
+^^^^^^^^^^^
-``Actions``:
- * abort: aborts the withdrawal operation
- * menu: go back to the main balances list (operation continues in background)
- * automatic: screen changes to "cta-withdraw-done" upon completion
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-wire-transfer-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-wire-transfer-1-android-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-wire-transfer-2-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-wire-transfer-1-ios-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-wire-transfer-2-ios-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-wire-transfer-3-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
-.. image:: ../screenshots/cta-wire-transfer-firefox-latest.png
+
+.. _cta-withdraw-done-ref:
cta-withdraw-done
-----------------
-``Description``: this screen is used to show the user the information for
-a completed withdraw operation (bank-integrated or manual)
+This screen is used to show the user the information for a completed withdraw
+operation (bank-integrated or manual)
+
+Info
+^^^^
+
+* amount wired (hidden if no fees)
+* fees paid (hidden if no fees)
+* total amount withdrawn into wallet (effective balance change)
+* exchange base URL
+* date
+
+Actions
+^^^^^^^
+
+* **delete**: deletes information about the withdrawal operation
-``Info``:
- * amount wired (hidden if no fees)
- * fees paid (hidden if no fees)
- * total amount withdrawn into wallet (effective balance change)
- * exchange base URL
- * date
+Screenshots
+^^^^^^^^^^^
-``Actions``:
- * delete: deletes information about the withdrawal operation
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-withdraw-done-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-withdraw-done-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-withdraw-done-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
-.. image:: ../screenshots/cta-withdraw-done-firefox-latest.png
+.. _cta-url-entry-ref:
cta-url-entry
-------------
-``Description``: this screen allows the user to scan a QR code, scan an NFC
-tag, or enter a taler://-URL. Its implementation may differ significantly
-between platforms. For example, scanning NFC tags may be fully automated,
-scanning QR codes may involve some system applications, and maybe the dialog
-only allows the URL entry *or* the camera but not both at the same time,
-depending on implementation specifics.
+This screen allows the user to scan a QR code, scan an NFC tag, or enter a
+taler://-URL. Its implementation may differ significantly between
+platforms. For example, scanning NFC tags may be fully automated, scanning QR
+codes may involve some system applications, and maybe the dialog only allows
+the URL entry *or* the camera but not both at the same time, depending on
+implementation specifics.
+
+Info
+^^^^
+
+* camera with current image to enable user to focus on QR code
+* current URL, with information if it is not well-formed for GNU Taler
+* possibly status information on NFC reader (if available)
+
+Actions
+^^^^^^^
+
+* **open**: if entered manually, open URL as-entered (otherwise open is automatic)
+* **back**: return to previous view
-``Info``:
- * camera with current image to enable user to focus on QR code
- * current URL, with information if it is not well-formed for GNU Taler
- * possibly status information on NFC reader (if available)
+Screenshots
+^^^^^^^^^^^
-``Actions``:
- * open: if entered manually, open URL as-entered (otherwise open is automatic)
- * back: return to previous view
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-url-entry-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-url-entry-1-android-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-url-entry-2-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
-.. image:: ../screenshots/cta-url-entry-firefox-latest.png
+.. _cta-payment-ref:
cta-payment
-----------
-``Description``: this screen is used for the confirmation of a payment to a merchant.
-the success of this operation will be an decrease of the balance in the wallet
-and save a ticket/invoice of the purchase.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of a payment to a merchant. the
+success of this operation will be an decrease of the balance in the wallet and
+save a ticket/invoice of the purchase. fee, restrictions and ETA should be
+clear for the user.
-``Info``:
- * merchant offering the order showing the URL
- * order summary
- * table of details of the operation: use the ``operation-table-details`` screen
- * receipt: order id
- * payment deadline: absolute time before the claimed order expires
- * taler URI: show copy button or QR to complete the operation with another device
- * cant pay desc: if the user has enough balance but unable to use it
- * payment status: if the
+Info
+^^^^
-``Actions``:
- * confirm operation: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * get more cash: if there is not enough balance, it will be redirected to ``cta-witddraw``
- * cancel: user will be redirected to ``balance``
+* merchant offering the order showing the URL
+* order summary
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
+* receipt: order id
+* payment deadline: absolute time before the claimed order expires
+* taler URI: show copy button or QR to complete the operation with another device
+* cant pay desc: if the user has enough balance but unable to use it
+* payment status: if the
-.. image:: ../screenshots/cta-payment-firefox-latest.png
+Actions
+^^^^^^^
+
+* **confirm operation**: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **get more cash**: if there is not enough balance, it will be redirected to :ref:`cta-withdraw-ref`
+* **cancel**: user will be redirected to ``balance``
+
+Screenshots
+^^^^^^^^^^^
+
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-payment-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-payment-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-payment-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+
+
+.. _cta-payment-paid-ref:
cta-payment-paid
----------------
-``Description``: this screen is used to show information with details
-about a historic payment.
+This screen is used to show information with details about a historic payment.
+
+Info
+^^^^
+
+* merchant offering the order showing the URL
+* order summary
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
+* receipt: order id
+* payment status: if the order was refunded
+
+Actions
+^^^^^^^
+
+* **delete**: delete information about the transaction
+* **back**: user will be redirected to ``balance``
+
+Screenshots
+^^^^^^^^^^^
-``Info``:
- * merchant offering the order showing the URL
- * order summary
- * table of details of the operation: use the ``operation-table-details`` screen
- * receipt: order id
- * payment status: if the order was refunded
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-payment-paid-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-payment-paid-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-payment-paid-1-ios-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-payment-paid-2-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
-``Actions``:
- * delete: delete information about the transaction
- * back: user will be redirected to ``balance``
-.. image:: ../screenshots/cta-payment-paid-firefox-latest.png
+.. _cta-deposit-ref:
cta-deposit
------------
-``Description``: this screen is used for the confirmation of a deposit.
-the success of this operation will be an decrease of the balance in the wallet
-and save a deposit ticket for reference.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of a deposit. the success of this
+operation will be an decrease of the balance in the wallet and save a deposit
+ticket for reference. fee, restrictions and ETA should be clear for the user.
-``Info``:
- * bank account where the money is going to
- * table of details of the operation: use the ``operation-table-details`` screen
+Info
+^^^^
-``Actions``:
- * confirm operation: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * cancel: user will be redirected to ``balance``
+* bank account where the money is going to
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
+
+Actions
+^^^^^^^
+
+* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **cancel**: user will be redirected to ``balance``
.. attention::
User should be able to play with the amount, not possible in the current design
+Screenshots
+^^^^^^^^^^^
+
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-deposit-firefox-latest.png |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-deposit-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-deposit-1-ios-latest.png |
+| | :width: 30% |
+| | .. image:: ../screenshots/cta-deposit-2-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+
+
+.. _cta-peer-pull-initiate-ref:
cta-peer-pull-initiate
----------------------
-``Description``: this screen is used for the confirmation of the creation of
-a peer pull transaction or invoice to request money from another wallet.
-the success of this operation will not change the balance immediately in the wallet
-and allow the user to share a taler URI to the payer.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of the creation of a peer pull
+transaction or invoice to request money from another wallet. the success of
+this operation will not change the balance immediately in the wallet and allow
+the user to share a taler URI to the payer. fee, restrictions and ETA should
+be clear for the user.
-``Info``:
- * exchange to be used showing the URL
- * table of details of the operation: use the ``operation-table-details`` screen
+Info
+^^^^
-``Inputs``:
- * subject: short description of the transaction
- * expiration: absolute time/date after which the invoice is not valid anymore
- * service provider: allow the selection of different exchange
+* exchange to be used showing the URL
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
-``Actions``:
- * confirm operation: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * review and confirm ToS: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the ``accept-tos`` screen
- * cancel: user will be redirected to ``balance``
+Inputs
+^^^^^^
+
+* **subject**: short description of the transaction
+* **expiration**: absolute time/date after which the invoice is not valid anymore
+* **service provider**: allow the selection of different exchange
+
+Actions
+^^^^^^^
+
+* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **review and confirm ToS**: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
+* *cancel*: user will be redirected to ``balance``
.. attention::
Is the invoice creation always free of charge or does the exchange have a mechanism
to impose a fee to pay on creation?
+Screenshots
+^^^^^^^^^^^
+
++-----------+----------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+======================================================================+
+| WebEx | .. image:: ../screenshots/cta-peer-pull-initiate-firefox-latest.png |
++-----------+----------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-peer-pull-initiate-android-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-peer-pull-initiate-ios-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------------+
+
+
+.. _cta-peer-pull-confirm-ref:
cta-peer-pull-confirm
---------------------
-``Description``: this screen is used for the confirmation of the payment of
-a peer pull transaction or invoice to send money from another wallet.
-the success of this operation will be an will decrease the balance in the wallet.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of the payment of a peer pull
+transaction or invoice to send money from another wallet. the success of this
+operation will be an will decrease the balance in the wallet. fee,
+restrictions and ETA should be clear for the user.
+
+Info
+^^^^
-``Info``:
- * exchange to be used showing the URL
- * subject: short description of the transaction
- * table of details of the operation: use the ``operation-table-details`` screen
- * expiration: absolute time/date after which the invoice is not valid anymore
+* exchange to be used showing the URL
+* subject: short description of the transaction
+* table of details of the operation: use the :ref:`operation-table-details-ref` screen
+* expiration: absolute time/date after which the invoice is not valid anymore
-``Actions``:
- * confirm operation: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * get more cash: if there is not enough balance, it will be redirected to ``cta-witddraw``
- * cancel: user will be redirected to ``balance``
+Actions
+^^^^^^^
+
+* **confirm operation**: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **get more cash**: if there is not enough balance, it will be redirected to :ref:`cta-withdraw-ref`
+* **cancel**: user will be redirected to ``balance``
cta-peer-push-initiate
----------------------
-``Description``: this screen is used for the confirmation of the creation of
-a peer push transaction or transfer money to another wallet.
-the success of this operation will reduce the balance immediately in the wallet
-and allow the user to share a taler URI to the receiver.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of the creation of a peer push
+transaction or transfer money to another wallet. the success of this
+operation will reduce the balance immediately in the wallet and allow the user
+to share a taler URI to the receiver. fee, restrictions and ETA should be
+clear for the user.
+
+Info
+^^^^
+
+* table of details of the operation: use the ``operation-table-details`` screen
+
+Inputs
+^^^^^^
+
+* **subject**: short description of the transaction
+* **expiration**: absolute time/date after which the transfer is not valid anymore
+
+Actions
+^^^^^^^
-``Info``:
- * table of details of the operation: use the ``operation-table-details`` screen
+* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **cancel**: user will be redirected to ``balance``
-``Inputs``:
- * subject: short description of the transaction
- * expiration: absolute time/date after which the transfer is not valid anymore
+Screenshots
+^^^^^^^^^^^
-``Actions``:
- * confirm operation: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * cancel: user will be redirected to ``balance``
++-----------+----------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+======================================================================+
+| WebEx | .. image:: ../screenshots/cta-peer-push-initiate-firefox-latest.png |
++-----------+----------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-peer-push-initiate-android-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-peer-push-initiate-ios-latest.png |
+| | :width: 30% |
++-----------+----------------------------------------------------------------------+
+
+
+.. _cta-peer-push-confirm-ref:
cta-peer-push-confirm
---------------------
-``Description``: this screen is used for the confirmation of the acceptance of
-a peer push transaction or transfer money to this wallet.
-the success of this operation will be an will decrease the balance in the wallet.
-fee, restrictions and ETA should be clear for the user.
+This screen is used for the confirmation of the acceptance of a peer push
+transaction or transfer money to this wallet. the success of this operation
+will be an will decrease the balance in the wallet. fee, restrictions and ETA
+should be clear for the user.
+
+Info
+^^^^
-``Info``:
- * subject: short description of the payment
- * expiration: absolute time/date after which the invoice is not valid anymore
- * table of details of the operation: use the ``operation-table-details`` screen
+* subject: short description of the payment
+* expiration: absolute time/date after which the invoice is not valid anymore
+* table of details of the operation: use the ``operation-table-details`` screen
-``Actions``:
- * confirm operation: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
- * review and confirm ToS: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the ``accept-tos`` screen
- * cancel: user will be redirected to ``balance``
+Actions
+^^^^^^^
+* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
+* **review and confirm ToS**: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
+* **cancel**: user will be redirected to ``balance``
+
+.. _operation-table-details-ref:
operation-table-details
-----------------------
-``Description``: with the table it should be clear how much the operation will cost,
-the initial amount and the final amount with all the items related to the operations (like fee)
+With the table it should be clear how much the operation will cost, the
+initial amount and the final amount with all the items related to the
+operations (like fee)
+
+Labels
+^^^^^^
-``labels``: initial amount of the operation, and final amount are always shown.
-Fee should be shown as an extra row in the table if it is non-zero.
-Converted amount should be shown as an extra row if initial amount currency is not the same
-as the final amount currency.
+Initial amount of the operation, and final amount are always shown. Fee should
+be shown as an extra row in the table if it is non-zero. Converted amount
+should be shown as an extra row if initial amount currency is not the same as
+the final amount currency.
Initial amount label by operation:
@@ -331,24 +666,44 @@ Initial amount label by operation:
* refund -> Refund
+.. _accept-tos-ref:
+
accept-tos
----------
-``Description``: this screen can be use everytime that the user is going to interact
-with an exchange. since at any moment wallet may find that ToS changed the user needs
-to be prevented from continue before reading/accepting new rules. If possible, this
-screen should be used inplace of other actions and hidden if not required (for example,
-user already accepted ToS)
-
-``Inputs``:
- * format: allow the selection of a ToS format
- * languange: allow the selection of a languange different from system lang
-
-``Actions``:
- * accept tos: will mark this version as accepted in wallet core and redirect the user to the screen from where it was invoked
- * save/print tos: will save the ToS outside of the wallet
-
-.. image:: ../screenshots/cta-accept-tos-firefox-latest.png
+This screen can be use everytime that the user is going to interact with an
+exchange. since at any moment wallet may find that ToS changed the user needs
+to be prevented from continue before reading/accepting new rules. If possible,
+this screen should be used inplace of other actions and hidden if not required
+(for example, user already accepted ToS)
+
+Inputs
+^^^^^^
+
+* **format**: allow the selection of a ToS format
+* **languange**: allow the selection of a languange different from system lang
+
+Actions
+^^^^^^^
+
+* **accept tos**: will mark this version as accepted in wallet core and redirect the user to the screen from where it was invoked
+* **save/print tos**: will save the ToS outside of the wallet
+
+Screenshots
+^^^^^^^^^^^
+
++-----------+------------------------------------------------------------------+
+| Platform | Screenshot |
++===========+==================================================================+
+| WebEx | .. image:: ../screenshots/cta-accept-tos-firefox-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| Android | .. image:: ../screenshots/cta-accept-tos-android-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
+| iOS | .. image:: ../screenshots/cta-accept-tos-ios-latest.png |
+| | :width: 30% |
++-----------+------------------------------------------------------------------+
Q / A
diff --git a/design-documents/054-dynamic-form.rst b/design-documents/054-dynamic-form.rst
index 6ff84d41..d93b3684 100644
--- a/design-documents/054-dynamic-form.rst
+++ b/design-documents/054-dynamic-form.rst
@@ -51,7 +51,7 @@ readOnly (flag to disable input), onUpdate (callback on form data update),
and computeFormState (function to derive the form state based on current data).
-.. code-block:: javascript
+.. code-block:: typescript
interface FormType<T extends object> {
value: Partial<T>;
@@ -82,7 +82,7 @@ The field type ``AmountJson`` and ``AbsoluteTime`` are opaque since field is use
The form can be instanciated using
-.. code-block:: javascript
+.. code-block:: typescript
import { FormProvider } from "@gnu-taler/web-util/browser";
@@ -90,7 +90,7 @@ The form can be instanciated using
Then the field component can access all the properties by the ``useField(name)`` hook,
which will return
-.. code-block:: javascript
+.. code-block:: typescript
interface InputFieldHandler<Type> {
value: Type;
@@ -116,10 +116,10 @@ A set of common form field exist in ``@gnu-taler/web-util``:
and should be used inside a ``Form`` context.
-.. code-block:: javascript
+.. code-block:: none
function MyFormComponent():VNode {
- return <FormProvider >
+ return <FormProvider>
<InputAmount name="amount" />
<InputText name="subject" />
<button type="submit"> Confirm </button>
@@ -132,7 +132,7 @@ Example
Consider a form shape represented by the TypeScript type:
-.. code-block:: javascript
+.. code-block:: typescript
type TheFormType = {
name: string,
@@ -148,7 +148,7 @@ Consider a form shape represented by the TypeScript type:
An example instance of this form could be:
-.. code-block:: javascript
+.. code-block:: typescript
const theFormValue: TheFormType = {
name: "Sebastian",
diff --git a/design-documents/055-wallet-problem-report.rst b/design-documents/055-wallet-problem-report.rst
index 84c6159a..2fd7a221 100644
--- a/design-documents/055-wallet-problem-report.rst
+++ b/design-documents/055-wallet-problem-report.rst
@@ -5,6 +5,11 @@ DD 55: Wallet Problem Reports
**Status**: Early work in progress / DD number reservation.
+.. warning::
+
+ We concluded that we don't need the problem reports feature right now,
+ as all cases we care about are already covered by something else.
+
Summary
=======
@@ -52,13 +57,35 @@ New wallet-core notification type
Types of reports
----------------
+(Currently we don't have any good examples where this is actually needed.)
+
+Examples of what should NOT be a report
+---------------------------------------
+
* money lost due to the exchange stopping to offer a denomination
+
+ * => Should be a transactions item
+
* money locked behind a (long) pending refresh
+
+ * => Should be a pending transaction
+
* money lost due to a permanently failing refresh
+
+ * => pending or final transaction item
+
* money lost due to expired denominations (auto-refresh wasn't done fast enough)
-* exchange changed its master public key
+
+ * => transaction item
+
* a denomination changed its info (expiration, fees)
+ * => exchange entry state
+
+* Important information about the exchange changed (master pub, accounts, keys)
+
+ => exchange entry state
+
Definition of Done
==================
@@ -68,7 +95,9 @@ TBD.
Alternatives
============
-TBD.
+* Report problems with an API specific to each resource (exchange entry, transaction, ...)
+* Have an *alerts* API that returns alerts to the client that the client can show to to the user,
+ but that a user can't interact with.
Drawbacks
=========
diff --git a/design-documents/wallet-screenshots/webex-wallet/READE b/design-documents/wallet-screenshots/webex-wallet/READE
new file mode 100644
index 00000000..597fa22e
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/READE
@@ -0,0 +1,22 @@
+Wallet Web Extension screenshots
+--------------------------------
+
+Screenshoots are organized by common use case using
+the happy path to ilustrate the user flow:
+
+ * withdrawal: starts from an empty wallet and performs
+ a manual withdrawal with demo exchange.
+ * payment: starts from demo shop and pay for an article.
+ also showing how a refund looks.
+ * transfer: performs a p2p push debit and credit.
+ * invoice: performs a p2p pull credit and debit.
+ * deposit: starts from a wallet with some balance
+ and deposit into a bank account new yet
+ known by the wallet.
+ * add-exchange: add the test exchange into the wallet.
+
+In this root folder there are some additionals screen for
+settings, dev tools and others.
+
+Screenshot starting with "store-*" are used in chrome webstore
+and firefox addon store.
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/1-balance.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/1-balance.png
new file mode 100644
index 00000000..1041e2ee
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/1-balance.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/10-testkudos-in-the-list.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/10-testkudos-in-the-list.png
new file mode 100644
index 00000000..12a53026
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/10-testkudos-in-the-list.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/11-select-test-kudos.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/11-select-test-kudos.png
new file mode 100644
index 00000000..43e18c89
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/11-select-test-kudos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/2-click-get-cash.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/2-click-get-cash.png
new file mode 100644
index 00000000..d7d247f0
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/2-click-get-cash.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/3-click-add-exchange.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/3-click-add-exchange.png
new file mode 100644
index 00000000..7a1a48e9
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/3-click-add-exchange.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/4-input-URL.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/4-input-URL.png
new file mode 100644
index 00000000..efdf852a
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/4-input-URL.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/5-click-next.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/5-click-next.png
new file mode 100644
index 00000000..9a2782f2
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/5-click-next.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/6-review-tos.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/6-review-tos.png
new file mode 100644
index 00000000..44a85d6f
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/6-review-tos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/7-accept-tos.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/7-accept-tos.png
new file mode 100644
index 00000000..c73c5256
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/7-accept-tos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/8-confirm.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/8-confirm.png
new file mode 100644
index 00000000..1041e2ee
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/8-confirm.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/add-exchange/9-click-get-cash.png b/design-documents/wallet-screenshots/webex-wallet/add-exchange/9-click-get-cash.png
new file mode 100644
index 00000000..d7d247f0
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/add-exchange/9-click-get-cash.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/1-balance.png b/design-documents/wallet-screenshots/webex-wallet/deposit/1-balance.png
new file mode 100644
index 00000000..7c571c48
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/1-balance.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/10-balance.png b/design-documents/wallet-screenshots/webex-wallet/deposit/10-balance.png
new file mode 100644
index 00000000..4e3a787b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/10-balance.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/2-click-send.png b/design-documents/wallet-screenshots/webex-wallet/deposit/2-click-send.png
new file mode 100644
index 00000000..2cdb5fe0
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/2-click-send.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/3-click-deposit.png b/design-documents/wallet-screenshots/webex-wallet/deposit/3-click-deposit.png
new file mode 100644
index 00000000..afc4a431
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/3-click-deposit.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/4-click-add-account.png b/design-documents/wallet-screenshots/webex-wallet/deposit/4-click-add-account.png
new file mode 100644
index 00000000..c91bc8d9
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/4-click-add-account.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/5-complete-form.png b/design-documents/wallet-screenshots/webex-wallet/deposit/5-complete-form.png
new file mode 100644
index 00000000..77514161
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/5-complete-form.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/6-click-add.png b/design-documents/wallet-screenshots/webex-wallet/deposit/6-click-add.png
new file mode 100644
index 00000000..e78538c7
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/6-click-add.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/7-confirm-deposit.png b/design-documents/wallet-screenshots/webex-wallet/deposit/7-confirm-deposit.png
new file mode 100644
index 00000000..bf2c61bc
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/7-confirm-deposit.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/8-show-transaction.png b/design-documents/wallet-screenshots/webex-wallet/deposit/8-show-transaction.png
new file mode 100644
index 00000000..381ae09e
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/8-show-transaction.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/deposit/9-after-deposit-confirmed.png b/design-documents/wallet-screenshots/webex-wallet/deposit/9-after-deposit-confirmed.png
new file mode 100644
index 00000000..74c2026d
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/deposit/9-after-deposit-confirmed.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/dev-tools.png b/design-documents/wallet-screenshots/webex-wallet/dev-tools.png
new file mode 100644
index 00000000..a817d055
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/dev-tools.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/1-balance.png b/design-documents/wallet-screenshots/webex-wallet/invoice/1-balance.png
new file mode 100644
index 00000000..a6692c4f
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/1-balance.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/10-confirm-transfer.png b/design-documents/wallet-screenshots/webex-wallet/invoice/10-confirm-transfer.png
new file mode 100644
index 00000000..2611c9f3
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/10-confirm-transfer.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/11-show-history.png b/design-documents/wallet-screenshots/webex-wallet/invoice/11-show-history.png
new file mode 100644
index 00000000..52907939
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/11-show-history.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/2-click-add.png b/design-documents/wallet-screenshots/webex-wallet/invoice/2-click-add.png
new file mode 100644
index 00000000..7834436d
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/2-click-add.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/3-input-six.png b/design-documents/wallet-screenshots/webex-wallet/invoice/3-input-six.png
new file mode 100644
index 00000000..0f910210
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/3-input-six.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/4-click-invoice.png b/design-documents/wallet-screenshots/webex-wallet/invoice/4-click-invoice.png
new file mode 100644
index 00000000..0d7c1b31
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/4-click-invoice.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/5-complete-form.png b/design-documents/wallet-screenshots/webex-wallet/invoice/5-complete-form.png
new file mode 100644
index 00000000..625afb3c
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/5-complete-form.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/6-create-invoice.png b/design-documents/wallet-screenshots/webex-wallet/invoice/6-create-invoice.png
new file mode 100644
index 00000000..def698a8
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/6-create-invoice.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/7-copy-qr-open-qr-page.png b/design-documents/wallet-screenshots/webex-wallet/invoice/7-copy-qr-open-qr-page.png
new file mode 100644
index 00000000..fe221eac
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/7-copy-qr-open-qr-page.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/8-paste-URI.png b/design-documents/wallet-screenshots/webex-wallet/invoice/8-paste-URI.png
new file mode 100644
index 00000000..26351cb9
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/8-paste-URI.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/invoice/9-click-open.png b/design-documents/wallet-screenshots/webex-wallet/invoice/9-click-open.png
new file mode 100644
index 00000000..90393d3b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/invoice/9-click-open.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/1-load-shop.png b/design-documents/wallet-screenshots/webex-wallet/payment/1-load-shop.png
new file mode 100644
index 00000000..4aacc47b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/1-load-shop.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/10-click-article-URL.png b/design-documents/wallet-screenshots/webex-wallet/payment/10-click-article-URL.png
new file mode 100644
index 00000000..74488cb6
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/10-click-article-URL.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/2-click-first-article.png b/design-documents/wallet-screenshots/webex-wallet/payment/2-click-first-article.png
new file mode 100644
index 00000000..31635b8a
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/2-click-first-article.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/3-confirm-payment.png b/design-documents/wallet-screenshots/webex-wallet/payment/3-confirm-payment.png
new file mode 100644
index 00000000..016f5514
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/3-confirm-payment.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/4-click-refund.png b/design-documents/wallet-screenshots/webex-wallet/payment/4-click-refund.png
new file mode 100644
index 00000000..4a3ddd39
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/4-click-refund.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/5-click-request-refund.png b/design-documents/wallet-screenshots/webex-wallet/payment/5-click-request-refund.png
new file mode 100644
index 00000000..9b27cd5b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/5-click-request-refund.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/6-accept-refund.png b/design-documents/wallet-screenshots/webex-wallet/payment/6-accept-refund.png
new file mode 100644
index 00000000..a4b1c137
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/6-accept-refund.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/7-click-refund-detail.png b/design-documents/wallet-screenshots/webex-wallet/payment/7-click-refund-detail.png
new file mode 100644
index 00000000..14291836
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/7-click-refund-detail.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/8-show-history.png b/design-documents/wallet-screenshots/webex-wallet/payment/8-show-history.png
new file mode 100644
index 00000000..2758f7f3
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/8-show-history.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/payment/9-click-receipt.png b/design-documents/wallet-screenshots/webex-wallet/payment/9-click-receipt.png
new file mode 100644
index 00000000..a4b1c137
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/payment/9-click-receipt.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/scan-qr-code.png b/design-documents/wallet-screenshots/webex-wallet/scan-qr-code.png
new file mode 100644
index 00000000..ae28e3db
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/scan-qr-code.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/settings-developer-mode.png b/design-documents/wallet-screenshots/webex-wallet/settings-developer-mode.png
new file mode 100644
index 00000000..c93883dc
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/settings-developer-mode.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/settings-normal-mode.png b/design-documents/wallet-screenshots/webex-wallet/settings-normal-mode.png
new file mode 100644
index 00000000..50f70cab
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/settings-normal-mode.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/store-installed.png b/design-documents/wallet-screenshots/webex-wallet/store-installed.png
new file mode 100644
index 00000000..67c481fc
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/store-installed.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/store-payment.png b/design-documents/wallet-screenshots/webex-wallet/store-payment.png
new file mode 100644
index 00000000..3f776696
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/store-payment.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/store-withdraw.png b/design-documents/wallet-screenshots/webex-wallet/store-withdraw.png
new file mode 100644
index 00000000..8409a0b9
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/store-withdraw.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/1-initial-balance.png b/design-documents/wallet-screenshots/webex-wallet/transfer/1-initial-balance.png
new file mode 100644
index 00000000..20e74cf3
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/1-initial-balance.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/10-open-URI.png b/design-documents/wallet-screenshots/webex-wallet/transfer/10-open-URI.png
new file mode 100644
index 00000000..22f21f89
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/10-open-URI.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/11-accept-transfer.png b/design-documents/wallet-screenshots/webex-wallet/transfer/11-accept-transfer.png
new file mode 100644
index 00000000..9ee2083a
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/11-accept-transfer.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/12-show-history.png b/design-documents/wallet-screenshots/webex-wallet/transfer/12-show-history.png
new file mode 100644
index 00000000..d2d12ca8
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/12-show-history.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/2-click-send.png b/design-documents/wallet-screenshots/webex-wallet/transfer/2-click-send.png
new file mode 100644
index 00000000..0e705860
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/2-click-send.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/3-amount-five.png b/design-documents/wallet-screenshots/webex-wallet/transfer/3-amount-five.png
new file mode 100644
index 00000000..ffe4bee7
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/3-amount-five.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/4-send-wallet.png b/design-documents/wallet-screenshots/webex-wallet/transfer/4-send-wallet.png
new file mode 100644
index 00000000..f566b0cb
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/4-send-wallet.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/5-complete-form.png b/design-documents/wallet-screenshots/webex-wallet/transfer/5-complete-form.png
new file mode 100644
index 00000000..836755ca
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/5-complete-form.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/6-confirm-transfer.png b/design-documents/wallet-screenshots/webex-wallet/transfer/6-confirm-transfer.png
new file mode 100644
index 00000000..55de4bb0
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/6-confirm-transfer.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/7-show-history.png b/design-documents/wallet-screenshots/webex-wallet/transfer/7-show-history.png
new file mode 100644
index 00000000..39de7b66
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/7-show-history.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/8-scan-qr.png b/design-documents/wallet-screenshots/webex-wallet/transfer/8-scan-qr.png
new file mode 100644
index 00000000..cacdce06
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/8-scan-qr.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/transfer/9-paste-URI.png b/design-documents/wallet-screenshots/webex-wallet/transfer/9-paste-URI.png
new file mode 100644
index 00000000..32ac0ff4
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/transfer/9-paste-URI.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/10-transaction-completed.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/10-transaction-completed.png
new file mode 100644
index 00000000..2a774334
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/10-transaction-completed.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/11-history-after-withdraw.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/11-history-after-withdraw.png
new file mode 100644
index 00000000..54b05212
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/11-history-after-withdraw.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/2-empty-wallet.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/2-empty-wallet.png
new file mode 100644
index 00000000..79fc787b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/2-empty-wallet.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/3-get-digital-cash.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/3-get-digital-cash.png
new file mode 100644
index 00000000..273d5f5f
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/3-get-digital-cash.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/4-select-kudos.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/4-select-kudos.png
new file mode 100644
index 00000000..741ac32a
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/4-select-kudos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/5-set-amount-five.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/5-set-amount-five.png
new file mode 100644
index 00000000..8454928b
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/5-set-amount-five.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/6-withdraw-from-bank.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/6-withdraw-from-bank.png
new file mode 100644
index 00000000..e0942a0c
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/6-withdraw-from-bank.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/7-review-tos.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/7-review-tos.png
new file mode 100644
index 00000000..505e06d3
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/7-review-tos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/8-accept-tos.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/8-accept-tos.png
new file mode 100644
index 00000000..61d3c0a4
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/8-accept-tos.png
Binary files differ
diff --git a/design-documents/wallet-screenshots/webex-wallet/withdrawal/9-confirm-withdraw.png b/design-documents/wallet-screenshots/webex-wallet/withdrawal/9-confirm-withdraw.png
new file mode 100644
index 00000000..579803cc
--- /dev/null
+++ b/design-documents/wallet-screenshots/webex-wallet/withdrawal/9-confirm-withdraw.png
Binary files differ
diff --git a/frags/deploying-tos.rst b/frags/deploying-tos.rst
new file mode 100644
index 00000000..5b389f44
--- /dev/null
+++ b/frags/deploying-tos.rst
@@ -0,0 +1,45 @@
+..
+ This file is part of GNU TALER.
+ Copyright (C) 2014-2024 Taler Systems SA
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 2.1, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+
+
+Configuring exchange terms
+==========================
+
+You can use your own terms of service and privacy policy. You can use the default templates in ``/usr/share/taler/terms`` as a guide.
+Assuming you have custom terms of service and privacy policy ``rst`` teamplte files at ``TOS_PATH`` and ``PRIVACY_PATH``, the following commands generate the terms files:
+
+.. code-block:: console
+
+ # taler-terms-generator -i "$TOS_PATH"
+ # taler-terms-generator -i "$PRIVACY_PATH"
+
+You now have to specify the terms file names in the exchange config:
+
+.. code-block:: console
+
+ # TERMS_ETAG="$(basename "$TOS_PATH" .rst)"
+ # PRIVACY_ETAG="$(basename "$PRIVACY_PATH" .rst)"
+
+.. code-block:: ini
+
+ [exchange]
+ TERMS_ETAG=${TERMS_ETAG}
+ PRIVACY_ETAG=${PRIVACY_ETAG}
+
+Make sure to restart taler-exchange after changing these configuration options:
+
+.. code-block:: console
+
+ # systemctl restart taler-exchange.target
diff --git a/frags/regional-system-on.rst b/frags/regional-system-on.rst
new file mode 100644
index 00000000..7a150cbf
--- /dev/null
+++ b/frags/regional-system-on.rst
@@ -0,0 +1,28 @@
+..
+ This file is part of GNU TALER.
+ Copyright (C) 2014-2024 Taler Systems SA
+
+ TALER is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 2.1, or (at your option) any later version.
+
+ TALER is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+ A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+
+
+System ON!
+==========
+
+The last step is to enable libeufin-nexus to :ref:`import incoming bank
+transactions <receive-transaction-data>` (cash in) and to :ref:`trigger
+outgoing bank transactions <sending-payments>` (cash out).
+
+.. code-block:: console
+
+ # systemctl enable --now libeufin-nexus.target
+
+.. FIXME: explain how to test if libeufin is working!
diff --git a/images/grafana-postgres-exporter.png b/images/grafana-postgres-exporter.png
new file mode 100644
index 00000000..a51c28f0
--- /dev/null
+++ b/images/grafana-postgres-exporter.png
Binary files differ
diff --git a/images/kuma.png b/images/kuma.png
new file mode 100644
index 00000000..d98772a1
--- /dev/null
+++ b/images/kuma.png
Binary files differ
diff --git a/kyc-process.pdf b/images/kyc-process.pdf
index 8b178c02..8b178c02 100644
--- a/kyc-process.pdf
+++ b/images/kyc-process.pdf
Binary files differ
diff --git a/kyc-process.png b/images/kyc-process.png
index 563418b1..563418b1 100644
--- a/kyc-process.png
+++ b/images/kyc-process.png
Binary files differ
diff --git a/kyc-process.tex b/images/kyc-process.tex
index c10dd8d9..c10dd8d9 100644
--- a/kyc-process.tex
+++ b/images/kyc-process.tex
diff --git a/images/regional-arch.png b/images/regional-arch.png
new file mode 100644
index 00000000..952b7e60
--- /dev/null
+++ b/images/regional-arch.png
Binary files differ
diff --git a/images/taler-monitoring-infrastructure.png b/images/taler-monitoring-infrastructure.png
new file mode 100644
index 00000000..05f29704
--- /dev/null
+++ b/images/taler-monitoring-infrastructure.png
Binary files differ
diff --git a/images/uptime-kuma-edit.png b/images/uptime-kuma-edit.png
new file mode 100644
index 00000000..23b85dad
--- /dev/null
+++ b/images/uptime-kuma-edit.png
Binary files differ
diff --git a/images/uptime-kuma-from-grafana.png b/images/uptime-kuma-from-grafana.png
new file mode 100644
index 00000000..c42b8660
--- /dev/null
+++ b/images/uptime-kuma-from-grafana.png
Binary files differ
diff --git a/libeufin/regional-automated-manual.rst b/libeufin/regional-automated-manual.rst
index 4fe492ab..645e000f 100644
--- a/libeufin/regional-automated-manual.rst
+++ b/libeufin/regional-automated-manual.rst
@@ -105,8 +105,8 @@ The script will start by installing the required packages and then asking you fu
#. Whether to use TLS or not. You should answer ``y`` in most cases.
#. Whether to setup SMS two-factor authentication using `Telesign <https://www.telesign.com>`_, multi-factor authentication is strongly recommended, especially when regional currency can be converted to fiat currency. This requires `a Customer ID and an API Key <https://developer.telesign.com/enterprise/docs/authentication#basic-authentication>`_. You should answer ``y`` in most cases.
#. The admin password for the bank. Be absolutely sure to enter a very, very long and high-entropy password, preferably using the autogenerated one.
-#. Whether to generate terms of service (ToS) for the exchange from default templates.
-#. Whether to generate a privacy policy for the exchange from default templates.
+#. Whether to generate terms of service (ToS) for the exchange from default templates.
+#. Whether to generate a privacy policy for the exchange from default templates.
The information you entered as well as the generated bank admin password will
be stored in a file called ``config/user.conf``. If you run the script in
@@ -230,60 +230,30 @@ The EBICS setup is finished once the bank keys have been accepted.
Configuring the Exchange for Conversion
+++++++++++++++++++++++++++++++++++++++
-By default, the exchange is setup to perform conversion without any restrictions. You may configure restrictions on the bank accounts that may originate the funds, for example, to prevent international wire transfers that may expose you to additional compliance risks:
+In our automated setup the second account is automatically set up correctly
+without fees or special restrictions. However, various additional
+*restrictions* and *options* could be configured. Details are explained in
+the :ref:`regional conversion setup <regional-conversion-setup>` section for the
+manual setup and in the the manpage of ``taler-exchange-offline``.
-.. code-block:: console
-
- $ . config/user.conf
- $ sudo -u taler-exchange-offline taler-exchange-offline \
- enable-account \
- "${CONVERSION_PAYTO}" \
- conversion-url "${PROTO}://bank.$DOMAIN_NAME/conversion-info/" \
- # restrictions ...
- upload
-
-.. note::
- Refer to the manpage ``taler-exchange-offline`` for a full array of possible restrictions.
-
-System ON!
-++++++++++
-
-The last step is to enable libeufin-nexus to :ref:`import incoming bank
-transactions <receive-transaction-data>` (cash in) and to :ref:`trigger
-outgoing bank transactions <sending-payments>` (cash out).
-
-.. code-block:: console
-
- # systemctl enable --now libeufin-nexus.target
-
-Configuring exchange terms
-++++++++++++++++++++++++++
-
-You can use your own terms of service and privacy policy. You can use the default templates in ``/usr/share/taler/terms`` as a guide.
-Assuming you have custom terms of service and privacy policy ``rst`` teamplte files at ``TOS_PATH`` and ``PRIVACY_PATH``, the following commands generate the terms files:
-.. code-block:: console
-
- # taler-terms-generator -i "$TOS_PATH"
- # taler-terms-generator -i "$PRIVACY_PATH"
-
-You now have to specify the terms file names in the exchange config:
-
-.. code-block:: console
-
- # TERMS_ETAG="$(basename "$TOS_PATH" .rst)"
- # PRIVACY_ETAG="$(basename "$PRIVACY_PATH" .rst)"
+.. include:: ../frags/regional-system-on.rst
+.. include:: ../frags/deploying-tos.rst
+.. include:: ../frags/regional-manual-use.rst
-.. code-block:: ini
- [exchange]
- TERMS_ETAG=${TERMS_ETAG}
- PRIVACY_ETAG=${PRIVACY_ETAG}
+Installing Updates
+++++++++++++++++++
-Make sure to restart taler-exchange after changing these configuration options:
+The standard procedure for installing updates is to:
-.. code-block:: console
+ * First, make a backup (!)
+ * Stop Taler services
+ * Install new version
+ * Upgrade databases
+ * Start Taler services
- # systemctl restart taler-exchange.target
-
-.. include:: ../frags/regional-manual-use.rst
+The "upgrade.sh" script in the "regional-currency/" folder of "deployment.git"
+shows how to do the above steps *except* for the backup. For the backup, all
+critical bits of data will be in the Postgresql databases. Thus, we recommend
+following the database manual on making backups.
diff --git a/libeufin/regional-custom-manual.rst b/libeufin/regional-custom-manual.rst
index 8477c18d..580168f3 100644
--- a/libeufin/regional-custom-manual.rst
+++ b/libeufin/regional-custom-manual.rst
@@ -72,6 +72,11 @@ Now you have to set the conversion rates and the ``admin`` debt limit via the ba
Configuring the Exchange for Conversion
+++++++++++++++++++++++++++++++++++++++
+An exchange that supports currency conversion needs to advertise two bank
+accounts, one in the regional currency and a second in the fiat currency. The
+conversion logic ensures that wire transfers in either account are
+immediately reflected in the other account.
+
This section explains how to enable currency conversion at the exchange,
which is critical for wallets to know how to wire fiat currency to an
exchange to obtain regional currency.
@@ -90,75 +95,87 @@ the possibility of currency conversion (cash in):
.. code-block:: console
- # taler-exchange-offline \
+ # source config/user.conf
+ # sudo -u taler-exchange-offline \
+ taler-exchange-offline \
+ wire-fee now iban "${CURRENCY}":0 "${CURRENCY}":0 \
enable-account \
- payto://iban/$IBAN?receiver-name=$NAME \
- conversion-url "$CONVERSION_URL" \
- debit-restriction \
- deny \
+ "${CONVERSION_PAYTO}" \
+ conversion-url "${PROTO}://bank.$DOMAIN_NAME/conversion-info/" \
+ display-hint 10 "CHF" \
+ debit-restriction deny \
credit-restriction \
regex \
'payto://iban/.*/CH.*?receiver-name=.*' \
'Swiss only' \
- '{ "de" : "nur Schweiz", \
- "fr" : "Suisse uniquement" }'
+ '{"de":"nur Schweiz","fr":"Suisse uniquement"}' \
upload
Here, the ``$CONVERSION_URL`` must be set to the base URL of the conversion
endpoint of the bank, which should be
-``https://bank.$DOMAIN/conversion-info/`` in our setup. Note that you can
-leave out the "credit-restriction" if you want to allow international inbound
-wire transfers. The "debit-restriction" is largely mandatory as in this setup
-the taler-exchange-transfer is only configured to deal with the regional
+``https://bank.$DOMAIN/conversion-info/`` in our setup.
+
+The above commands set up the exchange to perform conversion with a
+restriction to only accept credit transfers from Swiss bank accounts. You may
+want to configure such restrictions on the bank accounts that may originate
+funds to prevent international wire transfers that may expose you to
+additional compliance risks.
+
+You can leave out the "credit-restriction" if you want to allow international
+inbound wire transfers.
+
+The "debit-restriction" is largely mandatory as in this setup the
+``taler-exchange-transfer`` is only configured to deal with the regional
currency bank. Crediting fiat bank accounts must thus be done via the
cash-out functionality of the regional currency bank account.
+The "display-hint" gives priority (10) for the fiat cash-in account over the
+regional currency account in the withdraw dialog of the wallets and labels the
+account with "CHF".
+
.. note::
The above command adds a **second** bank account to the exchange.
You (or the guided setup script) should have already enabled the
regional currency bank account (without any "conversion-url").
-System ON!
-++++++++++
-
-The last step is to enable libeufin-nexus to :ref:`import incoming bank
-transactions <receive-transaction-data>` (cash in) and to :ref:`trigger
-outgoing bank transactions <sending-payments>` (cash out).
-
-.. code-block:: console
-
- # systemctl enable --now libeufin-nexus.target
-
-
-Configuring exchange terms
-++++++++++++++++++++++++++
-
-You can use your own terms of service and privacy policy. You can use the default templates in ``/usr/share/taler/terms`` as a guide.
-Assuming you have custom terms of service and privacy policy ``rst`` teamplte files at ``TOS_PATH`` and ``PRIVACY_PATH``, the following commands generate the terms files:
+.. include:: ../frags/regional-system-on.rst
+.. include:: ../frags/deploying-tos.rst
+.. include:: ../frags/regional-manual-use.rst
-.. code-block:: console
- # taler-terms-generator -i "$TOS_PATH"
- # taler-terms-generator -i "$PRIVACY_PATH"
+Maintenance
++++++++++++
-You now have to specify the terms file names in the exchange config:
+The ``taler-exchange-offline`` commands given above set fees only for the
+current year (``now``). Thus, before January 1st of each year, you must to set
+up new fees for the new calendar year. In a regional currency setup, this
+typically requires up to three annual settings:
.. code-block:: console
- # TERMS_ETAG="$(basename "$TOS_PATH" .rst)"
- # PRIVACY_ETAG="$(basename "$PRIVACY_PATH" .rst)"
-
-.. code-block:: ini
-
- [exchange]
- TERMS_ETAG=${TERMS_ETAG}
- PRIVACY_ETAG=${PRIVACY_ETAG}
+ # YEAR=2025 # edit if necessary
+ # FIAT_CURRENCY=CHF # edit if necessary
+ # REGIO_CURRENCY=NETZBON # edit if necessary
+ # sudo -u taler-exchange-offline \
+ taler-exchange-offline \
+ wire-fee "$YEAR" \
+ iban "${FIAT_CURRENCY}":0 "${FIAT_CURRENCY}":0 \
+ wire-fee "$YEAR" \
+ x-taler-bank "${REGIO_CURRENCY}":0 "${REGIO_CURRENCY}":0 \
+ global-fee $YEAR \
+ "${REGIO_CURRENCY}:0" \
+ "${REGIO_CURRENCY}:0" \
+ "${REGIO_CURRENCY}:0"
+ 4w 6y 4 \
+ upload
+
+If the fees are not all zero, simply change the respective place to specify
+a non-zero fee.
-Make sure to restart taler-exchange after changing these configuration options:
-
-.. code-block:: console
-
- # systemctl restart taler-exchange.target
+.. note::
-.. include:: ../frags/regional-manual-use.rst
+ Additionally, the denomination signing keys will only have been
+ pre-generated for some time, depending on your ``LOOKAHEAD_SIGN``
+ configuration option. Thus, you may need to periodically run
+ the "taler-exchange-offline download sign upload" sequence as well!
diff --git a/manpages/challenger.conf.5.rst b/manpages/challenger.conf.5.rst
index a46b8461..626d11f7 100644
--- a/manpages/challenger.conf.5.rst
+++ b/manpages/challenger.conf.5.rst
@@ -71,6 +71,8 @@ AUTH_COMMAND
ADDRESS_TYPE
Type of the address that is being collected, returned as part of the ``address_type`` in the ``/info`` endpoint. Examples include ``email`` or ``phone``.
+ADDRESS_RESTRICTIONS
+ JSON object with a map of keys (names of the fields of the address to be entered by the user) to objects with a "regex" (string) containing an extended Posix regular expression for allowed address field values, and a "hint"/"hint_i18n" giving a human-readable explanation to display if the value entered by the user does not match the regex. Keys that are not mapped to such an object have no restriction on the value provided by the user. Examples would be '{"email":{"hint":"valid e-mail address required","regex":"^[a-zA-Z0-9\_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"}' or '{"zip":{"hint":"numeric zip code required","regex":"^[0-9]+$"}'.
SEE ALSO
diff --git a/manpages/taler-exchange-dbinit.1.rst b/manpages/taler-exchange-dbinit.1.rst
index 0ee83543..cbbc494c 100644
--- a/manpages/taler-exchange-dbinit.1.rst
+++ b/manpages/taler-exchange-dbinit.1.rst
@@ -13,6 +13,7 @@ Synopsis
========
**taler-exchange-dbinit**
+[**-a** | **--inject-auditor**]
[**-c** *FILENAME* | **--config=**\ ‌\ *FILENAME*]
[**-g** | **--gc**]
[**-h** | **--help**]
@@ -31,6 +32,9 @@ Taler exchange to operate.
Its options are as follows:
+**-a** \| **--inject-auditor**
+ Installs triggers to notify real-time auditors of relevant changes to the database state.
+
**-c** *FILENAME* \| **--config=**\ ‌\ *FILENAME*
Use the configuration and other resources for the exchange to operate
from *FILENAME*.
diff --git a/manpages/taler-exchange-offline.1.rst b/manpages/taler-exchange-offline.1.rst
index 378c6312..bd8cd793 100644
--- a/manpages/taler-exchange-offline.1.rst
+++ b/manpages/taler-exchange-offline.1.rst
@@ -277,6 +277,14 @@ Afterwards, optional arguments can be given:
REST API that allows merchants and wallets to determine the current
conversion rate.
+ * ``display-hint`` $PRIORITY $LABEL: specifies that this bank account should
+ be shown to the user with the given numeric $PRIORITY (higher is earlier)
+ and with the given $LABEL. This is useful to ensure that if an exchange
+ has multiple bank accounts, we can show the user those that are most likely
+ useful first, and give them appropriately labeled hints for selecting other
+ accounts as well. A display hint is optional, if missing the priority is 0
+ and the wallet must pick some appropriate label itself somehow.
+
* ``credit-restriction`` $TYPE [$ARGS]: Specifies that there are
restrictions in place when crediting this bank account. Details depend on
the restriction $TYPE. This argument may be given multiple times, in which
diff --git a/manpages/taler.conf.5.rst b/manpages/taler.conf.5.rst
index 3748b673..3074f68b 100644
--- a/manpages/taler.conf.5.rst
+++ b/manpages/taler.conf.5.rst
@@ -182,6 +182,12 @@ BASE_URL
Added to wire transfers to enable tracking by merchants.
Used by the KYC logic when interacting with OAuth 2.0.
+TOPLEVEL_REDIRECT_URL
+ Where to redirect visitors that access the top-level
+ "/" endpoint of the exchange. Should point users to
+ information about the exchange operator.
+ Optional setting, defaults to "/terms".
+
AGGREGATOR_IDLE_SLEEP_INTERVAL
For how long should the taler-exchange-aggregator sleep when it is idle
before trying to look for more work? Default is 60 seconds.
diff --git a/screenshots/balance-list-1-ios-0.png b/screenshots/balance-list-1-ios-0.png
new file mode 100644
index 00000000..bead680a
--- /dev/null
+++ b/screenshots/balance-list-1-ios-0.png
Binary files differ
diff --git a/screenshots/balance-list-1-ios-latest.png b/screenshots/balance-list-1-ios-latest.png
new file mode 120000
index 00000000..d876cbcc
--- /dev/null
+++ b/screenshots/balance-list-1-ios-latest.png
@@ -0,0 +1 @@
+balance-list-1-ios-0.png \ No newline at end of file
diff --git a/screenshots/balance-list-2-ios-0.png b/screenshots/balance-list-2-ios-0.png
new file mode 100644
index 00000000..23efbbd5
--- /dev/null
+++ b/screenshots/balance-list-2-ios-0.png
Binary files differ
diff --git a/screenshots/balance-list-2-ios-latest.png b/screenshots/balance-list-2-ios-latest.png
new file mode 120000
index 00000000..4b7f977e
--- /dev/null
+++ b/screenshots/balance-list-2-ios-latest.png
@@ -0,0 +1 @@
+balance-list-2-ios-0.png \ No newline at end of file
diff --git a/screenshots/balance-list-android-0.png b/screenshots/balance-list-android-0.png
new file mode 100644
index 00000000..f87919f8
--- /dev/null
+++ b/screenshots/balance-list-android-0.png
Binary files differ
diff --git a/screenshots/balance-list-android-latest.png b/screenshots/balance-list-android-latest.png
new file mode 120000
index 00000000..0af04e4b
--- /dev/null
+++ b/screenshots/balance-list-android-latest.png
@@ -0,0 +1 @@
+balance-list-android-0.png \ No newline at end of file
diff --git a/screenshots/balance-list-firefox-0.png b/screenshots/balance-list-firefox-0.png
new file mode 100644
index 00000000..6a4fcb12
--- /dev/null
+++ b/screenshots/balance-list-firefox-0.png
Binary files differ
diff --git a/screenshots/balance-list-firefox-latest.png b/screenshots/balance-list-firefox-latest.png
new file mode 120000
index 00000000..390d4b60
--- /dev/null
+++ b/screenshots/balance-list-firefox-latest.png
@@ -0,0 +1 @@
+balance-list-firefox-0.png \ No newline at end of file
diff --git a/screenshots/cta-accept-tos-android-0.png b/screenshots/cta-accept-tos-android-0.png
new file mode 100644
index 00000000..c9537071
--- /dev/null
+++ b/screenshots/cta-accept-tos-android-0.png
Binary files differ
diff --git a/screenshots/cta-accept-tos-android-latest.png b/screenshots/cta-accept-tos-android-latest.png
new file mode 120000
index 00000000..89544b02
--- /dev/null
+++ b/screenshots/cta-accept-tos-android-latest.png
@@ -0,0 +1 @@
+cta-accept-tos-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-accept-tos-ios-0.png b/screenshots/cta-accept-tos-ios-0.png
new file mode 100644
index 00000000..7d8d5ff8
--- /dev/null
+++ b/screenshots/cta-accept-tos-ios-0.png
Binary files differ
diff --git a/screenshots/cta-accept-tos-ios-latest.png b/screenshots/cta-accept-tos-ios-latest.png
new file mode 120000
index 00000000..091a79a1
--- /dev/null
+++ b/screenshots/cta-accept-tos-ios-latest.png
@@ -0,0 +1 @@
+cta-accept-tos-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-deposit-1-ios-0.png b/screenshots/cta-deposit-1-ios-0.png
new file mode 100644
index 00000000..6cf30dde
--- /dev/null
+++ b/screenshots/cta-deposit-1-ios-0.png
Binary files differ
diff --git a/screenshots/cta-deposit-1-ios-latest.png b/screenshots/cta-deposit-1-ios-latest.png
new file mode 120000
index 00000000..a3a21c74
--- /dev/null
+++ b/screenshots/cta-deposit-1-ios-latest.png
@@ -0,0 +1 @@
+cta-deposit-1-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-deposit-2-ios-0.png b/screenshots/cta-deposit-2-ios-0.png
new file mode 100644
index 00000000..49007f6c
--- /dev/null
+++ b/screenshots/cta-deposit-2-ios-0.png
Binary files differ
diff --git a/screenshots/cta-deposit-2-ios-latest.png b/screenshots/cta-deposit-2-ios-latest.png
new file mode 120000
index 00000000..5dd80393
--- /dev/null
+++ b/screenshots/cta-deposit-2-ios-latest.png
@@ -0,0 +1 @@
+cta-deposit-2-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-deposit-android-0.png b/screenshots/cta-deposit-android-0.png
new file mode 100644
index 00000000..74435360
--- /dev/null
+++ b/screenshots/cta-deposit-android-0.png
Binary files differ
diff --git a/screenshots/cta-deposit-android-latest.png b/screenshots/cta-deposit-android-latest.png
new file mode 120000
index 00000000..53a323c3
--- /dev/null
+++ b/screenshots/cta-deposit-android-latest.png
@@ -0,0 +1 @@
+cta-deposit-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-deposit-firefox-0.png b/screenshots/cta-deposit-firefox-0.png
new file mode 100644
index 00000000..e78538c7
--- /dev/null
+++ b/screenshots/cta-deposit-firefox-0.png
Binary files differ
diff --git a/screenshots/cta-deposit-firefox-latest.png b/screenshots/cta-deposit-firefox-latest.png
new file mode 120000
index 00000000..93e5beca
--- /dev/null
+++ b/screenshots/cta-deposit-firefox-latest.png
@@ -0,0 +1 @@
+cta-deposit-firefox-0.png \ No newline at end of file
diff --git a/screenshots/cta-payment-android-0.png b/screenshots/cta-payment-android-0.png
new file mode 100644
index 00000000..d518c922
--- /dev/null
+++ b/screenshots/cta-payment-android-0.png
Binary files differ
diff --git a/screenshots/cta-payment-android-latest.png b/screenshots/cta-payment-android-latest.png
new file mode 120000
index 00000000..b858e45f
--- /dev/null
+++ b/screenshots/cta-payment-android-latest.png
@@ -0,0 +1 @@
+cta-payment-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-payment-ios-0.png b/screenshots/cta-payment-ios-0.png
new file mode 100644
index 00000000..ad7cb8f0
--- /dev/null
+++ b/screenshots/cta-payment-ios-0.png
Binary files differ
diff --git a/screenshots/cta-payment-ios-latest.png b/screenshots/cta-payment-ios-latest.png
new file mode 120000
index 00000000..130b47c8
--- /dev/null
+++ b/screenshots/cta-payment-ios-latest.png
@@ -0,0 +1 @@
+cta-payment-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-payment-paid-1-ios-0.png b/screenshots/cta-payment-paid-1-ios-0.png
new file mode 100644
index 00000000..09364982
--- /dev/null
+++ b/screenshots/cta-payment-paid-1-ios-0.png
Binary files differ
diff --git a/screenshots/cta-payment-paid-1-ios-latest.png b/screenshots/cta-payment-paid-1-ios-latest.png
new file mode 120000
index 00000000..c721af49
--- /dev/null
+++ b/screenshots/cta-payment-paid-1-ios-latest.png
@@ -0,0 +1 @@
+cta-payment-paid-1-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-payment-paid-2-ios-0.png b/screenshots/cta-payment-paid-2-ios-0.png
new file mode 100644
index 00000000..b340000f
--- /dev/null
+++ b/screenshots/cta-payment-paid-2-ios-0.png
Binary files differ
diff --git a/screenshots/cta-payment-paid-2-ios-latest.png b/screenshots/cta-payment-paid-2-ios-latest.png
new file mode 120000
index 00000000..7b13031e
--- /dev/null
+++ b/screenshots/cta-payment-paid-2-ios-latest.png
@@ -0,0 +1 @@
+cta-payment-paid-2-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-payment-paid-android-0.png b/screenshots/cta-payment-paid-android-0.png
new file mode 100644
index 00000000..51a412c7
--- /dev/null
+++ b/screenshots/cta-payment-paid-android-0.png
Binary files differ
diff --git a/screenshots/cta-payment-paid-android-latest.png b/screenshots/cta-payment-paid-android-latest.png
new file mode 120000
index 00000000..8aabd17e
--- /dev/null
+++ b/screenshots/cta-payment-paid-android-latest.png
@@ -0,0 +1 @@
+cta-payment-paid-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-pull-initiate-android-0.png b/screenshots/cta-peer-pull-initiate-android-0.png
new file mode 100644
index 00000000..9be8abdf
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-android-0.png
Binary files differ
diff --git a/screenshots/cta-peer-pull-initiate-android-latest.png b/screenshots/cta-peer-pull-initiate-android-latest.png
new file mode 120000
index 00000000..eeb4d8c9
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-android-latest.png
@@ -0,0 +1 @@
+cta-peer-pull-initiate-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-pull-initiate-firefox-0.png b/screenshots/cta-peer-pull-initiate-firefox-0.png
new file mode 100644
index 00000000..0d7c1b31
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-firefox-0.png
Binary files differ
diff --git a/screenshots/cta-peer-pull-initiate-firefox-latest.png b/screenshots/cta-peer-pull-initiate-firefox-latest.png
new file mode 120000
index 00000000..74339ee9
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-firefox-latest.png
@@ -0,0 +1 @@
+cta-peer-pull-initiate-firefox-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-pull-initiate-ios-0.png b/screenshots/cta-peer-pull-initiate-ios-0.png
new file mode 100644
index 00000000..421cae8c
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-ios-0.png
Binary files differ
diff --git a/screenshots/cta-peer-pull-initiate-ios-latest.png b/screenshots/cta-peer-pull-initiate-ios-latest.png
new file mode 120000
index 00000000..e083752f
--- /dev/null
+++ b/screenshots/cta-peer-pull-initiate-ios-latest.png
@@ -0,0 +1 @@
+cta-peer-pull-initiate-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-push-initiate-android-0.png b/screenshots/cta-peer-push-initiate-android-0.png
new file mode 100644
index 00000000..8ee0ef7d
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-android-0.png
Binary files differ
diff --git a/screenshots/cta-peer-push-initiate-android-latest.png b/screenshots/cta-peer-push-initiate-android-latest.png
new file mode 120000
index 00000000..ee8bd57a
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-android-latest.png
@@ -0,0 +1 @@
+cta-peer-push-initiate-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-push-initiate-firefox-0.png b/screenshots/cta-peer-push-initiate-firefox-0.png
new file mode 100644
index 00000000..f566b0cb
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-firefox-0.png
Binary files differ
diff --git a/screenshots/cta-peer-push-initiate-firefox-latest.png b/screenshots/cta-peer-push-initiate-firefox-latest.png
new file mode 120000
index 00000000..98a59294
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-firefox-latest.png
@@ -0,0 +1 @@
+cta-peer-push-initiate-firefox-0.png \ No newline at end of file
diff --git a/screenshots/cta-peer-push-initiate-ios-0.png b/screenshots/cta-peer-push-initiate-ios-0.png
new file mode 100644
index 00000000..a574c880
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-ios-0.png
Binary files differ
diff --git a/screenshots/cta-peer-push-initiate-ios-latest.png b/screenshots/cta-peer-push-initiate-ios-latest.png
new file mode 120000
index 00000000..f42c0924
--- /dev/null
+++ b/screenshots/cta-peer-push-initiate-ios-latest.png
@@ -0,0 +1 @@
+cta-peer-push-initiate-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-url-entry-1-android-0.png b/screenshots/cta-url-entry-1-android-0.png
new file mode 100644
index 00000000..0705e7f0
--- /dev/null
+++ b/screenshots/cta-url-entry-1-android-0.png
Binary files differ
diff --git a/screenshots/cta-url-entry-1-android-latest.png b/screenshots/cta-url-entry-1-android-latest.png
new file mode 120000
index 00000000..3ff5ec48
--- /dev/null
+++ b/screenshots/cta-url-entry-1-android-latest.png
@@ -0,0 +1 @@
+cta-url-entry-1-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-url-entry-2-android-0.png b/screenshots/cta-url-entry-2-android-0.png
new file mode 100644
index 00000000..18ed9bdf
--- /dev/null
+++ b/screenshots/cta-url-entry-2-android-0.png
Binary files differ
diff --git a/screenshots/cta-url-entry-2-android-latest.png b/screenshots/cta-url-entry-2-android-latest.png
new file mode 120000
index 00000000..c589b4c9
--- /dev/null
+++ b/screenshots/cta-url-entry-2-android-latest.png
@@ -0,0 +1 @@
+cta-url-entry-2-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-wire-transfer-1-android-0.png b/screenshots/cta-wire-transfer-1-android-0.png
new file mode 100644
index 00000000..71e354f6
--- /dev/null
+++ b/screenshots/cta-wire-transfer-1-android-0.png
Binary files differ
diff --git a/screenshots/cta-wire-transfer-1-android-latest.png b/screenshots/cta-wire-transfer-1-android-latest.png
new file mode 120000
index 00000000..ec0bf1b0
--- /dev/null
+++ b/screenshots/cta-wire-transfer-1-android-latest.png
@@ -0,0 +1 @@
+cta-wire-transfer-1-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-wire-transfer-1-ios-0.png b/screenshots/cta-wire-transfer-1-ios-0.png
new file mode 100644
index 00000000..1d9fdbfd
--- /dev/null
+++ b/screenshots/cta-wire-transfer-1-ios-0.png
Binary files differ
diff --git a/screenshots/cta-wire-transfer-1-ios-latest.png b/screenshots/cta-wire-transfer-1-ios-latest.png
new file mode 120000
index 00000000..49cacb7f
--- /dev/null
+++ b/screenshots/cta-wire-transfer-1-ios-latest.png
@@ -0,0 +1 @@
+cta-wire-transfer-1-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-wire-transfer-2-android-0.png b/screenshots/cta-wire-transfer-2-android-0.png
new file mode 100644
index 00000000..719b890c
--- /dev/null
+++ b/screenshots/cta-wire-transfer-2-android-0.png
Binary files differ
diff --git a/screenshots/cta-wire-transfer-2-android-latest.png b/screenshots/cta-wire-transfer-2-android-latest.png
new file mode 120000
index 00000000..cb712f15
--- /dev/null
+++ b/screenshots/cta-wire-transfer-2-android-latest.png
@@ -0,0 +1 @@
+cta-wire-transfer-2-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-wire-transfer-2-ios-0.png b/screenshots/cta-wire-transfer-2-ios-0.png
new file mode 100644
index 00000000..3ea5b9ca
--- /dev/null
+++ b/screenshots/cta-wire-transfer-2-ios-0.png
Binary files differ
diff --git a/screenshots/cta-wire-transfer-2-ios-latest.png b/screenshots/cta-wire-transfer-2-ios-latest.png
new file mode 120000
index 00000000..6879480a
--- /dev/null
+++ b/screenshots/cta-wire-transfer-2-ios-latest.png
@@ -0,0 +1 @@
+cta-wire-transfer-2-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-wire-transfer-3-ios-0.png b/screenshots/cta-wire-transfer-3-ios-0.png
new file mode 100644
index 00000000..c15f9a5e
--- /dev/null
+++ b/screenshots/cta-wire-transfer-3-ios-0.png
Binary files differ
diff --git a/screenshots/cta-wire-transfer-3-ios-latest.png b/screenshots/cta-wire-transfer-3-ios-latest.png
new file mode 120000
index 00000000..daba13f8
--- /dev/null
+++ b/screenshots/cta-wire-transfer-3-ios-latest.png
@@ -0,0 +1 @@
+cta-wire-transfer-3-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-1-android-0.png b/screenshots/cta-withdraw-1-android-0.png
new file mode 100644
index 00000000..3da47302
--- /dev/null
+++ b/screenshots/cta-withdraw-1-android-0.png
Binary files differ
diff --git a/screenshots/cta-withdraw-1-android-latest.png b/screenshots/cta-withdraw-1-android-latest.png
new file mode 120000
index 00000000..a183a53f
--- /dev/null
+++ b/screenshots/cta-withdraw-1-android-latest.png
@@ -0,0 +1 @@
+cta-withdraw-1-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-2-android-0.png b/screenshots/cta-withdraw-2-android-0.png
new file mode 100644
index 00000000..dbe4c7b1
--- /dev/null
+++ b/screenshots/cta-withdraw-2-android-0.png
Binary files differ
diff --git a/screenshots/cta-withdraw-2-android-latest.png b/screenshots/cta-withdraw-2-android-latest.png
new file mode 120000
index 00000000..6ca7417d
--- /dev/null
+++ b/screenshots/cta-withdraw-2-android-latest.png
@@ -0,0 +1 @@
+cta-withdraw-2-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-done-android-0.png b/screenshots/cta-withdraw-done-android-0.png
new file mode 100644
index 00000000..5860f280
--- /dev/null
+++ b/screenshots/cta-withdraw-done-android-0.png
Binary files differ
diff --git a/screenshots/cta-withdraw-done-android-latest.png b/screenshots/cta-withdraw-done-android-latest.png
new file mode 120000
index 00000000..7751f9d0
--- /dev/null
+++ b/screenshots/cta-withdraw-done-android-latest.png
@@ -0,0 +1 @@
+cta-withdraw-done-android-0.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-done-ios-0.png b/screenshots/cta-withdraw-done-ios-0.png
new file mode 100644
index 00000000..93561c5d
--- /dev/null
+++ b/screenshots/cta-withdraw-done-ios-0.png
Binary files differ
diff --git a/screenshots/cta-withdraw-done-ios-latest.png b/screenshots/cta-withdraw-done-ios-latest.png
new file mode 120000
index 00000000..26f90634
--- /dev/null
+++ b/screenshots/cta-withdraw-done-ios-latest.png
@@ -0,0 +1 @@
+cta-withdraw-done-ios-0.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-firefox-1.png b/screenshots/cta-withdraw-firefox-1.png
new file mode 100644
index 00000000..61d3c0a4
--- /dev/null
+++ b/screenshots/cta-withdraw-firefox-1.png
Binary files differ
diff --git a/screenshots/cta-withdraw-firefox-latest.png b/screenshots/cta-withdraw-firefox-latest.png
index 4ed704c3..189b3525 120000
--- a/screenshots/cta-withdraw-firefox-latest.png
+++ b/screenshots/cta-withdraw-firefox-latest.png
@@ -1 +1 @@
-cta-withdraw-firefox-0.png \ No newline at end of file
+cta-withdraw-firefox-1.png \ No newline at end of file
diff --git a/screenshots/cta-withdraw-ios-0.png b/screenshots/cta-withdraw-ios-0.png
new file mode 100644
index 00000000..11dd9db0
--- /dev/null
+++ b/screenshots/cta-withdraw-ios-0.png
Binary files differ
diff --git a/screenshots/cta-withdraw-ios-latest.png b/screenshots/cta-withdraw-ios-latest.png
new file mode 120000
index 00000000..9c7d604b
--- /dev/null
+++ b/screenshots/cta-withdraw-ios-latest.png
@@ -0,0 +1 @@
+cta-withdraw-ios-0.png \ No newline at end of file
diff --git a/screenshots/transaction-list-android-0.png b/screenshots/transaction-list-android-0.png
new file mode 100644
index 00000000..e9309a83
--- /dev/null
+++ b/screenshots/transaction-list-android-0.png
Binary files differ
diff --git a/screenshots/transaction-list-android-latest.png b/screenshots/transaction-list-android-latest.png
new file mode 120000
index 00000000..d6123a74
--- /dev/null
+++ b/screenshots/transaction-list-android-latest.png
@@ -0,0 +1 @@
+transaction-list-android-0.png \ No newline at end of file
diff --git a/screenshots/transaction-list-firefox-0.png b/screenshots/transaction-list-firefox-0.png
new file mode 100644
index 00000000..d2d12ca8
--- /dev/null
+++ b/screenshots/transaction-list-firefox-0.png
Binary files differ
diff --git a/screenshots/transaction-list-firefox-latest.png b/screenshots/transaction-list-firefox-latest.png
new file mode 120000
index 00000000..463f0be8
--- /dev/null
+++ b/screenshots/transaction-list-firefox-latest.png
@@ -0,0 +1 @@
+transaction-list-firefox-0.png \ No newline at end of file
diff --git a/screenshots/transaction-list-ios-0.png b/screenshots/transaction-list-ios-0.png
new file mode 100644
index 00000000..6180c2c5
--- /dev/null
+++ b/screenshots/transaction-list-ios-0.png
Binary files differ
diff --git a/screenshots/transaction-list-ios-latest.png b/screenshots/transaction-list-ios-latest.png
new file mode 120000
index 00000000..e0d8b772
--- /dev/null
+++ b/screenshots/transaction-list-ios-latest.png
@@ -0,0 +1 @@
+transaction-list-ios-0.png \ No newline at end of file
diff --git a/taler-challenger-manual.rst b/taler-challenger-manual.rst
index a7a7169f..39b06710 100644
--- a/taler-challenger-manual.rst
+++ b/taler-challenger-manual.rst
@@ -1,7 +1,7 @@
..
This file is part of GNU TALER.
- Copyright (C) 2023 Taler Systems SA
+ Copyright (C) 2023, 2024 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License as published by the Free Software
@@ -558,6 +558,7 @@ file) is also supported.
The template is instantiated using the following information:
+ * restrictions: Object; map of keys (names of the fields of the address to be entered by the user) to objects with a "regex" (string) containing an extended Posix regular expression for allowed address field values, and a "hint"/"hint_i18n" giving a human-readable explanation to display if the value entered by the user does not match the regex. Keys that are not mapped to such an object have no restriction on the value provided by the user. See "ADDRESS_RESTRICTIONS" in the challenger configuration.
* fix_address: boolean; indicates if the given address cannot be changed
anymore, the form should be read-only if set to true.
diff --git a/taler-developer-manual.rst b/taler-developer-manual.rst
index 1aa5cc8d..3035e55d 100644
--- a/taler-developer-manual.rst
+++ b/taler-developer-manual.rst
@@ -1524,18 +1524,16 @@ use when talking to end users or even system administrators.
trusted third party that verifies that the :term:`exchange` is operating correctly
bank
- traditional financial service provider who offers wire :term:`transfers <transfer>` between accounts
+ traditional financial service provider who offers
+ :term:`wire transfers <wire transfer>` between accounts
buyer
individual in control of a Taler :term:`wallet`, usually using it to
- :term:`spend` the :term:`coins` on :term:`contracts` (see also :term:`customer`).
+ :term:`spend` the :term:`coins <coin>` on :term:`contracts <contract>` (see also :term:`customer`).
close
- closes
- closed
- closing
operation an :term:`exchange` performs on a :term:`reserve` that has not been
- :term:`drained` by :term:`withdraw` operations. When closing a reserve, the
+ :term:`emptied <empty>` by :term:`withdraw` operations. When closing a reserve, the
exchange wires the remaining funds back to the customer, minus a :term:`fee`
for closing
@@ -1543,10 +1541,8 @@ use when talking to end users or even system administrators.
individual that directs the buyer (perhaps the same individual) to make a purchase
coin
- coins
coins are individual token representing a certain amount of value, also known as the :term:`denomination` of the coin
- commitment
refresh commitment
data that the wallet commits to during the :term:`melt` stage of the
:term:`refresh` protocol where it
@@ -1555,9 +1551,8 @@ use when talking to end users or even system administrators.
probabilistically (see: :term:`kappa`) during the :term:`reveal` stage.
contract
- contracts
formal agreement between :term:`merchant` and :term:`customer` specifying the
- :term:`contract terms` and signed by the merchant and the :term:`coins` of the
+ :term:`contract terms` and signed by the merchant and the :term:`coins <coin>` of the
customer
contract terms
@@ -1573,32 +1568,32 @@ use when talking to end users or even system administrators.
particular :term:`denomination`
deposit
- deposits
- depositing
operation by which a merchant passes coins to an exchange, expecting the
exchange to credit his bank account in the future using an
:term:`aggregate` :term:`wire transfer`
drain
- drained
- a :term:`reserve` is being drained when a :term:`wallet` is using the
- reserve's private key to :term:`withdraw` coins from it. This reduces
- the balance of the reserve. Once the balance reaches zero, we say that
- the reserve has been (fully) drained. Reserves that are not drained
- (which is the normal process) are :term:`closed` by the exchange.
+ process by which an exchange operator takes the profits
+ (from :term:`fees <fee>`) out of the escrow account and moves them into
+ their regular business account
dirty
- dirty coin
- a coin is dirty if its public key may be known to an entity other than
+ a :term:`coin` is dirty if its public key may be known to an entity other than
the customer, thereby creating the danger of some entity being able to
link multiple transactions of coin's owner if the coin is not refreshed
+ empty
+ a :term:`reserve` is being emptied when a :term:`wallet` is using the
+ reserve's private key to :term:`withdraw` coins from it. This reduces
+ the balance of the reserve. Once the balance reaches zero, we say that
+ the reserve has been (fully) emptied. Reserves that are not emptied
+ (which is the normal process) are :term:`closed <close>` by the exchange.
+
exchange
Taler's payment service operator. Issues electronic coins during
withdrawal and redeems them when they are deposited by merchants
expired
- expiration
Various operations come with time limits. In particular, denomination keys
come with strict time limits for the various operations involving the
coin issued under the denomination. The most important limit is the
@@ -1620,18 +1615,17 @@ use when talking to end users or even system administrators.
fee
an :term:`exchange` charges various fees for its service. The different
fees are specified in the protocol. There are fees per coin for
- :term:`withdrawing`, :term:`depositing`, :term:`melting`, and
- :term:`refunding`. Furthermore, there are fees per wire transfer
- for :term:`closing` a :term:`reserve`: and for
- :term:`aggregate` :term:`wire transfers` to the :term:`merchant`.
+ :term:`withdrawing <withdraw>`, :term:`depositing <deposit>`, :term:`melting <melt>`, and
+ :term:`refunding <refund>`. Furthermore, there are fees per wire transfer
+ when a :term:`reserve` is :term:`closed <close>`
+ and for :term:`aggregate` :term:`wire transfers <wire transfer>`
+ to the :term:`merchant`.
fresh
- fresh coin
- a coin is fresh if its public key is only known to the customer
+ a :term:`coin` is fresh if its public key is only known to the customer
- json
JSON
- JavaScript Object Notation
+ JavaScript Object Notation (JSON) is a
serialization format derived from the JavaScript language which is
commonly used in the Taler protocol as the payload of HTTP requests
and responses.
@@ -1641,11 +1635,11 @@ use when talking to end users or even system administrators.
The probability of successfully evading the income transparency with the
refresh protocol is 1:kappa.
- LibEuFin
- FIXME: explain
+ libeufin
+ Kotlin component that implements a regional currency bank and an
+ adapter to communicate via EBICS with European core banking systems.
link
- linking
specific step in the :term:`refresh` protocol that an exchange must offer
to prevent abuse of the :term:`refresh` mechanism. The link step is
not needed in normal operation, it just must be offered.
@@ -1655,9 +1649,7 @@ use when talking to end users or even system administrators.
message signing keys
melt
- melted
- melting
- step of the :term:`refresh` protocol where a :term:`dirty coin`
+ step of the :term:`refresh` protocol where a :term:`dirty` :term:`coin`
is invalidated to be reborn :term:`fresh` in a subsequent
:term:`reveal` step.
@@ -1683,19 +1675,19 @@ use when talking to end users or even system administrators.
recoup
Operation by which an exchange returns the value of coins affected
- by a :term:`revocation` to their :term:`owner`, either by allowing the owner to
+ by a :term:`revocation <revoke>` to their :term:`owner`, either by allowing the owner to
withdraw new coins or wiring funds back to the bank account of the :term:`owner`.
planchet
precursor data for a :term:`coin`. A planchet includes the coin's internal
secrets (coin private key, blinding factor), but lacks the RSA signature
- of the :term:`exchange`. When :term:`withdrawing`, a :term:`wallet`
+ of the :term:`exchange`. When :term:`withdrawing <withdraw>`, a :term:`wallet`
creates and persists a planchet before asking the exchange to sign it to
get the coin.
purchase
Refers to the overall process of negotiating a :term:`contract` and then
- making a payment with :term:`coins` to a :term:`merchant`.
+ making a payment with :term:`coins <coin>` to a :term:`merchant`.
privacy policy
Statement of an operator how they will protect the privacy of users.
@@ -1708,13 +1700,11 @@ use when talking to end users or even system administrators.
merchant backend.
refresh
- refreshing
- operation by which a :term:`dirty coin` is converted into one or more
- :term:`fresh` coins. Involves :term:`melting` the :term:`dirty coin` and
- then :term:`revealing` so-called :term:`transfer keys`.
+ operation by which a :term:`dirty` :term:`coin` is converted into one or more
+ :term:`fresh` coins. Involves :term:`melting <melt>` the :term:`dirty` coins and
+ then :term:`revealing <reveal>` so-called :term:`transfer keys <transfer key>`.
refund
- refunding
operation by which a merchant steps back from the right to funds that he
obtained from a :term:`deposit` operation, giving the right to the funds back
to the customer
@@ -1726,25 +1716,23 @@ use when talking to end users or even system administrators.
reserve
accounting mechanism used by the exchange to track customer funds
- from incoming :term:`wire transfers`. A reserve is created whenever
+ from incoming :term:`wire transfers <wire transfer>`. A reserve is created whenever
a customer wires money to the exchange using a well-formed public key
in the subject. The exchange then allows the customer's :term:`wallet`
to :term:`withdraw` up to the amount received in :term:`fresh`
- :term:`coins` from the reserve, thereby draining the reserve. If a
- reserve is not drained, the exchange eventually :term:`closes` it.
+ :term:`coins <coin>` from the reserve, thereby emptying the reserve. If a
+ reserve is not emptied, the exchange will eventually :term:`close` it.
Other definition: Funds set aside for future use; either the balance of a customer at the
exchange ready for withdrawal, or the funds kept in the exchange;s bank
account to cover obligations from coins in circulation.
reveal
- revealing
step in the :term:`refresh` protocol where some of the transfer private
keys are revealed to prove honest behavior on the part of the wallet.
In the reveal step, the exchange returns the signed :term:`fresh` coins.
revoke
- revocation
exceptional operation by which an exchange withdraws a denomination from
circulation, either because the signing key was compromised or because
the exchange is going out of operation; unspent coins of a revoked
@@ -1756,22 +1744,14 @@ use when talking to end users or even system administrators.
time.
spend
- spending
operation by which a customer gives a merchant the right to deposit
coins in return for merchandise
- transfer
- transfers
- wire transfer
- wire transfers
- method of sending funds between :term:`bank` accounts
-
transfer key
- transfer keys
special cryptographic key used in the :term:`refresh` protocol, some of which
are revealed during the :term:`reveal` step. Note that transfer keys have,
- despite the name, no relationship to :term:`wire transfers`. They merely
- help to transfer the value from a :term:`dirty coin` to a :term:`fresh coin`
+ despite the name, no relationship to :term:`wire transfers <wire transfer>`. They merely
+ help to transfer the value from a :term:`dirty` coin to a :term:`fresh` coin
terms
the general terms of service of an operator, possibly including
@@ -1804,25 +1784,27 @@ use when talking to end users or even system administrators.
Cross-browser API used to implement the GNU Taler wallet browser extension.
wire gateway
- FIXME: explain
+ API used by the exchange to talk with some real-time gross settlement system
+ (core banking system, blockchain) to notice inbound credits wire transfers
+ (during withdraw) and to trigger outbound debit wire transfers (primarily
+ for deposits).
+
+ wire transfer
+ a wire transfer is a method of sending funds between :term:`bank` accounts
wire transfer identifier
- wtid
Subject of a wire transfer from the exchange to a merchant;
set by the aggregator to a random nonce which uniquely
identifies the transfer.
withdraw
- withdrawing
- withdrawal
operation by which a :term:`wallet` can convert funds from a :term:`reserve` to
fresh coins
zombie
- zombie coin
- coin where the respective :term:`denomination key` is past its
- :term:`deposit` :term:`expiration` time, but which is still (again) valid
- for an operation because it was :term:`melted` while it was still
+ :term:`coin` where the respective :term:`denomination key` is past its
+ :term:`deposit` :term:`expiration <expired>` time, but which is still (again) valid
+ for an operation because it was :term:`melted <melt>` while it was still
valid, and then later again credited during a :term:`recoup` process
diff --git a/taler-exchange-manual.rst b/taler-exchange-manual.rst
index 57db7095..f0c345c7 100644
--- a/taler-exchange-manual.rst
+++ b/taler-exchange-manual.rst
@@ -978,7 +978,7 @@ Taler permits an exchange to require KYC data under the following circumstances:
Any of the above requests can trigger the KYC process,
which can be illustrated as follows:
-.. image:: kyc-process.png
+.. image:: images/kyc-process.png
At the end of the KYC process, the wallet re-tries the
original request, and assuming KYC was successful, the
diff --git a/taler-user-guide.rst b/taler-user-guide.rst
index 127218fb..8e42c0d2 100644
--- a/taler-user-guide.rst
+++ b/taler-user-guide.rst
@@ -322,7 +322,7 @@ Mustach templating engine:
* timestamp: time of the refund (in nanoseconds since 1970)
* order_id: the ID of the order that received the refund
* :ref:`contract_terms <contract-terms>`: the full JSON of the contract terms of the refunded order
-* refund_amout: the amount that was being refunded
+* refund_amount: the amount that was being refunded
* reason: the reason entered by the merchant staff for granting the refund;
be careful, you probably want to inform your staff if a webhook may expose
this information to the consumer
diff --git a/taler-wallet.rst b/taler-wallet.rst
index 1d1a3991..4a975340 100644
--- a/taler-wallet.rst
+++ b/taler-wallet.rst
@@ -192,6 +192,53 @@ Manual withdrawing
--amount EUR:5
+P2P push payments
+-----------------
+
+The following code generates a P2P push transaction over 1 CHF
+with an expiration time of 30 days (assuming the wallet has a
+sufficient balance):
+
+.. code-block:: console
+
+ $ taler-wallet-cli p2p initiate-push-debit \
+ --purse-expiration="30 d" \
+ --summary="The summary" \
+ CHF:1
+
+The final URL can then be found in the transaction list:
+
+.. code-block:: console
+
+ $ taler-wallet-cli transactions
+
+Background wallet
+-----------------
+
+A wallet can be launched in the background:
+
+.. code-block:: console
+
+ $ taler-wallet-cli advanced serve &
+
+You can then run various Taler operations faster against
+this one persistent instance:
+
+.. code-block:: console
+
+ $ taler-wallet-cli --wallet-connection=wallet-core.sock ...
+
+Here ``...`` needs to be changed to the commando to run.
+Make sure to run
+
+.. code-block:: console
+
+ $ taler-wallet-cli --wallet-connection=wallet-core.sock \
+ run-until-done
+
+to wait for pending transactions to complete.
+
+
Testing an exchange deployment
------------------------------