Skip to content

Let people read a market without a wallet - #78

Open
Enochthedev wants to merge 1 commit into
wavedidwhat/gho-30-show-users-the-terms-of-their-positionfrom
wavedidwhat/gho-44-a-first-time-visitor-meets-a-wallet-prompt-and-nothing-else
Open

Let people read a market without a wallet#78
Enochthedev wants to merge 1 commit into
wavedidwhat/gho-30-show-users-the-terms-of-their-positionfrom
wavedidwhat/gho-44-a-first-time-visitor-meets-a-wallet-prompt-and-nothing-else

Conversation

@Enochthedev

Copy link
Copy Markdown
Collaborator

Closes GHO-44.

Stacked on #77 — the landing figures come from useLendingTerms, which that PR adds. Review after it merges, or base-diff only.

Every screen was gated, so the app's public surface was a button, and nothing anywhere said what GhostStake does.

Almost nothing had to change: useRounds already keeps the per-address batch separate, so pools, phases and countdowns already resolved disconnected. The whole gate was position.decimals — a property of the asset, reached through the per-address hook. Exports useVaultAsset.

  • /markets and /markets/[market] read without a wallet. The market page was not in the issue, but GHO-41 made a market's address its URL so it could be shared, and a shared link answering "connect a wallet" cannot show the recipient what they were sent. The round page under it was already public.
  • Side buttons stay live and answer with a connect prompt — a disabled control explains nothing, and this way the ask lands after they have seen the pool and the countdown.
  • A landing surface: the three steps, and "what happens when it goes against you" in body type, because the debt surviving a losing position is the most important fact here and the easiest to skip.
  • formatOptional promoted to lib/format.tstsc caught the value && format(value) trap a second time, unprompted.

Verified against the prerendered HTML (which previously shipped the gate) and by curling the dynamic market route. Detail in ADR 0045 and runbook Part 7.52.

Every screen was gated, so the app's entire public surface was a button
and nothing anywhere said what the product does.

Pools, phases and countdowns were already public — useRounds keeps the
per-address batch separate. The only thing forcing a connection was the
asset's decimals, fetched through useVaultPosition, whose purpose is
per-address state. Exports useVaultAsset instead.

The market page is ungated too: GHO-41 made a market's address its URL so
it could be shared, and a shared link answering "connect a wallet" cannot
show the recipient what they were sent.

Adds a landing surface stating the mechanism, and what happens when a
position goes against you at the same size as what happens when it does
not. Side buttons stay live and answer with a connect prompt, so the ask
arrives once there is a reason to say yes.
@linear-code

linear-code Bot commented Aug 28, 2026

Copy link
Copy Markdown

GHO-44

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