feat(crawlproof): what the fleet costs and what it returns, as a command - #53
Merged
Conversation
The dashboard is @profullstack/crawlproof, published from crawlproof.com. Nothing here reimplements it; this is the part that has to exist so `crawlproof` is a command on a server like every other one in this repo. Five screens over three feeds that are not otherwise in the same place: the tracker for who arrived, the ad network for what was delivered, and CoinPay for what the bank actually did. Bare `crawlproof` opens the dashboard, because the reason to type it on a box is to look at it. Installed into a private prefix on first use, and here that matters more than it does for hqtui: upstream's executable is called `crawlproof` and so is this wrapper. A global install would put two of them on PATH, and whichever came first would win — with a real chance of the command exec'ing itself. The private prefix means the name exists exactly once, and resolveRunner refuses to follow a PATH entry that resolves back into this repository's bin/ for the same reason. That refusal is load-bearing rather than defensive, so it has its own test. A missing API token is reported before handing over rather than after, because the failure it prevents is a 401 from inside a TUI, where there is nowhere good to explain anything. The CoinPay session is probed separately and never required: four of the five screens work without it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvWJ4336pxTFRdRbvsTQeD
ThreatCrush Security Scan10 finding(s) HIGH/CRITICAL: 2 | MEDIUM: 4 | LOW: 4
Snippets are redacted; ThreatCrush never prints matched credential material. |
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
crawlproofjoins the other commands on every box.Five screens over three feeds that are not otherwise in the same place: the tracker for who arrived, the ad network for what was delivered, and CoinPay for what the bank actually did. ROI is monthly burn against revenue, cost per reader and break-even; Traffic ranks every site with its share of the cost; Ads is delivery on both sides; Money is earnings, bank position and invoices; Spend is who you pay, largest first.
Bare
crawlproofopens the dashboard rather than printing usage — the reason to type it on a box is to look at it.The private prefix matters more here than for hqtui
hqtuiwraps a package whose executable ishqtui-demo, so the names differ. Here upstream's executable is calledcrawlproofand so is this wrapper. A global install would put two of them on PATH, whichever came first would win, and there is a real chance of the command exec'ing itself.So it installs into
~/.local/share/cli-tools/vendor/crawlproof, andresolveRunnerrefuses to follow a PATH entry that resolves back into this repo'sbin/. That refusal is load-bearing rather than defensive, and has its own test.Credentials are reported, not enforced
A missing API token is named before handing over, because the failure it prevents is a 401 from inside a TUI — where there is nowhere good to explain anything. The CoinPay session is probed separately and never required: four of the five screens work without it, and the money panels say what is missing rather than showing zero.
Verified
Ran the wrapper end to end against production with
CRAWLPROOF_BINpointed at the built package:crawlproof stats crawlproof.comreturned real numbers, reading the token from~/.crawlproof.jsonwith nothing exported. Bare invocation correctly refuses without a TTY and points at--json.bin/*.tsis auto-discovered byinstall-links.mjs, so nothing else needs wiring.Tests: 719 passing (17 new).
npm run typecheckreports 2 errors insrc/free-names.tsandsrc/generate-names.ts— both pre-existing, identical on master, untouched here.Depends on
@profullstack/crawlproofbeing published — profullstack/crawlproof.com#241, which is stacked on #240. Until it is on npm the first run has nothing to install, so this should land alongside that publish.🤖 Generated with Claude Code
https://claude.ai/code/session_01HvWJ4336pxTFRdRbvsTQeD