Skip to content

Feat/sui - #8

Merged
Emmyhack merged 5 commits into
mainfrom
feat/sui
Oct 9, 2026
Merged

Emmyhack merged 5 commits into
mainfrom
feat/sui

Conversation

@Emmyhack

@Emmyhack Emmyhack commented Oct 9, 2026

Copy link
Copy Markdown
Owner

No description provided.

The worst one first: on decimal-comma locales the numeric keyboard types a comma, and the
amount parser stripped commas as thousands separators — '1,5' silently became 15, a
tenfold overpayment with no error anywhere. Amounts are now normalised by the device's own
decimal separator before parsing, with the other character treated as grouping.

The rest, each found by reading the code the way a bad day uses it:

- A failed background poll no longer evicts a healthy screen: react-query keeps the data,
  so error states now render only when there is nothing to show. One dropped packet in a
  tunnel used to replace the dashboard with 'could not reach the vault'.
- Android notifications get an explicit high-importance channel; without one, 8.0+ treats
  pushes as minimum-importance — no heads-up, no sound, sometimes nothing at all.
- The QR scanner accepts one hit per opening: the camera reports the same code every
  frame, which double-closed the sheet and set state after unmount.
- Sheets carry their own keyboard avoidance — a Modal escapes the screen-level one, so
  every input-bearing sheet (add member, invite, policy editor, profile) hid its field
  behind the iOS keyboard.
- Screens without a top bar start below the status bar / Dynamic Island instead of under
  the clock.
- A proposal outside the fetched window says so instead of reading forever (stale
  notification taps land somewhere honest).
- Every external open (mailto, docs, issues) is caught: a device with no mail client
  rejected the promise unhandled.
- The splash holds until fonts exist instead of flashing a bare canvas.
- The unused wallet-relay dependencies are out of the manifest.

60 tests, typecheck clean, both platforms bundle, verify.sh 11/11.
…llet is asked

A wallet extension follows its own network switch, and signing from a mismatched network
or an empty account came back as a blank '{}' error in the console and nothing useful on
screen. The card now reads the connected account's SUI balance on the app's network first
and says plainly when it cannot cover the ~0.4 SUI a publish costs; the network is pinned
on the sign call; and a blank wallet error is translated into the two causes it almost
always means.
…o longer hijack signing

dApp Kit persists the selected network in the browser. Offering the full network list let a
leftover localnet selection from an earlier session be restored over the build's own
setting, so sign requests went out stamped sui:localnet — the wallet answered with an empty
error and showed localhost in its prompt while the page claimed testnet. The kit now
registers exactly the network the app was built for; there is nothing stale to restore.
…ly signs

Every blank '{}' failure so far was born inside the wallet's own machinery — its preview,
its build, its execute, each running against whatever network the extension happens to be
on. The flow now leaves it nothing to get wrong: the page builds the transaction bytes
against its own testnet client (gas selection included), hands the wallet raw bytes to
sign, and executes the signed bytes through the same client, reading the package id out of
the effects (the one immutable created object). The wallet's one remaining job is the one
only it can do.
…he entry page sheds its word-weight

Vault creation failed exactly the way publishing did — through the wallet's own execute
machinery. There is now one submission path for the whole app (lib/execute): build the
bytes against our client, hand the wallet raw bytes to sign, execute the signed bytes
ourselves. useVaultTx and the publish card both ride it, so create/approve/execute/policy
all stop depending on anything wallet-side but the signature. The Create tab also offers
the publish card while no package exists, instead of a form that cannot possibly succeed.

And the page says less: one-line hero, one-line card hints, policy cards without the
audience essay, roles note cut to its point.
@Emmyhack
Emmyhack merged commit 8a266a1 into main Oct 9, 2026
1 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant