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
- 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.
- 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.
- 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.
- 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.
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)
Tv51YDVeJGToa6rg8PhgyuzULgD69CEQi2hMCagTKBm, supply 7,654,321,createFungible.3UdVtSWq5rZskPw3Esq1vVot8cTtpFzJUvxFhNdVC5MB,createNonFungible, printable supply 1,000,000, master-holding print control, metadata stored on-chain.token.binbuilt via the official Docker guest path; its ProgramId matched the token program deployed on testnet, soTOKEN_PROGRAM_BIN"just worked".Findings, ranked
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.rejecting unauthorized call to list_accounts - auth token not recognizedduring 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.