Skip to content

Finish campaign features: orphaned wiring, network-mismatch guard, real fees, standalone + typecheck gate#905

Merged
Ejirowebfi merged 3 commits into
mainfrom
finish/campaign-issues-polish
Jul 1, 2026
Merged

Finish campaign features: orphaned wiring, network-mismatch guard, real fees, standalone + typecheck gate#905
Ejirowebfi merged 3 commits into
mainfrom
finish/campaign-issues-polish

Conversation

@Ejirowebfi

Copy link
Copy Markdown
Collaborator

Completes the merged campaign issues and fixes a few correctness gaps so the app works end-to-end. Supersedes #904 (this branch contains that work plus the items below).

1. Wire orphaned (built-but-invisible) features

  • Mount OnboardingModal (Help button now works; no longer auto-overlays on first visit).
  • Render FeeDisplay (real fee + USD) in the create and mint flows.
  • Render AnalyticsOptOut in a footer (privacy opt-out reachable).
  • Add /activity route rendering TransactionHistory → unlocks CSV export + polling.
  • Wire FAQ to a /faq route + nav link.

2. standalone network gap

  • Add standalone to NetworkSwitcher badge colors and both explorer/URL helpers (E2E CI builds with VITE_NETWORK=standalone) and the StellarService/network-helper chain.

3. Typecheck gate in CI

  • Add a typecheck script + a tsc --noEmit job to .github/workflows/ci.yml (CI previously never ran tsc). Fixed all 88 pre-existing type errors so the gate is green.

4. Network-mismatch safety feature

  • Mount NetworkMismatchBanner (warns when Freighter's network ≠ the app's).
  • Wire useNetworkGuard into create/mint/burn: submit is disabled with a reason on mismatch.

5. Correctness / cleanup

  • Pay the real on-chain base_fee in create + mint (was hardcoded 0.01 XLM; contract rejects fee_payment < base_fee, so the hardcode would fail InsufficientFee).
  • Fix a latent unit bug: formatXLM expects stroops but was passed converted XLM (Cannot convert 0.01 to a BigInt).
  • Make token-detail routes public so deep links (fix(routing): fix deep-link for /token/:address and add e2e tests #880) work without a wallet.
  • README repo URLs EjirowebfiFavourorg (actual origin).
  • Remove dead-duplicate WalletConnectButton.tsx.

Verification

Known risks / follow-ups

  • The feePayment change touches the signed-tx path, which can't be verified headlessly (no Freighter/testnet in CI). Logically correct + unit-tested; smoke-test on testnet before release.
  • useNetworkGuard is wired into create/mint/burn only; MetadataForm/AdminPanel still rely on the banner's warning.
  • TokenCreateForm.tsx left in place — a richer unused create flow, not a pure duplicate; adopt-or-remove is a product call.

Ejirowebfi and others added 3 commits July 1, 2026 14:03
…ingleton

The module stellarService singleton is never setNetwork-synced (nothing calls
it), so it stays on the default testnet. Now that FeeDisplay is rendered in
TokenForm, reading fees from that singleton would show testnet fees on a
mainnet deployment. Switch to useFactoryState (env-resolved network, same
source as the rest of the app) and drop FeeDisplay's stale module cache.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…plicate, fix repo URLs

Finish merged-but-unwired campaign features:
- Render NetworkMismatchBanner (from NetworkBadge.tsx) in App — it warns when
  Freighter's network differs from the app's; it was built but never mounted.
- Add a /faq route + NavBar link for the FAQ page, which existed but was never
  routed.
- Remove WalletConnectButton.tsx, a dead duplicate of the actively-used
  UI/WalletButton (never imported anywhere).
- README: point deploy/docs/issues links at Favourorg/Stellar-forge (the actual
  origin) instead of the stale Ejirowebfi URLs.
…rites on network mismatch

- Create + mint now pay the on-chain base_fee (from useFactoryState) instead of
  a hardcoded 0.01 XLM. The contract rejects create/mint when fee_payment <
  base_fee, so the hardcode would fail InsufficientFee on any factory whose fee
  is above 0.01 XLM.
- Render FeeDisplay (real fee + USD) in the mint flow; drop the hardcoded
  ESTIMATED_FEE display constants.
- Fix a latent unit bug in FeeDisplay/MintForm: formatXLM expects stroops but was
  passed already-converted XLM, which throws 'Cannot convert 0.01 to a BigInt'
  for fractional fees (dormant only because FeeDisplay was orphaned).
- Wire useNetworkGuard into create/mint/burn: submit is disabled with a reason
  when Freighter's network differs from the app's, completing the mismatch guard
  alongside the NetworkMismatchBanner.
@Ejirowebfi Ejirowebfi merged commit 660b847 into main Jul 1, 2026
9 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