Skip to content

chore: 2.6.0 rc1 preparation (replacement planned) - #1473

Open
piotr-iohk wants to merge 5 commits into
masterfrom
release-2.6.0
Open

piotr-iohk wants to merge 5 commits into
masterfrom
release-2.6.0

Conversation

@piotr-iohk

@piotr-iohk piotr-iohk commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

This PR records the original Bitkit 2.6.0 RC1 preparation on release-2.6.0. 3.0.0 RC2 will use a new release-3.0.0 branch and a replacement PR, created from current master after the agreed scope lands.

Replacement plan

  • Leave this PR and its branch unchanged while the required RC2 scope lands.
  • Create a fresh release-3.0.0 branch from current master in each app repository, then prepare version 3.0.0, a new build number and the consolidated changelog.
  • Open a new release PR for each platform and transfer the agreed scope and RC2 validation checklist below.
  • Once the replacement PR exists, add a “Superseded by #…” comment linking it and close this old PR without merging. Keep this PR open until then; replacement PR URLs are pending.
  • Preserve the existing RC1 GitHub draft release, assets and annotated v2.6.0 tag at their original revision. Create separate release records for 3.0.0 RC2.
  • Keep the new release PR open through RC2 testing and merge it into master after the 3.0.0 store release.
  • Historical counterpart: iOS #925.

Changelog corrections to carry forward

Before closing this PR, preserve Ovi's release-branch corrections from #1481, commits 0a0a707 and 2ea8a37:

Apply these corrections to the consolidated 3.0.0 changelog after collecting master’s fragments, and verify each survives final generation. A fresh collection alone would not preserve these release-branch edits. Carry forward their content without bringing back the 2.6.0 version/build metadata, duplicating entries, or altering the preserved RC1 tag and artifacts.

Agreed RC2 scope

Per the team scope confirmation:

Design

N/A — no UI changes in the release preparation commits.

Preview

N/A

QA Notes

Journeys

Validate the final RC2 revisions and production candidates: upgrades from released wallets and RC1, USDT opt-in/send/receive and Paykit payments, first-time Shop seller import and resume, translations, subscriptions, Bitcoin/Lightning, hardware wallets and channel recovery. A pending HTLC force-close claim is not covered by the standard E2E suite.

Automated Checks

RC2 results are pending the new release branch and final preparation commits. Record the exact tested revisions and CI/unit, integration where applicable, local E2E, migration and Android UI results before declaring the candidate ready.

Test compatibility work includes E2E #280 and Android UI fixes #1496; verify their integration and results against the selected RC2 revisions.

Manual Tests

RC2 production builds, artifact verification and release acceptance are pending. Record APK/AAB signing, checksums, matching native debug symbols and production-build QA when available.

Release artifacts

  • RC2: 3.0.0; build number, commit, tag and draft release pending the final cut.
  • Historical RC1: keep the existing GitHub draft and annotated v2.6.0 tag at 876d0982958e70eb10dd9a607a69f5b2851a3fdc as the original 2.6.0 RC1 (192) record. Preserve its assets and tag target when creating the replacement release branch.
  • Prepare a separate 3.0.0 draft/tag for the new cut; RC1 artifacts must not be presented as RC2.
  • Store notes and store records need updating for 3.0.0 with USDT and the agreed scope. The RC1 documents linked below remain historical until revised.
  • Announce RC2 availability after both platform artifacts and TestFlight are ready.
Historical RC1 preparation and validation (2.6.0; not RC2 evidence)

Prepare Bitkit 2.6.0 RC1 (build 192) from master, with the release changelog collected and a tagged GitHub draft.

Description

Design

N/A — no UI changes.

Preview

N/A

QA Notes

Journeys

The preparation commits change version metadata and changelog files only. Runtime testing of the RC binaries should cover upgrades, payments, Pubky/Paykit, hardware wallets and channel recovery. A pending HTLC force-close claim is not covered by the standard E2E suite.

Manual Tests

Production build passed on tagged RC1 revision 876d09829. All four APKs, AAB, full native debug symbols and SHA256SUMS are attached to the GitHub draft; all seven remote asset digests match local files. Universal APK metadata is to.bitkit, version 2.6.0, build 192, and its production signing certificate matches the previous release. AAB and universal APK copies are available in Downloads. Device QA of this production RC binary remains pending.

Automated Checks

CI/unit, lint, local E2E and migration passed on the app revision before the changelog-only commit. UI tests passed on the matching master base.

The tagged RC1 revision adds only changelog consolidation after validated app revision 501d7c174; release metadata and historical changelog checks passed. No new app-code edits were made during preparation.

Release artifacts

  • Tag: v2.6.0 at 876d09829 (RC1); GitHub release stays draft until store release.
  • Store release-note draft — five languages; shared read-only with Synonym.
  • Slack build announcement stays local until both Android artifacts and iOS TestFlight are available.

@piotr-iohk
piotr-iohk deployed to release-internal October 13, 2026 11:03 — with GitHub Actions Active
@piotr-iohk
piotr-iohk marked this pull request as ready for review October 13, 2026 11:35
@ovitrif ovitrif added this to the 2.6.0 milestone Oct 13, 2026
@greptile-apps

greptile-apps Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Low impact] The metadata-only change appears safe to merge.

Summary

Prepares Bitkit 2.6.0 by changing only release metadata in app/build.gradle.kts.

  • The Android app is now labeled version 2.6.0, build 192.

Reviews (3) · Last reviewed commit: "chore: version 2.6.0" · Reviewed by Greptile

@talosmachina talosmachina left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No findings. Bumps versionName to 2.6.0 and versionCode to 192 for the 2.6.0 release. Reviewed 143915c, light tier (4 changed lines, version metadata only).

Merge confidence: 4/5, CI build, E2E and E2E Migration were still running at review time; nothing in the diff itself holds it back.

What I checked

Read: the defaultConfig block of app/build.gradle.kts around the hunk; the only other versionCode uses in that file read it from the variant output for APK naming, so nothing else needs to move with it.
Version history: v2.5.0 shipped with 190/2.5.0. versionCode 191 is taken by release-2.5.1 (#1472, 191/2.5.1), so jumping to 192 here keeps the codes monotonic across both releases rather than skipping one by mistake.
CI: lint green; CI build, E2E build-local and E2E Migration build in progress.
Not done: no local Gradle build, on purpose (a Bitkit auto review never builds the PR branch here); this is reasoned from the code and CI.

@piotr-iohk
piotr-iohk marked this pull request as draft October 13, 2026 11:39
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Regtest APK

Built from b329b83 (run).

Download bitkit-dev-debug universal APK (expires in 30 days).

@cursor
cursor Bot force-pushed the release-2.6.0 branch from 3d828b6 to d38091d Compare October 13, 2026 20:46
@piotr-iohk
piotr-iohk marked this pull request as ready for review October 14, 2026 08:21
@piotr-iohk
piotr-iohk marked this pull request as draft October 14, 2026 08:30
@piotr-iohk
piotr-iohk marked this pull request as ready for review October 14, 2026 08:36
jvsena42
jvsena42 previously approved these changes Oct 14, 2026

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

No findings at 0d42fc9.

Checked: versionName 2.6.0 and versionCode 192 in app/build.gradle.kts. v2.5.0 shipped 190, and release-2.5.1 (#1472) holds 191 / 2.5.1, so 192 keeps the code monotonic across both releases. No other place in the file sets a version. CI is green at this head (build, lint, detekt, e2e, migration).

Device gate: no device check needed (version metadata only). perf: not relevant.

jvsena42
jvsena42 previously approved these changes Oct 14, 2026

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Reviewed as a release against v2.5.0 (the tag master descends from) and v2.5.1 (published hotfix, side branch), not only the two prep commits: 826 non-merge commits at 876d098. No HIGH or MEDIUM. Approving with 1 LOW inline; fix it here or move it to a follow-up issue, your call. Please reply on the thread saying which.

Checked and clean:

  • Version: versionCode 192 is above every tag (v2.5.0 190, v2.5.1 191). Tag v2.6.0 points at this head.
  • Changelog: all 100 fragments are consumed, and changelog.d/next and hotfix hold only .gitkeep. The [2.5.1] section is byte-identical to the one at v2.5.1, and the comparison links are correct. Every merged PR since v2.5.0 without an entry is CI, test, journey, chore or refactor, or is covered by a sibling entry. There is no entry for USDT or allowances, and no usdt in app/src/main.
  • Dependencies: ldk-node 0.7.0-rc.74, bitkit-core 0.5.18, paykit 0.1.0-rc74 and vss-client 0.5.23 match iOS synonymdev/bitkit-ios#925. rc.74 pins lightning, lightning-liquidity and lightning-transaction-sync to 0.2.7 (bumped in rc.72), so the 2.5.1 security fix carries forward. ldk-node rc.66..rc.74 touches nothing under src/io or the payment store, and the Room schema is unchanged since v2.5.1 (version 7).
  • Newly reachable by default: Paykit UI through the isPaykitEnabled default flip (#1359), as intended. The bitkit://screen/ dev deeplinks stay disabled in the release source set. The only Env.kt change is TAG_MAX_LENGTH; mainnet URLs are unchanged. The new exported SharedPubkyProvider is gated by a signature-level permission and a runtime checkSignatures check.
  • CI at 876d098: build, build-release, lint, detekt, all e2e shards, and migration from native 2.5.0 and RN 1.1.6 (upgrade and restore) are green. release-2.5.1 differs from v2.5.0 only in the ldk-node patch, so the 2.5.0 migration baseline stands in for a 2.5.1 field upgrade.

Device gate: no device check needed for the prep commits; the shipped behaviour's runtime evidence is the green e2e and migration runs above, and device QA of the RC binary stays with the release owner. perf: not relevant.

The out-of-scope items (mainnet LDK backup host still blocktank.synonym.to, ldkLogLevel = TRACE in release) are unchanged since v2.5.0 and not raised here.

Comment thread CHANGELOG.md
- Removed the redundant Auto toggle from the manual coin selection screen. #894
- Pasting part of a recovery phrase on the restore screen now fills the following word fields instead of being ignored. #896
- Paying a Lightning invoice created by your own wallet now shows an error, and unified QR codes containing one fall back to an on-chain send. #901
- Receiving over Lightning now refreshes liquidity requests correctly and avoids showing stale or invalid CJIT quotes.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is the only 2.6.0 entry with no PR number. It comes from the misnamed fragment changelog.d/next/receive-liquidity-cjit.fixed.md added in 06cf08ad3 fix: align receive liquidity (#1248), so the collector had no number to append. Nothing breaks at runtime, but the release notes lose the link back to the change.

Fix: append #1248 to this line.

Check
$ git show 876d098:CHANGELOG.md | awk '/^## \[2.6.0\]/{f=1;next} /^## \[/{f=0} f && /^- / && !/#[0-9]+/'
- Receiving over Lightning now refreshes liquidity requests correctly and avoids showing stale or invalid CJIT quotes.

@ovitrif ovitrif 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.

@piotr-iohk, release-notes review of the Android CHANGELOG.md 2.6.0 section at 876d098.

Fixed in #1481, against release-2.6.0:

  • #1272 (first-time guidance for balance unit and hiding) moves from Fixed to Added.
  • Entries pointing at still-open issues now point at the merged PRs that shipped them:

Still for you:

  • Draft release body: it says "RC1 for testing … USDT is not included in RC1"; edit before publishing.
  • Spending-confirm fix: #1367 adds no entry by design, since it fixes a regression in the unreleased change #1247 already describes. iOS lists its twin as a separate entry (#783); worth one approach on both sides.
  • Android-only entries, worth confirming iOS needs no twin:

chore: link 2.6.0 changelog entries to the prs that shipped them

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Re-checked at b329b83 after #1481. The only change since my last review (876d098) is CHANGELOG.md, so the rest of that review stands.

Checked:

  • #1272 moves from Fixed to Added. It adds first-time guidance toasts, so Added fits.
  • The renumbered entries now link to merged PRs on master: #1305 (session restore flag on pubky init failure), #1291 (node state reconciled on start cancel), #1451 (explicit contact linking priority). The old numbers (#1093, #1125, #1419) are issues, not PRs.
  • No other line in the file changed. CI is green at this head.

The LOW on the unnumbered receive-liquidity entry (line 114) is still open. It does not block; add #1248 here or leave it for the release notes, your call.

Device gate: no device check needed (changelog only). perf: not relevant.

@piotr-iohk piotr-iohk changed the title chore: bump version 2.6.0 chore: prepare 3.0.0 rc2 Oct 15, 2026
@piotr-iohk piotr-iohk changed the title chore: prepare 3.0.0 rc2 chore: 2.6.0 rc1 preparation (replacement planned) Oct 15, 2026

This branch was successfully deployed

2 active (outdated) deployments
release — 876d0982 Deployed Oct 14, 2026 by piotr-iohk via build-release #14
release-internal — 66d8a684 Deployed Oct 13, 2026 by piotr-iohk via build-internal #6
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.

4 participants