From 7f1f766a7f9ff43ad705ff53dac331b05a836a4b Mon Sep 17 00:00:00 2001 From: Anthony Ettinger Date: Sun, 13 Sep 2026 08:05:06 +0000 Subject: [PATCH] /apps: every install line points at something that exists An audit of the ten install lines against npm and the repositories found seven that did not work. `bunx r3q` and `bunx diskpush` named packages that were never published (npm refuses those bare names as too close to existing ones; r3q is @profullstack/r3q as of today, and diskpush has a curl installer). `bunx myna` and `bunx tsbb` were worse: both names belong to other people's packages on npm (bibig/myna and jaywcjlove's tsbb build tool), so the line ran somebody else's program. `threatcrush tui`, `coinpay finances` and `logicsrc teams tui` assumed the command was already installed. Now: r3q and g1tz through their scoped packages; diskpush, myna and logicsrc through their curl installers; threatcrush and coinpay through npx and their published scoped packages; tsbb's terminal client, which depends on an unpublished workspace package, by cloning the repository and running it. The application name links to its repository as well as the "source" link. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_012nnVu9u7HeHEVRoCwKcQM3 --- apps/web/app/apps/page.tsx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apps/web/app/apps/page.tsx b/apps/web/app/apps/page.tsx index e555b41..639637b 100644 --- a/apps/web/app/apps/page.tsx +++ b/apps/web/app/apps/page.tsx @@ -31,7 +31,7 @@ const APPS: App[] = [ name: "r3q", tagline: "A REST client for your terminal", repo: "https://github.com/profullstack/r3q", - install: "bunx r3q ~/api", + install: "bunx @profullstack/r3q ~/api", body: "Requests are .http files you commit, so they diff and review with the code they belong to. " + "{{VARS}} resolve from a gitignored .env, so the file holds the template and the secret stays " @@ -87,11 +87,11 @@ const APPS: App[] = [ name: "diskpush", tagline: "Two panes and an rsync between them", repo: "https://github.com/profullstack/diskpush", - install: "bunx diskpush", + install: "curl -fsSL https://diskpush.com/install.sh | sh", 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.", + + "what it is about to do. The installer puts diskpush on your PATH.", 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.", @@ -101,7 +101,7 @@ const APPS: App[] = [ name: "ThreatCrush", tagline: "A security daemon you can watch", repo: "https://github.com/profullstack/threatcrush", - install: "threatcrush tui", + install: "npx @profullstack/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 " @@ -115,7 +115,7 @@ const APPS: App[] = [ name: "CoinPay", tagline: "A merchant's money, in one screen", repo: "https://github.com/profullstack/coinpayportal", - install: "coinpay finances", + install: "npx @profullstack/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 " @@ -129,7 +129,7 @@ const APPS: App[] = [ name: "myna", tagline: "Post once, everywhere", repo: "https://github.com/profullstack/mynaposter", - install: "bunx myna", + install: "curl -fsSL https://mynaposter.com/install.sh | sh", 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 " @@ -143,7 +143,7 @@ const APPS: App[] = [ name: "logicsrc", tagline: "Team vaults, without the plaintext", repo: "https://github.com/profullstack/logicsrc", - install: "logicsrc teams tui", + install: "curl -fsSL https://logicsrc.com/install.sh | sh", 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 " @@ -157,7 +157,7 @@ const APPS: App[] = [ name: "tsbb", tagline: "A message board in your terminal", repo: "https://github.com/profullstack/tsbb", - install: "bunx tsbb", + install: "git clone https://github.com/profullstack/tsbb && cd tsbb && pnpm install && node apps/tui/bin/tsbb-tui.mjs bbs.hqtui.com", 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 " @@ -212,7 +212,9 @@ export default async function Apps() { {APPS.map((app, index) => (
-

{app.name}

+

+ {app.name} +

{app.tagline}