feat: agent onboarding, governance overview, wallet transfer, ballot UX
- Bot onboarding for AI agents: public /bot-setup page, agent-readable
/api/v1/botSetupGuide markdown endpoint, /llms.txt discovery, and a
"Copy agent prompt" button on the user Bot accounts card so any AI
agent pointed at the instance URL can register itself end-to-end.
- Cross-instance wallet transfer: new /api/v1/wallet/transfer/export
(owner JWT) and /api/v1/wallet/transfer/import endpoints with a
shared WalletTransferPayloadV1 type. UI exposes "Transfer wallet"
on the wallet info page (download JSON or push directly to a remote
instance URL, optional contacts/ballots payloads) and "Import
Transfer" on the wallets list page. Imports land as NewWallet so the
existing invite/claim flow takes over.
- Governance overview improvements:
- Wallet governance dashboard summary card (proposal status counts,
ballot progress, voting power, last ballot activity)
- Live network stats strip on the public /governance landing
- DRep list aggregate header, active/inactive filter, surfaced
active_epoch and hex per row
- Proposal detail "Your ballot entry" (rationale + anchor) and
"Technical details" sections surfacing fields that were already
fetched but never rendered
- Ballot UX + standalone rationale: shared rationale module
(build JSON-LD, hash, upload to IPFS, load-from-URL) and a reusable
RationaleEditor component. The vote card now offers an "Attach
voting rationale" toggle so a user can attach a CIP-100 anchor to a
single-proposal vote without creating a Ballot. VoteButton threads
the anchor through to txBuilder.vote(). Ballot summary now reports
rationale-uploaded / draft counts; moving a proposal between
ballots is gated by a Keep / Add to both / Move here dialog instead
of silently relocating it.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>