From b75db0949961bb3b8c1b7e3b46e1ad0e4733ae8e Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 4 Aug 2026 00:09:47 -0700 Subject: One question fewer on the way in, and an 'or' that means it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01Wvj4aoeMZwA7VUGdJP9Swi --- tools/chat-layout-test.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'tools') 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]') }; -- cgit v1.2.3