1
0
forked from GRIN/grim

Build 20: README credit, onboarding copy, centered balance hero

- README: credit Claude (Anthropic) for Goblin's development at the bottom,
  in place of per-commit co-authorship.
- Onboarding: replace the contradictory "Pay people, not addresses" card with
  "Send like a message" and reword the body in plain language (no more
  "plumbing"/"ciphertext"). The identity step now says you can rotate your key
  anytime to maintain your privacy.
- Home: center the balance hero so it lines up with the Pay amount and the
  empty-state below it.
This commit is contained in:
Claude
2026-06-11 22:55:09 -04:00
parent 15c19303ff
commit c3b23dc1a7
3 changed files with 26 additions and 16 deletions
+6
View File
@@ -37,3 +37,9 @@ In the root of the repo run `./scripts/android.sh build|release v7|v8|x86`, wher
## License
Apache License v2.0.
## Credits
**Goblin** — the Cash App-style, Nostr-native payments experience layered on top of this wallet (end-to-end encrypted NIP-17 payments over Tor, in-app identity, and the goblin.st identity service) — was designed and built with development assistance from **Claude** ([Anthropic](https://www.anthropic.com)).
The underlying cross-platform grin wallet is the upstream **Grim** project.
+10 -9
View File
@@ -192,10 +192,10 @@ impl OnboardingContent {
or addresses on its chain.",
),
(
"Pay people, not addresses",
"Payments travel as end-to-end encrypted messages over nostr \
and Tor. Goblin handles the plumbing; relays only ever see \
ciphertext.",
"Send like a message",
"Pay a @username or npub and it arrives as an end-to-end \
encrypted message over nostr and Tor — no one in between can \
see the amount or who's involved.",
),
(
"Yours alone",
@@ -719,8 +719,9 @@ impl OnboardingContent {
ui.label(
RichText::new(
"A fresh key, made for payments — deliberately not part \
of your seed, so you can replace it without touching \
your funds. Back it up later in Settings → Identity.",
of your seed, so you can rotate it anytime to maintain \
your privacy, without ever touching your funds. Back it \
up in Settings → Identity.",
)
.font(FontId::new(12.5, fonts::regular()))
.color(t.surface_text_dim),
@@ -728,9 +729,9 @@ impl OnboardingContent {
ui.add_space(6.0);
ui.label(
RichText::new(
"Want a clean slate later? Swap in a brand-new key any \
time from Settings — your grin stays put, and the new \
you isn't linked to the old one. Same wallet, fresh face.",
"Want a clean slate? Swap in a brand-new key any time — \
the new you isn't linked to the old one. Same wallet, \
fresh face.",
)
.font(FontId::new(12.5, fonts::regular()))
.color(t.surface_text_dim),
+10 -7
View File
@@ -342,16 +342,19 @@ pub fn field_well(ui: &mut Ui, content: impl FnOnce(&mut Ui)) {
/// A balance hero block: kicker, big number + ツ, optional fiat line.
pub fn balance_hero(ui: &mut Ui, atomic: u64, fiat: Option<&str>, size: f32) {
let t = theme::tokens();
kicker(ui, "Balance");
// Centered to match the Pay amount and the empty-state below it.
ui.vertical_centered(|ui| kicker(ui, "Balance"));
ui.add_space(6.0);
amount_text(ui, &amount_str(atomic), size);
amount_text_centered(ui, &amount_str(atomic), size);
if let Some(fiat) = fiat {
ui.add_space(4.0);
ui.label(
RichText::new(fiat)
.font(FontId::new(13.0, fonts::regular()))
.color(t.text_dim),
);
ui.vertical_centered(|ui| {
ui.label(
RichText::new(fiat)
.font(FontId::new(13.0, fonts::regular()))
.color(t.text_dim),
);
});
}
}