Skip to content

Commit 4833f94

Browse files
SHAcollisionclaude
andcommitted
Fix copy voice: replace "we/our" with "TxFix" throughout
Rewrite readme to match V1 implementation, use "I" for personal opinion/direction and "TxFix" or "this tool" for the product. Updated roadmap checkboxes, tech stack, pricing, and removed stale references (Alby NWC, Vercel, Framer Motion). Fixed PsbtDelivery and plan.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d14834b commit 4833f94

3 files changed

Lines changed: 71 additions & 89 deletions

File tree

plan.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The entire app is client-side JavaScript. There are zero server dependencies:
1414
- **Build output**: `next build` with `output: 'export'` produces a plain `out/` folder of HTML/JS/CSS
1515
- **No API routes, no SSR, no middleware** — just static files served by GitHub Pages
1616

17-
The only technical consideration is **browser polyfills for bitcoinjs-lib** (it uses Node.js `Buffer`). We handle this with explicit imports (`import { Buffer } from 'buffer'`) rather than webpack global polyfills, ensuring compatibility with both Turbopack (dev) and webpack (build).
17+
The only technical consideration is **browser polyfills for bitcoinjs-lib** (it uses Node.js `Buffer`). TxFix handles this with explicit imports (`import { Buffer } from 'buffer'`) rather than webpack global polyfills, ensuring compatibility with both Turbopack (dev) and webpack (build).
1818

1919
---
2020

@@ -31,7 +31,7 @@ User pastes TXID → Client fetches from mempool.space + Esplora APIs
3131
→ User signs in own wallet → Broadcast → Live tracker → Rescue receipt
3232
```
3333

34-
**No keys ever touch our code.** PSBTs are unsigned templates the user signs in their own wallet.
34+
**No keys ever touch TxFix.** PSBTs are unsigned templates the user signs in their own wallet.
3535

3636
---
3737

@@ -148,7 +148,7 @@ public/
148148
> Config, theme, layout, network infrastructure
149149
150150
**Modify:**
151-
- `next.config.ts` — Add `output: 'export'`, `trailingSlash: true`, `images: { unoptimized: true }`. **No webpack polyfills needed**we use explicit `buffer` imports instead of global polyfills, which works with both Turbopack (dev) and webpack (build).
151+
- `next.config.ts` — Add `output: 'export'`, `trailingSlash: true`, `images: { unoptimized: true }`. **No webpack polyfills needed**TxFix uses explicit `buffer` imports instead of global polyfills, which works with both Turbopack (dev) and webpack (build).
152152
- `src/app/globals.css` — Dark-only theme with CSS custom properties: `--background: #0a0a0a`, `--card-bg: #18181b`, `--card-border: #27272a`, `--bitcoin: #F7931A`, `--success: #22c55e`, `--warning: #eab308`, `--danger: #ef4444`, `--muted: #71717a`
153153
- `src/app/layout.tsx` — Update metadata (title: "TxFix — Fix Stuck Bitcoin Transactions"), wrap children in `<Suspense>` + `<NetworkProvider>`, keep Geist + Geist Mono fonts
154154
- `package.json` — Add all dependencies up-front
@@ -171,7 +171,7 @@ public/
171171
```bash
172172
pnpm add motion bitcoinjs-lib ecpair @bitcoinerlab/secp256k1 buffer bbqr qrcode.react
173173
```
174-
Note: No `crypto-browserify` or `stream-browserify` needed — bitcoinjs-lib v7 with `@bitcoinerlab/secp256k1` handles crypto internally, and we use explicit `Buffer` imports instead of webpack shims.
174+
Note: No `crypto-browserify` or `stream-browserify` needed — bitcoinjs-lib v7 with `@bitcoinerlab/secp256k1` handles crypto internally, and TxFix uses explicit `Buffer` imports instead of webpack shims.
175175

176176
**Verify:** `pnpm build` produces `out/` directory successfully. Dev server shows dark themed page with header + network selector.
177177

@@ -454,7 +454,7 @@ Driven by `useDiagnosis` phase + local UI state. `useUrlState` syncs TXID and ne
454454
### RBF Logic
455455

456456
- BIP125 rules: replacement must pay strictly higher absolute fee + sufficient fee rate
457-
- We keep same inputs, same outputs, only reduce change output value
457+
- TxFix keeps same inputs, same outputs, only reduces change output value
458458
- Change output identification: heuristic (match input address type → non-round amount → last output)
459459
- If change too small after fee increase → error, suggest CPFP instead
460460
- Full-RBF era (Bitcoin Core 28+): replacement works even without explicit RBF signal in most cases
@@ -469,7 +469,7 @@ Driven by `useDiagnosis` phase + local UI state. `useUrlState` syncs TXID and ne
469469

470470
### Browser Polyfill Strategy (No Webpack Hacks)
471471

472-
bitcoinjs-lib needs Node.js `Buffer` in the browser. Instead of fragile webpack `resolve.fallback` polyfills (which break with Turbopack in dev), we use **explicit imports**:
472+
bitcoinjs-lib needs Node.js `Buffer` in the browser. Instead of fragile webpack `resolve.fallback` polyfills (which break with Turbopack in dev), TxFix uses **explicit imports**:
473473

474474
```ts
475475
// src/lib/bitcoin/polyfills.ts — imported once before any bitcoinjs-lib usage

readme.md

Lines changed: 64 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# TxFix
22

3-
**Transaction Stuck? Fix it.** -> [txfix.it](https://txfix.it)
3+
**Transaction Stuck? Fix it.** &rarr; [txfix.it](https://txfix.it)
44

5-
Free Bitcoin transaction diagnosis. 30-second rescue. Free and Open Source. No keys required.
5+
Free Bitcoin transaction diagnosis. 30-second rescue. No keys required.
66

77
---
88

9-
TxFix is the first diagnostic-first rescue tool for stuck Bitcoin transactions. Every other tool — accelerators, rebroadcasters, wallet bump buttons — assumes you already know what's wrong and jumps straight to the most expensive fix. txfix tells you what's actually happening, for free, then walks you to the cheapest resolution in 3 clicks.
9+
TxFix is the first diagnostic-first rescue tool for stuck Bitcoin transactions. Every other tool — accelerators, rebroadcasters, wallet bump buttons — assumes you already know what's wrong and jumps straight to the most expensive fix. TxFix tells you what's actually happening, for free, then walks you to the cheapest resolution in 3 clicks.
1010

1111
Paste a TXID. Get a diagnosis in 3 seconds. Fix it in 30.
1212

@@ -22,8 +22,6 @@ When a Bitcoin transaction gets stuck, the user experience is broken:
2222

2323
The entire existing toolkit — mempool.space Accelerator, ViaBTC, BitAccelerate, wallet-integrated bump buttons — skips the most important step: **diagnosis**. Nobody checks whether a simple $0.50 RBF bump would work before charging $40 for an out-of-band miner bribe.
2424

25-
Samourai's Afterburner was the closest thing to a standalone rescue tool, and it's dead (founders arrested April 2024, convicted November 2025).
26-
2725
The diagnostic layer doesn't exist. Until now.
2826

2927
## How It Works
@@ -32,7 +30,7 @@ The diagnostic layer doesn't exist. Until now.
3230

3331
One input field. Center screen. Nothing else. No signup, no wallet connect, no noise.
3432

35-
### 2. Watch the diagnosis (23 seconds)
33+
### 2. Watch the diagnosis (2-3 seconds)
3634

3735
An animated diagnostic sequence fires in real-time:
3836

@@ -48,11 +46,11 @@ An animated diagnostic sequence fires in real-time:
4846

4947
### 3. Get the verdict
5048

51-
A crystal-clear recommendation card tells you exactly what's happening and what to do:
49+
A clear recommendation card tells you exactly what's happening and what to do:
5250

5351
```
5452
┌─────────────────────────────────────────────────┐
55-
🔴 STUCK — ~14 hours at current fee rate │
53+
│ STUCK — ~14 hours at current fee rate
5654
│ │
5755
│ Your tx pays 4 sat/vB but the mempool needs │
5856
│ 18 sat/vB for next-block confirmation. │
@@ -64,64 +62,63 @@ A crystal-clear recommendation card tells you exactly what's happening and what
6462
└─────────────────────────────────────────────────┘
6563
```
6664

67-
Sometimes the verdict is: **"Relax. Your tx will confirm in ~45 minutes. Do nothing."** This tool belong to the users, it must stay honest.
65+
Sometimes the verdict is: **"Relax. Your tx will confirm in ~45 minutes. Do nothing."** I built this tool to be honest, not to upsell.
6866

6967
### 4. Fix it
7068

71-
Click "Fix it" → txfix constructs the exact replacement transaction presents it as a PSBT (QR code for hardware wallets, raw hex for Sparrow/Electrum). You sign in your own wallet. **We never touch your keys.** After broadcast, a live tracker shows confirmation in real-time.
69+
Click "Fix it" &rarr; TxFix constructs the exact replacement transaction &rarr; presents it as a PSBT (QR code for hardware wallets, .psbt file for Sparrow/Electrum, raw hex for everything else). You sign in your own wallet. **TxFix never touches your keys.** After broadcast, a live tracker shows confirmation in real-time.
7270

7371
### 5. Share
7472

75-
After confirmation, get a shareable rescue receipt: what went wrong, what was done, how much it cost vs. how much an accelerator would have charged.
73+
After confirmation, you get a shareable rescue receipt: what went wrong, what was done, how much it cost vs. how much an accelerator would have charged.
7674

77-
> *"Rescued by txfix — saved $37.30 vs. mempool.space Accelerator."*
75+
> *"Rescued by TxFix — saved $37.30 vs. mempool.space Accelerator."*
7876
79-
## What Makes txfix Different
77+
## What Makes TxFix Different
8078

81-
| | txfix | mempool.space Accelerator | ViaBTC | BitAccelerate | Wallet RBF |
79+
| | TxFix | mempool.space Accelerator | ViaBTC | BitAccelerate | Wallet RBF |
8280
|---|---|---|---|---|---|
83-
| **Diagnoses the problem** | Free, always | | | | |
84-
| **Checks RBF/CPFP options** | Automatic | | | | Partial |
85-
| **Recommends cheapest fix** | With exact cost | | | | |
86-
| **Generates PSBT** | Sign in your wallet | | | | Own txs only |
87-
| **Works with any wallet** | Wallet-agnostic | | | | Own wallet only |
88-
| **Typical cost** | 5005,000 sats | $3050+ | Free (limited) | Free (placebo) | Varies |
89-
| **Touches your keys** | Never | | | | |
81+
| **Diagnoses the problem** | Free, always | No | No | No | No |
82+
| **Checks RBF/CPFP options** | Automatic | No | No | No | Partial |
83+
| **Recommends cheapest fix** | With exact cost | No | No | No | No |
84+
| **Generates PSBT** | Sign in your wallet | No | No | No | Own txs only |
85+
| **Works with any wallet** | Wallet-agnostic | Yes | Yes | Yes | Own wallet only |
86+
| **Typical cost** | 500-5,000 sats | $30-50+ | Free (limited) | Free (placebo) | Varies |
87+
| **Touches your keys** | Never | No | No | No | Yes |
9088

91-
**The core insight:** Existing tools charge $40 without telling you a $0.50 RBF bump would work. txfix tells you for free.
89+
**The core insight:** Existing tools charge $40 without telling you a $0.50 RBF bump would work. TxFix tells you for free.
9290

9391
## Features
9492

95-
**V1 — The Unstuck Machin**
93+
**V1 — The Unstuck Machine**
9694

97-
- 🔍 **Instant diagnosis** — RBF signaling, CPFP feasibility, fee analysis, mempool position, estimated wait time
98-
- 📊 **Verdict card** — Plain-English explanation with screenshot-worthy recommendation
99-
- 🔧 **PSBT generation** — Auto-constructed RBF bump or CPFP child transaction
100-
- 📱 **QR code signing** — Scan with hardware wallet or import into Sparrow/Electrum
101-
- 📡 **Live tracker** — Watch your replacement tx propagate and confirm
102-
- 🧾 **Rescue receipt** — Shareable card showing what you saved vs. alternatives
103-
- 🔗 **Accelerator fallback** — Links to mempool.space and ViaBTC when RBF/CPFP aren't possible
95+
- Instant diagnosis — RBF signaling, CPFP feasibility, fee analysis, mempool position, estimated wait time
96+
- Verdict card — Plain-English explanation with clear recommendation
97+
- PSBT generation — Auto-constructed RBF bump or CPFP child transaction
98+
- Three delivery methods — BBQr animated QR, .psbt file download, raw hex copy
99+
- Live tracker — Watch your replacement tx propagate and confirm
100+
- Rescue receipt — Shareable card showing what you saved vs. alternatives
101+
- Accelerator fallback — Links to mempool.space and ViaBTC when RBF/CPFP aren't possible
102+
- Network support — Mainnet, testnet4, signet
104103

105-
**V2 — The Copilot**
104+
**V2 — The Copilot** (planned)
106105

107-
- 👁️ **Watchlist** — Monitor multiple pending transactions with push alerts
108-
- **Send Time Advisor** — "Fees will likely drop 40% in ~3 hours"
109-
- 🛫 **Pre-Flight Check** — Paste a raw tx before broadcasting to get a risk score
110-
- 🔔 **Fee Alerts** — "Notify me when next-block fee drops below 10 sat/vB"
106+
- Watchlist — Monitor multiple pending transactions with push alerts
107+
- Send Time Advisor — "Fees will likely drop 40% in ~3 hours"
108+
- Pre-Flight Check — Paste a raw tx before broadcasting to get a risk score
109+
- Fee Alerts — "Notify me when next-block fee drops below 10 sat/vB"
111110

112111
## Tech Stack
113112

114113
```
115-
Frontend Next.js 15 + TypeScript + Tailwind CSS + Framer Motion
114+
Frontend Next.js 16 + TypeScript + Tailwind CSS 4 + Motion
116115
Bitcoin data mempool.space REST API (fees, mempool, tx status)
117-
Esplora/Blockstream API (UTXOs, raw tx, scripts)
118-
Tx building bitcoinjs-lib (RBF/CPFP construction + PSBT)
119-
QR codes qrcode.react (PSBT rendering)
120-
Payments @getalby/bitcoin-connect (NWC Lightning)
121-
Deploy Vercel (zero infrastructure)
116+
Tx building bitcoinjs-lib v7 (RBF/CPFP construction + PSBT)
117+
QR codes BBQr (animated PSBT QR) + qrcode.react
118+
Deploy GitHub Pages via GitHub Actions (static export)
122119
```
123120

124-
No backend servers. No databases. No custody. Pure frontend + public APIs.
121+
No backend servers. No databases. No custody. Pure client-side code + public APIs.
125122

126123
## Architecture
127124

@@ -133,7 +130,6 @@ User pastes TXID
133130
│ Diagnostic Engine │
134131
│ │
135132
│ mempool.space API │──→ fee estimates, mempool stats, tx status
136-
│ Esplora API │──→ full tx details, UTXO data, scripts
137133
│ │
138134
│ Checks: │
139135
│ • RBF signaling │ (sequence number < 0xfffffffe)
@@ -153,7 +149,7 @@ User pastes TXID
153149
│ Transaction Builder │
154150
│ │
155151
│ bitcoinjs-lib │──→ RBF replacement or CPFP child tx
156-
│ PSBT output │──→ QR code + raw hex
152+
│ PSBT output │──→ QR code + .psbt file + raw hex
157153
│ │
158154
│ User signs in │
159155
│ their own wallet │
@@ -170,7 +166,7 @@ User pastes TXID
170166
### Prerequisites
171167

172168
- Node.js 24 (run `nvm use`)
173-
- pnpm (recommended) or npm
169+
- pnpm
174170

175171
### Development
176172

@@ -183,65 +179,52 @@ pnpm dev
183179

184180
Open [http://localhost:3000](http://localhost:3000).
185181

186-
### Environment Variables
187-
188-
```env
189-
# Optional — defaults to public APIs
190-
NEXT_PUBLIC_MEMPOOL_API=https://mempool.space/api
191-
NEXT_PUBLIC_ESPLORA_API=https://blockstream.info/api
192-
193-
# Optional — for self-hosted mempool instance
194-
# NEXT_PUBLIC_MEMPOOL_API=http://your-node:8999/api
195-
196-
# Optional — NWC connection for Lightning payments
197-
NEXT_PUBLIC_NWC_RELAY=wss://relay.getalby.com/v1
198-
```
199-
200182
### Build
201183

202184
```bash
203185
pnpm build
204-
pnpm start
205186
```
206187

188+
Static output goes to `out/`. Serve it with any static file server.
189+
207190
## Pricing
208191

192+
I intend to keep the diagnosis permanently free. V1 is completely free — no payment gating at all. Future versions may charge a small Lightning fee for PSBT generation to sustain the service, but if you run TxFix locally, everything is free forever. It's FOSS.
193+
209194
| Tier | What you get | Cost |
210195
|------|-------------|------|
211-
| **Tecky: you run it locally** | Everything, free, forever | $0 |
212-
| **Free forever** | Full diagnosis + recommendation. See exactly what's wrong and what to do. | $0 |
213-
| **Rescue** | Auto-generated PSBT for RBF or CPFP. One-click fix. | 2,000-10,000 sats per rescue |
214-
| **Copilot** *(V2)* | Watchlist, send time advisor, fee alerts, pre-flight checks. | ~$5/mo via Lightning |
215-
216-
The diagnosis is always free in [txfit.it](https://txfit.it), paid services are intended to sustain the service. If you go for the soverign route you can run this whole FOSS tool locally.
196+
| **Run it yourself** | Everything, forever | $0 |
197+
| **Free tier** | Full diagnosis + recommendation | $0 |
198+
| **Rescue** *(future)* | Auto-generated PSBT for RBF or CPFP | Small Lightning fee |
217199

218200
## Why Open Source
219201

220202
Bitcoin is a trust-minimized system. A transaction rescue tool should be too.
221203

222-
- **Verify the code** — You can read exactly what txfix does with your TXID. No hidden tracking, no data harvesting, no wallet fingerprinting.
204+
- **Verify the code** — You can read exactly what TxFix does with your TXID. No hidden tracking, no data harvesting, no wallet fingerprinting.
223205
- **Self-host** — Run it on your own infrastructure, connect to your own mempool.space instance, keep everything private.
224-
- **Contribute** — Found an edge case? Better fee estimation logic? Submit a PR, everyone benefits.
206+
- **Contribute** — Found an edge case? Better fee estimation logic? Submit a PR.
225207
- **Fork it** — Build something better. I'd love that.
226208

227-
The PSBT generation is fully client-side. Your keys never leave your device. There is nothing to trust.
209+
PSBT generation is fully client-side. Your keys never leave your device. There is nothing to trust.
228210

229211
## Roadmap
230212

231-
- [ ] Diagnostic engine (RBF detection, CPFP feasibility, fee analysis)
232-
- [ ] Animated diagnostic sequence UI
233-
- [ ] Verdict card with recommendation logic
234-
- [ ] RBF replacement transaction construction
235-
- [ ] CPFP child transaction construction
236-
- [ ] PSBT generation + QR code rendering
237-
- [ ] Lightning payment via NWC
238-
- [ ] Rescue receipt / share card
213+
- [x] Diagnostic engine (RBF detection, CPFP feasibility, fee analysis)
214+
- [x] Animated diagnostic sequence UI
215+
- [x] Verdict card with recommendation logic
216+
- [x] RBF replacement transaction construction
217+
- [x] CPFP child transaction construction
218+
- [x] PSBT generation + BBQr animated QR + file download + hex copy
219+
- [x] Broadcast + live confirmation tracker
220+
- [x] Rescue receipt / share card
221+
- [x] GitHub Pages deployment (static export)
222+
- [ ] Lightning payment via phoenixd
239223
- [ ] Transaction watchlist with push notifications
240224
- [ ] Send time advisor (predictive fee forecasting)
241225
- [ ] Pre-flight check (paste raw tx, get risk score)
242-
- [ ] Fee alerts (Telegram, email, Nostr DM)
226+
- [ ] Fee alerts (Telegram, Nostr DM)
243227
- [ ] Umbrel / Start9 app for self-hosted deployment
244-
- [ ] Browser extension (inject rescue button into block explorers)
245228

246229
## License
247230

@@ -251,10 +234,9 @@ AGPL
251234

252235
Built on the shoulders of:
253236

254-
- [mempool.space](https://mempool.space) — The best Bitcoin explorer and the API that makes txfix possible
237+
- [mempool.space](https://mempool.space) — The best Bitcoin explorer and the API that makes TxFix possible
255238
- [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) — Rock-solid Bitcoin transaction library
256-
- [Alby](https://getalby.com) — NWC and bitcoin-connect for frictionless Lightning payments
257-
- [Samourai Afterburner](https://web.archive.org/web/2023*/afterburner.samourai.io) (RIP) — Proved the concept of a standalone rescue tool
239+
- [BBQr](https://github.com/nicklockwood/bbqr) — Animated QR encoding for large payloads
258240

259241
---
260242

src/components/PsbtDelivery.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export function PsbtDelivery({
8080
<p className="text-xs text-muted text-center border-t border-card-border pt-3">
8181
Sign this PSBT in your wallet, then come back to broadcast.
8282
<br />
83-
<strong className="text-foreground">We never touch your keys.</strong>
83+
<strong className="text-foreground">TxFix never touches your keys.</strong>
8484
</p>
8585
</Card>
8686
);

0 commit comments

Comments
 (0)