Commit graph

1299 commits

Author SHA1 Message Date
SIDHARTH20K4
86d10df369 fix: capitalize Info Type label for consistency 2026-07-19 22:01:23 -07:00
SIDHARTH20K4
eed6b8aca2 fix: address review feedback - remove remaining positive tabindex values and add CLN parity fixes 2026-07-19 22:01:23 -07:00
SIDHARTH20K4
522b7e307d fix: address review feedback - fix invalid button types and remove fxFlex from mat-select 2026-07-19 22:01:23 -07:00
SIDHARTH20K4
5690367d07 fix: add missing mat-label to form fields and remove positive tabindex values 2026-07-19 22:01:23 -07:00
saubyk
46c710ca7a Backfill 0.15.9 release notes for pre-process merged PRs
Several PRs were merged onto Release-0.15.9 before the per-PR release-notes
process was established, leaving them undocumented. Add entries for:

- #1581 Fix page-load error when a channel alias is undefined (Bug Fixes)
- #1601 Fix stale auth options blocking a not-yet-ready node (Bug Fixes)
- #1582 Add Disable Authentication option (Enhancements)
- #1621 Rebuild the regtest docker fixture (Developer Tooling)
2026-07-19 22:01:23 -07:00
saubyk
1782ae2b20 Fill in PR number in release note (#1627) 2026-07-19 22:01:23 -07:00
saubyk
343338cd4b Show Blocks till Maturity by default on LND Pending Force Closing list (#1567)
Blocks-till-maturity is critical information for a force-closing channel but
was only visible in the per-channel detail modal. The column and its data
binding already existed in the pending force-closing table (and was selectable
via column settings); it was just missing from the default column selection.
Add blocks_til_maturity to the pending_force_closing default columnSelection
and columnSelectionSM so it is surfaced on the list by default on both desktop
and mobile.
2026-07-19 22:01:23 -07:00
saubyk
30712392e6 Fill in PR number in release note (#1626) 2026-07-19 22:01:23 -07:00
saubyk
2a9aee2597 Restore items-per-page dropdown on paginated tables (#1580)
A dependency-update commit in the 0.15.8-beta cycle mechanically renamed
the paginator binding [showFirstLastButtons] to [hidePageSize] on every
mat-paginator while keeping the same 'screenSize === XS ? false : true'
expression. The two properties have opposite polarity, so this inverted
the behavior: on desktop the page-size selector was hidden (locking users
to 10 items per page) and the first/last-page buttons were dropped as
collateral. Revert the ~44 affected paginators back to [showFirstLastButtons]
across the LND, CLN, Eclair and shared tables.
2026-07-19 22:01:23 -07:00
saubyk
f518488ecb Clarify connected-mirror comment and pin the fixture rune path
Address review F7/F8 on #1625:

F7 (verification): the onchain.ts `connected === false` branch reads /v1/listfunds
(CLN's own connected field) and only buckets balance as inactive — it is not the
listPeerChannels mirror and does no close logic, so the coercion activates nothing
there. Reword the mirror comment, which inaccurately implied onchain.ts consumes it;
the mirror simply keeps the documented backward-compat `connected` field defined.

F8: hardcode the rune path in create-rune.sh to /root/.lightning/rtl.rune so it
matches the volume mount, healthcheck and RTL runePath instead of deriving it from
${LIGHTNINGD_DATA}, removing the silent-divergence risk.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
cbf7a14c95 Guard the LND channel information modal explorer link (#1606 parity)
Address review F6 on #1625: the LND channel information modal has the same
unguarded selNode.settings.blockExplorerUrl binding as the CLN one, and it is
opened without selNode from the active-HTLCs and channel-backup tables, so it can
blank out the same way. Guard the explorer link (*ngIf + a no-op click when the
url is absent) so a missing selNode can no longer blank the dialog. Eclair's modal
doesn't use selNode.settings, so it needs no change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
9c3cd983b4 Make the CLN dev-fixture rune creation self-healing
Address review F5 on #1625: create-rune.sh was a one-shot poststart script — if
the RPC wasn't ready within its poll or createrune failed, it exited without ever
writing rtl.rune, and since the cln healthcheck gates on that file and rtl waits
on service_healthy, a failed pass deadlocked the whole stack until 'down -v'.

Drive rune creation from the healthcheck instead: the script is now a quick,
idempotent single attempt, and the healthcheck runs it on every interval, so a
transient RPC-startup race just retries and self-heals. Moved the script out of
lightning-poststart.d to /opt and updated the healthcheck, compose comment and
README accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
99cb60d2a7 Type selNode as the RTL Node model in the pending table
Address review F4 on #1625: the new selNode field resolved to the global DOM
Node type because the RTL Node model was not imported. Import Node from
shared/models/RTLconfig so the field, the rootSelectedNode store value, and the
CLNChannelInformationComponent it feeds all agree, restoring type-checking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
c15fa04986 Fix CLN channel View Info modal blanking for disconnected channels (#1606)
The channel information modal renders a block-explorer link from
selNode.settings.blockExplorerUrl, but the pending/inactive channels table
opened the modal without passing selNode. With it undefined, that binding threw
during change detection and blanked every field below it — State, Connected,
Private and the balances all rendered without a value. A disconnected channel
moves to the pending/inactive table, so this is what surfaced on View Info for a
disconnected channel (the symptom in the original report).

Pass selNode from the pending table (matching the open table), and guard the
modal's explorer link (*ngIf + a no-op click when the url is absent) so a missing
selNode can no longer blank the whole dialog. Add a regression test asserting the
pending table passes selNode when opening the modal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
b790dc7abf Add a Core Lightning node to the regtest docker fixture
The fixture had only bitcoind + three LND nodes, so RTL's Core Lightning screens
had no backend to exercise. Add a `cln` node (official elementsproject/lightningd
image, multi-arch) wired to RTL over clnrest with rune auth, and have the seed
open a cln->alice channel so the CLN channel/peer screens have real data.

- docker-compose.yml: cln service (clnrest on 0.0.0.0:3010, https), a healthcheck
  gated on the rune file so rtl waits for it, and rtl now mounts the cln volume
  read-only and depends on cln being healthy. The rtl image is parameterized via
  ${RTL_IMAGE:-...} so an unreleased build can be tested against the fixture.
- cln/poststart.d/create-rune.sh: once the RPC is up, create a master rune and
  write it as LIGHTNING_RUNE="..." where RTL reads it (runePath). Polls for RPC
  readiness because the image entrypoint can invoke poststart before the socket
  exists.
- RTL-Config.regtest.json: add node index 4 (CLN, rune auth, https://cln:3010).
- seed.sh: fund cln, connect to alice, open a 4,000,000 sat channel, wait active.
- README + release notes updated.

Used to verify the CLN channel connection-status fix (#1606) end-to-end.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
80af65d7fe Read peer_connected in pending-table close-channel guard
Address review F3 on #1625: the Close-Channel *ngIf still read the legacy
`connected` field while its neighboring column now reads peer_connected. Point
it at peer_connected directly so it no longer depends on the backend mirror,
removing the latent coupling.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
512aea96e5 Coerce mirrored peer_connected to a boolean
Address review feedback on #1625: copy peer_connected onto the legacy
`connected` field as a real boolean (!!), so strict-equality readers such as
onchain.ts's `connected === false` behave correctly when peer_connected is
absent, instead of leaving `connected` undefined.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
5659ba250b Add release notes doc for 0.15.9
Introduce a release-notes/ folder to collect the changes for each release, and
add Release-notes-0.15.9.md with the entry for the CLN channel connection status
fix (#1606 / #1625). New process: every PR for a release appends its entry to the
respective release notes document.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
saubyk
16d48417d8 Fix CLN channel connection status shown inconsistently (#1606)
CLN's listpeerchannels reports connection state as peer_connected, but the
open/pending channel list columns read the legacy `connected` field, which the
backend never populated. It was therefore always empty, so the list always
rendered "Disconnected" while the detail panel (which reads peer_connected)
showed the true state — the contradiction reported in #1606.

Normalize `connected = peer_connected` in the backend listPeerChannels response
so legacy consumers stay in sync, and point the list columns at peer_connected
directly. Add regression specs asserting the connected column follows
peer_connected even when the legacy field disagrees.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 22:01:23 -07:00
Matt Hill
42cb3c76e8 Fix setOptions cache poisoning when one node's auth load fails 2026-07-19 22:01:23 -07:00
ShahanaFarooqui
266167cf53 Update documentation for Disable Authentication 2026-07-19 22:01:23 -07:00
ShahanaFarooqui
0057bee53d Add Disable Authentication option in the frontend 2026-07-19 22:01:23 -07:00
ShahanaFarooqui
4613b889bf Add Disable Authentication option in the backend 2026-07-19 22:01:23 -07:00
ShahanaFarooqui
7d32bd68e9 Fix error on page load if channels alias is undefined 2026-07-19 22:01:23 -07:00
ShahanaFarooqui
7d676dc940 Update version 0.15.9 2026-07-19 22:01:23 -07:00
Suheb
3ae6d65ca2
Update rtlreviewbot.yml
Updated the timeout limit to 20 minutes
2026-07-19 13:35:34 -07:00
saubyk
1a6cb0b0a8 Source .env in seed.sh so it prints the real password
Docker Compose reads .env automatically; bash does not. seed.sh referenced
${RTL_PASSWORD:-password} without sourcing it, so the default always won and
the summary told the user to log in with 'password' -- the blacklisted value
this branch just removed.
2026-07-16 00:15:20 -07:00
saubyk
df48de1140 Fix the regtest fixture using a password RTL blacklists
The fixture added in #1621 set multiPass to "password". RTL blacklists weak
passwords (PASSWORD_BLACKLIST in consts-enums-functions.ts: 'password',
'changeme', 'moneyprintergobrrr') and forces a change when one is used:
login.component.ts sets defaultPassword: true, and app.component.ts then
redirects to /rtl/settings/auth.

So every login with the documented password was bounced to the change
password screen and never reached the dashboard. The check is session based
rather than first run only, so this happened on every fresh browser session,
not just the first.

Password is now 'rtldev'. .env documents why it must stay off the blacklist.
2026-07-16 00:02:00 -07:00
saubyk
6a01e96c98 Remove the unused bitcoind and lnd build contexts
Nothing references these now that the fixture pulls Polar's multi-arch
images instead of building locally. They could not produce a working image
anyway: the bitcoind Dockerfile is ubuntu:18.04 (EOL 2023) installing from
a PPA, and the lnd one builds from golang:1.11-alpine at a 2018 commit.

Leaving them would repeat the mistake that made the old setup misleading,
where plausible-looking files pointed at something that no longer worked.
2026-07-15 23:26:30 -07:00
saubyk
4e2b7ca978 Rebuild the regtest dev fixture: bitcoind + 3 LND nodes + RTL
The setup in docker/ has been unable to start since Feb 2021. The boltz
service added in f817ae39 references BOLTZ_* variables that are not in .env
(so its ports render as ":" and compose rejects the file with "invalid
proto"), a ./boltz build context that has never existed in the repo, and
boltz_data/boltz_shared volumes that are never declared. Because compose
validates the whole project up front, this broke every service: "docker
compose up -d bitcoind", the first command in the README, failed too.

Rather than repair a five-year-old file pinned to bitcoind 0.19.0 and lnd
0.12.0-beta, this replaces it.

What changed:

- bitcoind 30.0 and 3x lnd 0.20.0-beta, using Polar's images. They are
  multi-arch, so nothing is built locally and this works on arm64. The old
  setup built bitcoind and lnd from local Dockerfiles.
- Three nodes, not one: alice -> bob -> carol. bob forwards, so RTL's
  routing and forwarding screens have data. Two nodes leave them empty.
- scripts/seed.sh funds the nodes, opens channels, and makes payments with
  fixed amounts. A fresh run reproduces identical state, so screenshots
  taken before and after a change differ only by the change. It is
  deliberately not idempotent and refuses to run against a seeded network,
  since re-running would double-fund it.
- rtl/RTL-Config.regtest.json configures all three nodes. RTL rewrites its
  config on startup, so an init container stages a copy into a volume: a
  read-only bind mount makes RTL exit with EROFS, and a writable one would
  let RTL modify a tracked file. It is not named RTL-Config.json because
  .gitignore matches that bare name at any depth.
- bin/ln-cli now takes a node name and passes --lnddir=/home/lnd/.lnd,
  because 'docker compose exec' lands as root while lnd's datadir is under
  /home/lnd. Both helpers use compose v2.
- README rewritten to match.

Boltz, Core Lightning and Eclair are left out of this pass. Polar publishes
multi-arch clightning and eclair images, so adding them later needs compose
services, config entries and seed adapters, but no image building.

Verified from a clean 'down -v': all nodes sync, channels go active, 5/5
payments route through bob, bob records 5 forwards, and RTL serves the UI
with all three nodes configured. Two independent from-scratch runs produced
identical balances.

The old bitcoind/ and lnd/ build contexts are now unreferenced but left in
place for a follow-up.
2026-07-15 23:26:30 -07:00
Suheb
da25d16fb4
Update rtlreviewbot.yml
Updated the shim to point to rtlreviewbot-action
2026-06-09 19:51:51 -07:00
saubyk
715afa9043
Update copyright year in LICENSE to 2018-2026
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 12:16:26 -07:00
Suheb
f2314fcacf
Update rtlreviewbot.yml
Added the app installation id
2026-05-01 20:14:54 -07:00
Suheb
69888dd7b8
Create rtlreviewbot.yml
Added the Yaml file for the code review bot
2026-05-01 20:10:35 -07:00
ShahanaFarooqui
d8e6bb1b68 Fix Missing Memo in LND Invoices Table 2026-02-09 18:13:13 -08:00
ShahanaFarooqui
e8d5685948 Decode Payment with get/post method not fetch
Fixes #1550
2026-02-09 18:13:13 -08:00
ShahanaFarooqui
d038e15bd7 Version Update 2026-02-09 18:13:13 -08:00
ShahanaFarooqui
bdf9c832dd Side Navigation collapse bug fix 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
4e08fd7cba Update project code according to dependencies update 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
2f6cdb8fe0 Update project dependencies 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
f3f21c5949 Extract memo for keysend 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
08326f1383 fix channel backup error 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
e9e33da14d Fix page load bug due to zero connected channels (#1529) 2026-02-01 09:06:07 -08:00
3nprob
bbeb2c3b17 update .dockerignore (#1514)
* add src/app/shared/test-helpers to .dockerignore

* chore: add Dockerfile to .dockerignore
2026-02-01 09:06:07 -08:00
3nprob
10fc3368e9 Upgrade nodejs to v22 (#1515) 2026-02-01 09:06:07 -08:00
ShahanaFarooqui
d49124c052 Update Version 2026-02-01 09:06:07 -08:00
Suheb
0c90e454e8
Update export_traffic.py
Updated to the github repo name
2025-09-20 19:08:48 -07:00
Suheb
393262fa32
Update traffic-exporter.yml
updated to the correct credentials filename
2025-09-20 19:03:07 -07:00
Suheb
b67867af44
Update traffic-exporter.yml
updated the script path for real this time :)
2025-09-20 18:52:09 -07:00
Suheb
3f4236b4f2
Update traffic-exporter.yml
updated to the correct script path
2025-09-20 18:50:19 -07:00