From 11cf5aa0cf77ddadc208a5cbea8d97f788730292 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 20 Jun 2026 09:50:39 +0200 Subject: [PATCH 1/3] docs(claude): drop the deleted `dev up` CLI from seeded orientation files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The matured dev-env backport removed dev.sh (which provided `dev up/down/logs/shell`) but the seeded CLAUDE.md files still told users — and Claude sessions, since these symlink into ~/dev/ — to run those commands. `dev` is now just a nav function (cd $DEV_ROOT), so `dev up` silently cd'd and started nothing. Rewrite both Quick-commands / Default-dev-workflow sections to the real command set (lb/prb/dev-status/regtest-start/dev-deploy) and document that FakeWallet startup is manual — there is no `dev up` wrapper. --- files/dev-CLAUDE.md | 31 ++++++++++++++++++++++++------- files/lnbits-CLAUDE.md | 14 ++++++++++++-- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/files/dev-CLAUDE.md b/files/dev-CLAUDE.md index 6b2f150..9e3a5cd 100644 --- a/files/dev-CLAUDE.md +++ b/files/dev-CLAUDE.md @@ -26,13 +26,30 @@ PR contract in `upstream-prs/`. See the lnbits-sensei README's ## Quick commands -- `dev up [--fakewallet|--regtest]` — start the lnbits dev server. - Default `--fakewallet` is instant, no docker, good for - extension/UI/API work. -- `dev down` / `dev logs` / `dev shell` — control / inspect. -- *(planned)* `prb ` — create a PR worktree branched - from `upstream/main` under `~/dev/upstream-prs/`. -- *(planned)* `lb ` — cd shortcut into `~/dev/lnbits/`. +Installed by lnbits-sensei's dev-env module — standalone binaries plus +shell functions sourced into interactive shells: + +- `dev-env-bootstrap` — materialize bare repos + worktrees from your + declared `projects` (idempotent; `--dry-run` to preview). +- `lb ` — cd into `~/dev/lnbits/` (e.g. `lb dev`). + `g `, `ext `, `prs`, `shared`, `repos` cover + the rest of the tree. +- `prb ` — create a PR worktree branched from + `upstream/main` under `~/dev/upstream-prs/`; `prc` cleans up, `prl` + lists. +- `dev-status` — dirty + ahead/behind across every worktree. `wts` / + `wtu` sync worktrees / fetch upstream; `rebase status` shows which + forks need rebasing onto upstream. +- `regtest-start ` / `regtest-stop` — Bitcoin/Lightning + regtest stack (only when `devEnv.regtest.enable = true`; needs docker). +- `dev-deploy ` — `nixos-rebuild` against your deploy flake. + `dev-tm ` — launch a declarative tmux session. + +**Starting lnbits for iteration:** there is no `dev up` wrapper. +FakeWallet (`LNBITS_BACKEND_WALLET_CLASS=FakeWallet`) is the default +path — no docker; run lnbits directly from the worktree (`lb dev`, then +lnbits's own run command). Use `regtest-start` only when you need real +channels/payments. ## Reference docs diff --git a/files/lnbits-CLAUDE.md b/files/lnbits-CLAUDE.md index a091104..2f5d5e8 100644 --- a/files/lnbits-CLAUDE.md +++ b/files/lnbits-CLAUDE.md @@ -70,9 +70,19 @@ Full reference: `docs/lnbits-upstream-flow.md`. ## Default dev workflow +There is no `dev up` wrapper. Start lnbits directly from a worktree: + ``` -dev up # FakeWallet, instant -dev up --regtest # multi-node regtest (slower boot, real channels) +lb dev # cd ~/dev/lnbits/dev +LNBITS_BACKEND_WALLET_CLASS=FakeWallet # instant, no docker +``` + +For real channels/payments, use the regtest stack (gated on +`devEnv.regtest.enable`; needs docker): + +``` +regtest-start dev # build lnbits from ~/dev/lnbits/dev, bring the stack up +regtest-stop ``` Use **FakeWallet** for extension CRUD / UI / API work. Spin up From cd95974e4817723850aa1c0c51b4ae8c572e8e1e Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 20 Jun 2026 09:51:31 +0200 Subject: [PATCH 2/3] fix(dev-env): count deleted backups in the parent shell, not a subshell cleanup_backups piped `git branch --list` into `while read`, so the `deleted` counter incremented inside a pipeline subshell and never propagated. The closing "Deleted N backup branch(es)" always reported 0, however many were actually removed. Switch the inner loop to process substitution (matching the outer find_forked_repos loop) so the count survives. --- modules/dev-env/scripts/rebase.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dev-env/scripts/rebase.sh b/modules/dev-env/scripts/rebase.sh index 60078ca..c311adb 100644 --- a/modules/dev-env/scripts/rebase.sh +++ b/modules/dev-env/scripts/rebase.sh @@ -311,7 +311,7 @@ cleanup_backups() { local deleted=0 while IFS=: read -r path _; do cd "$path" || continue - git branch --list "backup/*" 2>/dev/null | while read -r branch; do + while read -r branch; do branch="$(echo "$branch" | tr -d ' *')" local bdate bdate="$(echo "$branch" | grep -oE '[0-9]{8}' | head -1)" @@ -319,7 +319,7 @@ cleanup_backups() { || { [[ -n "$bdate" ]] && [[ "$bdate" < "$cutoff" ]]; }; then git branch -D "$branch" 2>/dev/null && deleted=$((deleted + 1)) || true fi - done + done < <(git branch --list "backup/*" 2>/dev/null) done < <(find_forked_repos) success "Deleted $deleted backup branch(es)." } From 25353f548dca5e8aa0d8470b2345c22b3028bab0 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 20 Jun 2026 09:52:17 +0200 Subject: [PATCH 3/3] fix(dev-env): confirm before force-deleting an unmerged PR branch git-pr-cleanup (prc) tried `branch -d` then fell back to `branch -D` unconditionally, silently destroying an unmerged branch when prc was run before the PR merged or against the wrong branch. Keep the safe `-d` for the normal post-merge path, but prompt before forcing so unmerged commits aren't lost without consent; decline keeps the branch. --- modules/dev-env/scripts/pr-helpers.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/dev-env/scripts/pr-helpers.sh b/modules/dev-env/scripts/pr-helpers.sh index 46763d5..765cb03 100644 --- a/modules/dev-env/scripts/pr-helpers.sh +++ b/modules/dev-env/scripts/pr-helpers.sh @@ -113,8 +113,17 @@ git-pr-cleanup() { git -C "$bare_repo" worktree remove "$pr_path" echo "Deleting branch: $branch_name" - git -C "$bare_repo" branch -d "$branch_name" 2>/dev/null \ - || git -C "$bare_repo" branch -D "$branch_name" + if ! git -C "$bare_repo" branch -d "$branch_name" 2>/dev/null; then + echo " Branch '$branch_name' is not fully merged." + read -r -p " Force-delete it (unmerged commits will be lost)? [y/N] " -n 1 REPLY + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + git -C "$bare_repo" branch -D "$branch_name" + else + echo " Kept branch '$branch_name' (worktree already removed)." + return 1 + fi + fi echo "Done." }