-
-
+
+
- {demo.searching && (
-
- searching the network
-
-
- )}
-
-
diff --git a/website/src/components/tui/panes.tsx b/website/src/components/tui/panes.tsx
index 4e5854b..7bb8344 100644
--- a/website/src/components/tui/panes.tsx
+++ b/website/src/components/tui/panes.tsx
@@ -6,7 +6,7 @@ import { TuiPane } from './chrome'
import type { ResultRow, SearchRow, TransferRow, TransferStatus } from './data'
const RESULT_COLS = '30px 1fr 74px 92px 78px 74px 42px'
-const TRANSFER_COLS = '48px 1fr 96px 150px 74px'
+const TRANSFER_COLS = '48px 1fr 96px 168px 74px'
interface SearchesPaneProps {
searches: readonly SearchRow[]
diff --git a/website/src/pages/docs.tsx b/website/src/pages/docs.tsx
index 0c23098..90691ed 100644
--- a/website/src/pages/docs.tsx
+++ b/website/src/pages/docs.tsx
@@ -25,10 +25,21 @@ const GLOBAL_KEYS: readonly (readonly [string, string])[] = [
['i', 'inbox (unread counter)'],
['/', 'filter the current list'],
['a / A', 'select all / none'],
- ['1–3', 'focus a pane'],
+ ['?', 'every key, grouped by pane'],
['q', 'quit'],
]
+const PANE_KEYS: readonly (readonly [string, string])[] = [
+ ['Tab · ⇧Tab', 'next / previous pane'],
+ ['1–3', 'focus a pane, and bring it back if hidden'],
+ ['z', 'zoom the focused pane to the whole window'],
+ ['w', 'hide the focused pane; the others widen'],
+ ['↑ ↓ · j k', 'move a row in any list'],
+ ['Home End · g G', 'first / last row'],
+ ['PgUp PgDn · ^u ^d', 'a page, or half a page; in a chat, back through the log'],
+ ['h l · ← →', 'scroll a long name or query sideways, 0 and $ to either end'],
+]
+
const ROOM_KEYS: readonly (readonly [string, string])[] = [
['Enter', 'join room / send message'],
['Tab · ⇧Tab', 'switch between open rooms'],
@@ -40,16 +51,16 @@ const ROOM_KEYS: readonly (readonly [string, string])[] = [
]
const PANES: readonly { num?: number; title: string; body: string }[] = [
+ {
+ num: 2,
+ title: 'Results',
+ body: 'Files from the network across the whole width: size, user, bitrate, speed, free slots. Space selects, Enter queues a download. h/l or ←/→ scroll a long name, 0 and $ jump to either end.',
+ },
{
num: 1,
title: 'Searches',
body: 'Your queries and how many results each returned. Press s to search the network; each search keeps its own result set.',
},
- {
- num: 2,
- title: 'Results',
- body: 'Files from the network: size, user, bitrate, speed, free slots. Space selects, Enter queues a download. h/l or ←/→ scroll a long name, 0 and $ jump to either end; Home/End, g/G, PgUp/PgDn and Ctrl-f/b/d/u move through the list.',
- },
{
num: 3,
title: 'Downloads / Uploads',
@@ -106,8 +117,10 @@ const FirstRun = () => (
const Layout = () => (
- The whole client is these four boxes. Press 1–3 to focus
- one; the focused pane’s legend turns green.
+ The whole client is these four boxes: results across the top, the rest in a row
+ underneath. Tab or 1–3 focuses one and its legend
+ turns green; z gives it the whole window, w hides it so the
+ others widen.
@@ -127,7 +140,8 @@ const Layout = () => (
const Keys = () => (
- The bottom bar always shows the keys for where you are. The essentials:
+ The bottom bar always shows the keys for where you are, and ? lists every
+ one. The essentials:
@@ -138,6 +152,16 @@ const Keys = () => (
))}
+
+
panes and lists
+
+ {PANE_KEYS.map(([combo, description]) => (
+
+ ))}
+
+
+
+
in the chat-rooms popup (press c)