1
0
forked from GRIN/grim
Commit Graph

59 Commits

Author SHA1 Message Date
Claude b1b9bd61af Build 13: hosted profile pictures, username release, claim/release UX
Identity overhaul (server changes deployed to goblin.st separately):

Avatars
- profile pictures hosted on goblin.st, tied to the username: tap the
  settings avatar → native image picker → 256px PNG uploaded over Tor
- letter avatars now use (background, ink) color pairs (8) keyed off the
  npub, and render the first ALPHANUMERIC char — never the '@'
- custom pictures shown everywhere self/contacts appear: settings card,
  home header, sidebar chip, peers strip, activity rows, send recipient
- AvatarTextures: disk cache (~/.goblin/cache/avatars) + background Tor
  fetch + egui textures loaded on the UI thread; a network/Tor failure
  is never cached as "no avatar" (would have stuck for 6h)
- nostr/avatar.rs mirrors the server's sniff→limits→orientation→crop→
  256→re-encode-PNG pipeline so uploads are small and previews instant

Username lifecycle
- rotating the key now RELEASES the username (and deletes its avatar
  server-side) instead of transferring; rotation aborts if release fails
- claim panel is one Claim button (checks then registers); registered
  state shows "Registered <name>" + a Release action behind an
  are-you-sure gate ("up for grabs the moment it's free")
- released names are immediately re-claimable (quarantine removed)

Other
- Tor::http_request_bytes: binary bodies + status code, for upload and
  avatar download (string http_request kept as a wrapper)
- settings reordered Identity-first, then Wallet
- sidebar node card is 3 lines: status / block height / host
- profile card shows the full npub when it fits, else head…tail

34 lib tests green. Live-verified on goblin.st: upload→serve (image/png,
nosniff, immutable)→5/day limit (6th 429)→release purges avatar; a real
picture for @fartmuncher22 fetched over Tor and rendered across surfaces.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 12:22:41 -04:00
Claude d8cf06b577 Build 9: QR scan, camera fixes, first-run onboarding, sweep fixes
Camera/QR (validated live with a v4l2loopback virtual camera):
- decode non-MJPEG frames on Linux (raw YUYV was undecodable: eternal
  spinner), enumerate devices off the UI thread without unwrap, open
  cameras by their real device index (list position broke whenever
  /dev/video0 was absent), show "No camera found" after 5s
- scan-to-pay: QR button in the send recipient search row and the
  mobile home header; in-surface camera panel feeding recipient
  resolution; only text payloads accepted (seeds/slatepacks refused)
- receive QR was unscannable: full cells (0.5px gaps fragmented finder
  patterns at 4.5px cells), always ink-on-white plate (inverted codes
  fail many scanners), center mark 26% -> 19% (zbar chokes above);
  rqrr+zbar both decode the live card now; unit tests cover the exact
  widget geometry

First-run onboarding (replaces the stock empty state only; the wallet
list, add-wallet modal and GRIM creation flow stay for later wallets):
- intro -> node choice (Private integrated / Instant external with
  URL) -> create or restore (wraps MnemonicSetup; word grid, paste,
  SeedQR scan) -> optional @username claim with prominent skip
- fonts bind at creation context so frame one can use Geist families

Sweep fixes (22 confirmed findings, the simple ones):
- yellow theme: active sidebar nav was dark-on-dark (P1)
- window frame ring painted with theme bg: transparent clear color
  rendered as a black band without a compositor (P2)
- import/rotate identity inputs get visible field wells (P2)
- receive buttons: verb labels + transient "Copied" feedback
- review hero card fills the column; fee row copy; pay-tab stale and
  duplicated hints; unlock modal copy; node card subtitle truncation
- build number stays current (.git/logs/HEAD rerun trigger)

Backup restore: import accepts the export-time password and re-encrypts
under the current wallet password; cross-device restores work.

31 lib tests green. Mainnet-validated: both flows restored real
wallets; 0.1 grin sent B->A through NIP-17 over Tor with async
open/close ping-pong; tx 71fbfce4f591 posted on-chain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 04:07:53 -04:00
ardocrat 4aeda9c9dc build: v0.3.6, format code 2026-05-21 00:56:28 +03:00
ardocrat 0026fc3717 build: fix android no_mangle attributes for rust 2024 2026-04-11 23:12:56 +03:00
ardocrat 9bb5f1d66a camera: update nokhwa to 0.10.10
Update camera lib, also to avoid git dependency for macos.

Reviewed-on: https://code.gri.mw/GUI/grim/pulls/40
2026-02-07 09:10:20 +00:00
ardocrat 4ef5dd839d platform: pick folder 2025-05-31 15:44:24 +03:00
ardocrat d11e90226b feat: software keyboard (without language switch) 2025-05-23 19:20:42 +03:00
ardocrat eb60c52224 macos: use nokhwa camera dependency 2025-03-29 21:18:53 +03:00
ardocrat ebd09ab1c8 camera: update nokhwa, eye for macos, ability to switch camera when another camera not loaded 2024-10-26 23:25:55 +03:00
ardocrat af220b2a09 camera: remove eye-rs to fix build for mac, horizontally flip image 2024-10-08 23:23:04 +03:00
ardocrat 3e249c5314 android: share file type 2024-09-20 00:16:12 +03:00
ardocrat c3fae38d5c desktop: open camera check 2024-09-15 15:54:07 +03:00
ardocrat 8594279b98 android: java call result fixes 2024-09-13 21:08:14 +03:00
ardocrat c73cd58eed platform: android file opening, better exit 2024-09-13 14:22:15 +03:00
ardocrat d78ec570b0 platform: passed data at lib, desktop user attention, check existing file on share at android 2024-09-12 21:27:37 +03:00
ardocrat fb7312cb80 desktop: request window focus on data 2024-09-11 21:13:52 +03:00
ardocrat dbc28205e8 desktop: parse file content from argument on launch, single app instance, wallets selection and opening modals refactoring 2024-09-11 17:01:05 +03:00
ardocrat 2196fbefa6 build: macos camera fix, update dependencies, initial cargo-bundle setup, update icons 2024-06-17 14:31:55 +03:00
ardocrat d16624d423 android: pick file 2024-06-06 15:02:32 +03:00
ardocrat be80e82727 ui: file picker button for slatepacks messages (text parsing), check if tx was synced from node, do not show txs actions on wallet loading 2024-06-04 22:50:41 +03:00
ardocrat 9fbb76968c desktop: glow renderer fallback support 2024-06-03 18:34:13 +03:00
ardocrat 32f8bd11de ui: dark theme support, setup by default from system, settings 2024-05-29 22:47:17 +03:00
ardocrat 5689be4579 android: images sharing 2024-05-28 00:59:28 +03:00
ardocrat 00fd12cd2a qr: export to gif and png 2024-05-27 16:53:18 +03:00
ardocrat 9d79629314 desktop: nokhwa camera lib 2024-05-21 14:12:26 +03:00
ardocrat 8073fdbef2 android: build warnings 2024-05-21 01:40:25 +03:00
ardocrat 098d0a9611 ui: hidden scrollbar, wallet sync indicator 2024-05-17 21:37:29 +03:00
ardocrat 8b579c088f build: warnings, unused dependency 2024-05-17 18:32:22 +03:00
ardocrat 5f976e9166 camera: image rwlock optimization 2024-05-15 14:50:17 +03:00
ardocrat 11ac0ea84b camera: desktop support, switch camera, fix image crop 2024-05-03 23:34:28 +03:00
ardocrat 7267bf6441 camera: desktop support 2024-05-03 22:10:19 +03:00
ardocrat ef5fd29612 android + ui: update target sdk, add camera support, camera control from native code, camera view, qr scan modal 2024-05-03 19:51:57 +03:00
ardocrat b93a2efd5e build + android + wallet + ui: new lib to get IPs, egui, android and grin deps, add input from soft keyboard to text edit, receive txs, filter txs by account, finalize input (in rework), wallet creation copy/paste buttons 2024-04-16 15:24:22 +03:00
ardocrat 6788b0fe02 desktop: fix clipboard paste 2023-11-08 00:44:44 +03:00
ardocrat 36296f647d desktop: add arboard dependency to manage clipboard 2023-08-17 16:45:46 +03:00
ardocrat 80a04596df android: update activity lib, optimize app exit 2023-08-01 01:03:51 +03:00
ardocrat e529c011b0 build: remove unused imports and mutability 2023-07-21 03:56:46 +03:00
ardocrat c20ee3e629 ui + build: title panel refactoring, check node idle state for network title animation, optimize font sizes, run build on several devices for Android 2023-07-14 03:51:06 +03:00
ardocrat dbe178f792 android + ui: display cutouts (insets) refactoring, optimize platform-specific app, reorganize views 2023-07-14 00:55:31 +03:00
ardocrat 1b8c126e0d ui: refactoring navigation and modal state, stratum content fixes 2023-07-13 03:54:27 +03:00
ardocrat 15d57bc968 ui: exit confirmation at desktop 2023-07-11 23:36:48 +03:00
ardocrat 88f92d51b3 build: fix build for desktop 2023-07-11 16:23:10 +03:00
ardocrat 3b2d3ab202 node + config + ui: fork stratum server to handle state on node start/stop, complete stratum configuration, complete node server config, settings ui refactoring, update i18n lib 2023-07-03 21:17:49 +03:00
ardocrat 5bf09e4350 android: copy/paste from clipboard 2023-06-30 21:25:06 +03:00
ardocrat b91bc2f7e7 build: optimize imports 2023-06-15 23:54:41 +03:00
ardocrat de7be791a9 ui: refactor app creation and styles setup for different platforms 2023-06-02 22:55:07 +03:00
ardocrat ffc68bc6ae ui: setup buttons style, add server loading progress for node and metrics, optimize node status 2023-06-02 21:19:34 +03:00
ardocrat d3e81826e8 ui: modals, exit modal, app exit logic on Android, refactor display cutouts, optimize translations 2023-06-02 02:05:34 +03:00
ardocrat c3ce297373 android: refactor display cutouts 2023-05-31 21:38:27 +03:00
ardocrat f4ec1b9ab0 gui: added node metrics, refactor views 2023-05-18 03:53:38 +03:00