diff --git a/apps/web/app/apps/page.tsx b/apps/web/app/apps/page.tsx index 06ddaa8..2d37297 100644 --- a/apps/web/app/apps/page.tsx +++ b/apps/web/app/apps/page.tsx @@ -69,6 +69,90 @@ const APPS: App[] = [ "The analyser is drawn on the braille canvas — four vertical pixels per character cell, which " + "is why the bars move smoothly instead of stepping through eight block glyphs.", }, + { + shot: "diskpush", + name: "diskpush", + tagline: "Two panes and an rsync between them", + repo: "https://github.com/profullstack/diskpush", + install: "bunx diskpush", + body: + "Local on one side, an SSH host on the other, and a transfer panel that shows the plan before " + + "it runs and every path as it lands. rsync does the work; the interface exists so you can see " + + "what it is about to do.", + found: + "The transfer panel updates several times a second against a full file listing, which is where " + + "a renderer that diffs frames stops being an optimisation and starts being the reason it is usable.", + }, + { + shot: "threatcrush", + name: "ThreatCrush", + tagline: "A security daemon you can watch", + repo: "https://github.com/profullstack/threatcrush", + install: "threatcrush tui", + body: + "Modules, a live event feed, top threats and a severity breakdown, fed by a daemon over a unix " + + "socket. When no daemon is running it says so and tells you how to start one, rather than " + + "filling the screen with invented attacks.", + found: + "Rendering to a buffer made three header and truncation defects into ordinary failing tests. " + + "They had been invisible because the old build wrote escape codes straight to stdout.", + }, + { + shot: "coinpay", + name: "CoinPay", + tagline: "A merchant's money, in one screen", + repo: "https://github.com/profullstack/coinpayportal", + install: "coinpay finances", + body: + "Earnings, bank position and pipeline across seven screens, with a live payment feed over " + + "server-sent events. Bank syncs are a keypress, never automatic — the bridge allows about " + + "24 pulls a day.", + found: + "Every figure here is a fixture. It is the one app on this page whose real screen cannot be " + + "published, which is its own kind of design constraint.", + }, + { + shot: "myna", + name: "myna", + tagline: "Post once, everywhere", + repo: "https://github.com/profullstack/mynaposter", + install: "bunx myna", + body: + "Compose in the terminal and publish to every network you have connected, with per-network " + + "character counts and thread splitting shown as you type. Credentials live in an encrypted " + + "vault the interface never reads.", + found: + "The screen had to be lifted out of the app loop to be captured at all. That refactor is what " + + "made its layout testable, which it had never been.", + }, + { + shot: "logicsrc", + name: "logicsrc", + tagline: "Team vaults, without the plaintext", + repo: "https://github.com/profullstack/logicsrc", + install: "logicsrc teams tui", + body: + "Which vaults exist, what their secrets are called, who can decrypt them and what changed. It " + + "never fetches a decryption key and has no keybinding that would: a value that can appear on " + + "screen can appear in a screen share.", + found: + "Being metadata-only is why this is the one screenshot here taken from something close to a " + + "real shape without redaction.", + }, + { + shot: "tsbb", + name: "tsbb", + tagline: "A message board in your terminal", + repo: "https://github.com/profullstack/tsbb", + install: "bunx tsbb", + body: + "Forums, topics, threads, search and notifications against any tsbb board. Unread, solved and " + + "locked are glyphs in the margin rather than colours alone, so the list still reads on a " + + "terminal with no colour at all.", + found: + "Its views were pure functions of state from the start, which is why the whole client is " + + "asserted on as text rather than described in a test.", + }, ]; export default async function Apps() { @@ -84,9 +168,10 @@ export default async function Apps() {

Apps built with HQTUI

- Three programs people actually run. They exist partly to keep the library honest: a - real application finds the gaps a widget gallery does not, and each of these has - already changed HQTUI. + Nine programs people actually run. They exist partly to keep the library honest: a + real application finds the gaps a widget gallery does not, and several of these have + already changed HQTUI — styled spans, collapsed borders and the braille metrics in + these very screenshots all came from building one of them.

Every screenshot is rendered by HQTUI itself and captured at 2x — the same pipeline as diff --git a/apps/web/public/apps/apps.json b/apps/web/public/apps/apps.json index 0ef2e5e..a8a8231 100644 --- a/apps/web/public/apps/apps.json +++ b/apps/web/public/apps/apps.json @@ -1,12 +1,36 @@ { + "threatcrush": { + "width": 2301, + "height": 1266 + }, + "myna": { + "width": 2316, + "height": 1209 + }, "r3q": { "width": 2301, "height": 1200 }, + "tsbb": { + "width": 2349, + "height": 1209 + }, "g1tz": { "width": 2301, "height": 1200 }, + "logicsrc": { + "width": 2388, + "height": 1067 + }, + "diskpush": { + "width": 2301, + "height": 1200 + }, + "coinpay": { + "width": 2236, + "height": 1242 + }, "nixamp": { "width": 2301, "height": 1067 diff --git a/apps/web/public/apps/coinpay.png b/apps/web/public/apps/coinpay.png new file mode 100644 index 0000000..dd632dc Binary files /dev/null and b/apps/web/public/apps/coinpay.png differ diff --git a/apps/web/public/apps/diskpush.png b/apps/web/public/apps/diskpush.png new file mode 100644 index 0000000..6607064 Binary files /dev/null and b/apps/web/public/apps/diskpush.png differ diff --git a/apps/web/public/apps/logicsrc.png b/apps/web/public/apps/logicsrc.png new file mode 100644 index 0000000..2163e75 Binary files /dev/null and b/apps/web/public/apps/logicsrc.png differ diff --git a/apps/web/public/apps/myna.png b/apps/web/public/apps/myna.png new file mode 100644 index 0000000..a9d78d2 Binary files /dev/null and b/apps/web/public/apps/myna.png differ diff --git a/apps/web/public/apps/nixamp.png b/apps/web/public/apps/nixamp.png index 75ce5a5..064bca3 100644 Binary files a/apps/web/public/apps/nixamp.png and b/apps/web/public/apps/nixamp.png differ diff --git a/apps/web/public/apps/threatcrush.png b/apps/web/public/apps/threatcrush.png new file mode 100644 index 0000000..79f28e1 Binary files /dev/null and b/apps/web/public/apps/threatcrush.png differ diff --git a/apps/web/public/apps/tsbb.png b/apps/web/public/apps/tsbb.png new file mode 100644 index 0000000..5820b44 Binary files /dev/null and b/apps/web/public/apps/tsbb.png differ