Skip to content

Release: develop -> main#3857

Open
github-actions[bot] wants to merge 9 commits into
mainfrom
develop
Open

Release: develop -> main#3857
github-actions[bot] wants to merge 9 commits into
mainfrom
develop

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

Automatic Release PR

This PR was automatically created after changes were pushed to develop.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge when ready for production

Danswar and others added 4 commits June 10, 2026 12:35
* feat(lightning): support loading LND TLS certificate from file

Add optional LIGHTNING_API_CERTIFICATE_PATH env var. When set and the file is readable, the LND TLS certificate is read from disk (the live cert); otherwise it falls back to the existing LIGHTNING_API_CERTIFICATE env var, unchanged. Fully backward compatible.

* Read LND cert from file only, drop env-var fallback

Address review: if LIGHTNING_API_CERTIFICATE_PATH is set, read it or throw.
The LIGHTNING_API_CERTIFICATE env var was the stale copy this change fixes,
so keeping it as a silent fallback only masks a broken mount. Remove it.
A single BuyFiat with incomplete creditor data caused fiatOutputService.createInternal to throw 'Failed to create fiat output...', which escaped the unguarded loops in addFiatOutputs and aborted the entire cron run, blocking all other pending payouts.

Wrap each createInternal call in try/catch and log per-entity, matching the existing pattern used by the other per-entity loops in this service (AML check, fee refresh, output setting, completion, chargeback).
…#3867)

When LIGHTNING_API_CERTIFICATE_PATH is not set (Azure App Service has no
cert file mount), fall back to reading the inline PEM from
LIGHTNING_API_CERTIFICATE using the legacy <br> newline separator.
…ling (#3859)

* Skip exchanges with no API credentials in liquidity balance polling

The liquidity-management exchange adapter polls every exchange's balance
each cycle. When an exchange has no API credentials configured (e.g. XT on
dev, where XT_KEY/XT_SECRET are unset), the ccxt call threw an
AuthenticationError that was logged as ERROR and re-thrown every cycle
(~60 error logs/hour).

Add an isConfigured getter to ExchangeService (true only when both apiKey
and secret are set) and, in the adapter, skip unconfigured exchanges
gracefully: return empty balances instead of calling getBalances(), and
warn once per exchange instead of erroring every cycle. The configured-
but-failed case keeps the existing ERROR + re-throw behavior.

* refactor(exchange): make isConfigured part of the type contract (David review)

@TaprootFreak TaprootFreak left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nicht mergen — ein Commit bricht mit hoher Wahrscheinlichkeit LNbits auf PRD

TaprootFreak and others added 4 commits June 12, 2026 00:37
… balances (#3870)

Returning LiquidityBalance.create(a, 0, 0) for exchanges without API
credentials persists fake zero balances via saveBalanceResults. If a
configured exchange ever loses its credentials (env regression), the
rules would see a sudden zero balance and could trigger rebalancing
pipelines towards an exchange we cannot even query — with only a
single warn log per process lifetime as a hint.

Return no balances instead: verifyRule already handles a missing
balance gracefully (info log, rule skipped).
…ld (#3875)

The juicedollar ponder schema generalized the position's stablecoin
contract field from jusd to stablecoinAddress (multi-stablecoin support),
so getPositionV2s failed with GRAPHQL_VALIDATION_FAILED on every
processLogInfo cycle. The public JuicePositionDto keeps the jusd key, only
the graph query and graph DTO are renamed.
Second schema rename in the generalized juicedollar ponder (after
stablecoinAddress, #3875): the equity entity jUICE is now poolShare,
same fields (id, profits, loss, reserve) and still keyed by the
stablecoin address, verified against both deployed ponders.
…3876)

Fiat outputs can fail transmission to the bank (e.g. Olkypay model
validation errors) and then sit ready but untransmitted indefinitely,
visible only in the entity info column. Count outputs with isReadyDate
older than one hour and no isTransmittedDate in the payment observer
and surface them in the health check.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants