0d938f1f64
Ben wants this shared across projects rather than living inside haul, so the plan now describes a standalone module with its own repo. The consequence that shapes the whole API: it can do no UI of its own. ShippingTracker called MessageBox directly, but haul is Fyne (widgets only from the UI thread via fyne.Do) and dial is a Bubble Tea TUI. So the module is pure logic plus an onProgress callback, and each consumer supplies its own prompts. Also reorders the work. dial goes first: it is pure Go, already cross-compiles, and release 0.2.0 already has all five platform binaries and SHA256SUMS attached — so it can adopt this immediately, whereas haul still can't build its own release assets. dial using SHA256SUMS where ShippingTracker uses checksums.txt is why the checksum asset name has to be configurable. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>