From 11b2a56a320bbd66b98991fd08478d154ff6c717 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sat, 4 Jul 2026 09:10:04 -0700 Subject: Build profiles: HAL_FEATURES selects which features ship MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build.js swaps src/features/index.js for a generated module importing only the enabled features (gifts,swaps,ark,sp — unset means all, "none" means a plain on-chain wallet), so excluded feature code and its network endpoints never enter the bundle. Minimal profile: 476KB vs 577KB, with the Ark/gRPC, Boltz, and MuSig2 code verifiably absent. `bun run build:minimal` builds it. tools/minimal-smoke.js proves the minimal profile end-to-end: no receive-mode dropdown, no gift button, no swap/Ark/SP settings cards, no page errors, and a plain on-chain receive still lands. The two blessed profiles are full (everything, the existing e2e suites) and minimal (this smoke test); other combos should work but aren't CI'd. Gift and SP primitives still live inside wallet.js, so those bytes remain in the minimal bundle for now — extracting them is the next step if we want the core leaner still. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01QFAcD4V284DvYZZHP7Rxxy --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'package.json') diff --git a/package.json b/package.json index 0ca02a9..e861882 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,11 @@ "private": true, "version": "0.1.0", "type": "module", - "description": "Hal Wallet — offline-capable, single-file self-custody Bitcoin wallet for the browser, in memory of Hal Finney", + "description": "Hal Wallet \u2014 offline-capable, single-file self-custody Bitcoin wallet for the browser, in memory of Hal Finney", "scripts": { "dev": "bun run dev.js", - "build": "bun run build.js" + "build": "bun run build.js", + "build:minimal": "HAL_FEATURES=none bun run build.js" }, "dependencies": { "@noble/ciphers": "^2.1.1", @@ -21,4 +22,4 @@ "devDependencies": { "puppeteer-core": "^25.1.0" } -} +} \ No newline at end of file -- cgit v1.2.3