Skip to content

token_ui + wallet dogfooding on testnet: sync is invisible to the user (+ submit-lock, index de-dup) #359

Description

@xAlisher

TL;DR: Built token_module + token_ui + lez_core from current source, ran them in Basecamp against testnet.lez.logos.co, and minted a fungible token and a named NFT end-to-end. The app works and the UX is polished. Six friction findings; the biggest is that a fresh wallet's sync is invisible, so it reads as frozen. Filing as EcoDev dogfooding feedback (would tag from-echodev; I can't apply that label from my account).

What we did (evidence, on testnet)

  • Fungible "Fixed supply token": definition Tv51YDVeJGToa6rg8PhgyuzULgD69CEQi2hMCagTKBm, supply 7,654,321, createFungible.
  • NFT "EcoDev Glitchlings": definition 3UdVtSWq5rZskPw3Esq1vVot8cTtpFzJUvxFhNdVC5MB, createNonFungible, printable supply 1,000,000, master-holding print control, metadata stored on-chain.
  • token.bin built via the official Docker guest path; its ProgramId matched the token program deployed on testnet, so TOKEN_PROGRAM_BIN "just worked".

Findings, ranked

  1. The sync is invisible to the user (wallet / lez_core). A fresh wallet cold-syncs the full chain (~117s for 42,790 blocks) with no progress surfaced. The create-wallet modal is static during this, so it looks hung. And after the initial sync the block poller goes idle, so a tx that is already confirmed keeps showing "Pending" until a manual disconnect/reconnect. lez_core already logs Syncing to block N. Blocks to sync: M — surface that in the modal (progress / block count) and keep a live poller (or make Refresh actually re-sync). This one cluster is most of the perceived pain.
  2. No submit-lock (token_ui). The Review "Create" button has no debounce; a double-click fires two txs against the same fresh accounts. The chain dedupes to one definition, but the UI shows duplicate pending rows. Suggest disabling the button after first submit.
  3. Index de-dup (token_ui). One definition lists as multiple rows, mixing pending/confirmed state and base58/hex identity forms, so one token reads as several.
  4. Startup capability-token race (wallet). Transient rejecting unauthorized call to list_accounts - auth token not recognized during the ~3s init window; it self-heals, but a slower host could hit a real failure. Suggest awaiting/retrying the handshake rather than rejecting on a fixed 3s window.

Positives

token_ui UX is genuinely good (3-step create, live summary, readiness gating, an Inspect view that explains NFT master-holding print control); reproducible guest build gave a matching ProgramId with no manual wrangling; no funding was needed for definition creation.

Layer note

Findings 1 and 4 are lez_core (wallet); 2 and 3 are token_ui. Happy to split into separate issues or move the wallet ones to logos-execution-zone if you prefer. Full run notes tracked internally.

Env

Built from current lez-programs + lez_core byte-string-fix; run in Basecamp (inspector bundle) against testnet.lez.logos.co, 2026-09-08.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions