diff --git a/public/my.js b/public/my.js index e5e7eee..31a5610 100644 --- a/public/my.js +++ b/public/my.js @@ -325,7 +325,7 @@ const err=document.getElementById('msgAuthErr'); try{ const eth=await window.RMCWallet.pick(); - if(!eth){err.textContent='No wallet found in this browser. On a phone, open your wallet app (SafePal, Phantom, MetaMask, Trust, Coinbase…), go to its Browser or DApp tab, and type this page\'s address there — your wallet connects automatically.';return;} + if(!eth){err.textContent='This browser has no wallet in it. Open this page INSIDE your wallet app instead: open Trust, MetaMask, SafePal or Coinbase, find its Browser (or DApps) tab, and type rmcircle.team/my into that address bar. On iPhone, Trust no longer has a browser — use MetaMask or SafePal, or ask your sponsor to link you instead.';return;} const accs=await eth.request({method:'eth_requestAccounts'});const account=accs[0]; // Match the wallet's active chain to the SIWE message's Chain ID (137), // or the wallet rejects the signature ("chain ID does not match"). diff --git a/public/suite.js b/public/suite.js index 683c85a..ba49a32 100644 --- a/public/suite.js +++ b/public/suite.js @@ -104,7 +104,7 @@ btn.disabled = true; btn.textContent = 'Connecting…'; try { var eth = await window.RMCWallet.pick(); - if (!eth) { err.textContent = 'No wallet found in this browser. On a phone, open this page inside your wallet app’s browser (the DApps tab) — type rmcircle.team/suite there.'; err.style.display = 'block'; btn.disabled = false; btn.textContent = '🔑 Connect wallet — light up my tools'; return; } + if (!eth) { err.textContent = 'This browser has no wallet in it. Open this page INSIDE your wallet app instead: open Trust, MetaMask, SafePal or Coinbase, find its Browser (or DApps) tab, and type rmcircle.team/suite into that address bar. On iPhone, Trust no longer has a browser — use MetaMask or SafePal, or ask your sponsor to link you instead.'; err.style.display = 'block'; btn.disabled = false; btn.textContent = '🔑 Connect wallet — light up my tools'; return; } var accs = await eth.request({ method: 'eth_requestAccounts' }); var account = accs[0]; try { await window.RMCWallet.ensureChain(eth); } catch (ce) {} diff --git a/suite-pages.js b/suite-pages.js index 10b5de1..323ebeb 100644 --- a/suite-pages.js +++ b/suite-pages.js @@ -147,6 +147,21 @@ function esc(s) { }); } +// House style puts the last beat of a heading in gold ("Team Grants."). +// These headlines are written by the model, so we cannot hand-pick the split — +// take the final two words, or the last one when the line is short. Everything +// is escaped first; the only markup added is our own span. +function goldTail(text) { + const t = String(text || '').trim(); + if (!t) return ''; + const words = t.split(/\s+/); + if (words.length < 3) return esc(t); + const take = words.length >= 6 ? 2 : 1; + const head = words.slice(0, words.length - take).join(' '); + const tail = words.slice(words.length - take).join(' '); + return esc(head) + ' ' + esc(tail) + ''; +} + function render(rec) { const a = ANGLES[rec.angle] || ANGLES.overview; // The button and the QR go to DIFFERENT places on purpose. @@ -177,10 +192,15 @@ function render(rec) { '' + '