aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-04 00:09:47 -0700
committerAdam Soltys <[email protected]>2026-08-04 00:09:47 -0700
commitb75db0949961bb3b8c1b7e3b46e1ad0e4733ae8e (patch)
tree3bce078cdafb521786a866b70b1af2fa4587335b /tools
parentd8964bdf6f047d058731edfae6d07e57106661c8 (diff)
downloadcoinosv3-b75db0949961bb3b8c1b7e3b46e1ad0e4733ae8e.tar.gz
coinosv3-b75db0949961bb3b8c1b7e3b46e1ad0e4733ae8e.zip
One question fewer on the way in, and an 'or' that means it
The sign-in screen stacked 'Connect a signer app' directly above a bunker/nsec field, which reads as two steps rather than two ways in. A divider says which it is. The wizard's second step asked whether you have a nostr account, then sent you to a screen that asks the same thing. Step one now offers both paths directly — Get started, or sign in with Nostr — and the middle step is gone, along with its strings. The welcome blurb goes too: the screen is one decision, and prose above it is something to read before you can make it. The footer sinks to the bottom of the window rather than trailing the content up the page. #app is a full-height column now; the chat card sizes itself against the viewport, so the layout test covers it at three sizes. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Wvj4aoeMZwA7VUGdJP9Swi
Diffstat (limited to 'tools')
-rw-r--r--tools/chat-layout-test.js3
1 files changed, 3 insertions, 0 deletions
diff --git a/tools/chat-layout-test.js b/tools/chat-layout-test.js
index ef86291..f39b87e 100644
--- a/tools/chat-layout-test.js
+++ b/tools/chat-layout-test.js
@@ -115,6 +115,9 @@ try {
await page.evaluate(() => { const i = document.querySelector('input[placeholder*="channel" i]'); const b = i && i.parentElement.querySelector('button'); if (b) b.click(); });
for (let i = 0; i < 60 && !(await page.$('.chan-pick')); i++) await sleep(500);
+ // the picker appears on the relay echo, which can beat createChannel's own
+ // continuation — give the field a moment to put itself away
+ for (let i = 0; i < 20 && (await page.$('input[placeholder*="channel" i]')); i++) await sleep(500);
const two = await page.evaluate(() => {
const sel = document.querySelector('.chan-pick');
return { picker: !!sel, tag: sel && sel.tagName, opts: sel ? [...sel.options].map((o) => o.textContent) : [], field: !!document.querySelector('input[placeholder*="channel" i]') };