Skip to content

Fixes the e2e build and two defects the test run surfaced. - #43

Merged
davidreband merged 4 commits into
Doichain:devfrom
davidreband:dev
Oct 15, 2026
Merged

davidreband merged 4 commits into
Doichain:devfrom
davidreband:dev

Conversation

@davidreband

Copy link
Copy Markdown
Collaborator
  • The e2e job on dev currently fails at "Build": navigation/ViewEditMultisigCosignersStack.tsx
    imports ./LazyLoadViewEditMultisigCosignersStack, which has never existed in the tree. The
    module is added, and e2e goes green.

  • StorageProvider reported a slow wallet refresh as a failed one. The timeout now starts where
    the guarded work starts, and the catch tells a deadline apart from a real error.

  • The android signing lanes treated an unset secret as present, because GitHub passes an unset
    secret as an empty string rather than as nil. The lane wrote a zero-byte keystore, reported
    success, and let the failure surface eleven minutes later as "Tag number over 30 is not
    supported". Both secrets are now checked for empty, and the password is checked before the
    gradle build rather than after it.

  • MasterView.tsx at the repository root is an unreferenced duplicate of navigation/MasterView.tsx,
    which is what App.tsx imports. Removed.

test and e2e both pass on this branch in davidreband#5.

David Reband and others added 4 commits October 14, 2026 16:25
A refresh on the test device showed the user "[refreshAllWalletTransactions]
Error: Error: Timeout reached". The refresh had in fact worked: the log reads

  16:07:48  Starting refresh
  16:07:54  Connected to Electrum        <- 6.3 sec gone before a request went out
  16:08:48  Timeout reached
  16:08:53  fetch balance took 59.418 sec
  16:08:56  fetch tx took 3.064 sec
  16:08:56  Saving data to disk

Two things were wrong with that.

The sixty seconds were armed at the top of the refresh, before the wait for
connectivity, the ping and the payment codes - so a slow connection spent the
budget meant for fetching. Here it took 6.3 of them. The timer now starts where
the work it guards begins.

And losing the race does not cancel that work: it carried on and saved eight
seconds later. Reporting it through console.error said the refresh failed when
it had not. The deadline is now told apart from a real error and logged for
what it is - still running, it will finish on its own.

The sixty seconds themselves are left alone. Balances taking 59 seconds is the
thing worth explaining, and raising the cap would only hide it; the servers
were dropping connections all day, and the same sweep measured 0.4 sec for the
same work on a healthy one.
The release build stopped bundling:

  Unable to resolve module ./LazyLoadViewEditMultisigCosignersStack from
  navigation/ViewEditMultisigCosignersStack.tsx

The stack has imported that file since it was written and the file has never
existed. Nothing noticed because nothing imported the stack: the multisig
cosigners route pointed at the bare screen under a name no caller used. Wiring
the route to the stack made the gap reachable, and the e2e job - which runs
detox build -c android.release - failed on it.

tsc had been reporting it the whole time, as TS2307 among the hundred errors
this repository carries. Four more of those are missing modules too, and all
four are unreachable: an orphaned MasterView.tsx at the repository root that
nothing imports and that points at a CompanionDelegates which exists nowhere,
a TransactionsMonitor importing an uninstalled react-native-live-activity with
no importer of its own, and two inside screen/lnd. The references to
ScanLNDInvoice from live files are route-name strings, not imports.

The new file follows the ten siblings beside it, LazyLoadScanQRCodeStack and
the rest. assembleRelease now succeeds.
App.tsx has imported ./navigation/MasterView since the fork point; the
root-level copy is an older duplicate that nothing references. It only
served to confuse readers and to add one unresolved-module error to tsc.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
An unset GitHub secret reaches the lane as an empty string rather than
as nil, so the nil-only guard let prepare_keystore write a zero-byte
keystore and report success in two seconds. The failure then surfaced
eleven minutes later, after a full gradle build, as

    Failed to load signer "signer #1"
    java.io.IOException: Tag number over 30 is not supported

which points at the keystore format and not at the missing secret.

Both secrets are now checked for empty as well as nil, and the password
is checked at the top of update_version_build_and_sign_apk rather than
beside the apksigner call, so a missing one is reported before the build
instead of after it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@davidreband
davidreband merged commit 9f27639 into Doichain:dev Oct 15, 2026
2 checks passed
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.

1 participant