Skip to content

chore: bump version 3.1.0 - #1193

Open
piotr-iohk wants to merge 2 commits into
masterfrom
release-3.1.0
Open

piotr-iohk wants to merge 2 commits into
masterfrom
release-3.1.0

Conversation

@piotr-iohk

@piotr-iohk piotr-iohk commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator

Twin: synonymdev/bitkit-android#1755

This PR prepares version 3.1.0 (build 203) from master for release testing. Merge after the store release.

Description

  • Bump version 3.0.1 → 3.1.0 and build 202 → 203.
  • Collect next-release changelog fragments into the dated 3.1.0 section.
  • Release base: 4ac08000fd0ba277c472ae171d03c45751576c75.

Design

N/A — no UI changes.

Preview

N/A

QA Notes

Setup

Release branch release-3.1.0. Staging workflow uses regtest and synonymdev/bitkit-e2e-tests branch main; completed staging/migration checkout logs resolve to 611509ee2d6dc44094276b567ac51949d63760f9.

Journeys

N/A — this PR changes version and changelog metadata only.

Manual Tests

N/A for the metadata changes. Release device sign-off remains separate.

Automated Checks

No test changes. Current release automation results and coverage caveats follow.

Automated test status

Final results checked 2026-11-02 17:56 CET on release commit 6bcce8f77d4077430d7183c40e8062b0a0326d67.

Gate Status Evidence / coverage
Unit tests PASSED Workflow completed successfully.
Integration tests PASSED Workflow completed successfully.
Lint PASSED Workflow completed successfully.
Translations PASSED Workflow completed successfully.
Local E2E PASSED 13 tests passed across two attempts; 1 intentional hardware-wallet transfer skip (Blocktank order retirement). Attempt 1: 12 passed, multi_address_4 failed waiting for Background Payments/home UI. Attempt 2: remaining test passed; 12 already-passed cases omitted, plus the same intentional skip.
Migration PASSED All four paths passed: native restore attempt 1; native upgrade and RN restore attempt 2; RN upgrade attempt 3. RN source preparation also required a retry.
Staging / nightly UI PASSED Pubky/Paykit: 6 tests passed on attempt 2 after attempt 1 timed out starting the WebDriver session. Transfer: 2 skipped; multi-address: 1 skipped (intentionally disabled after Blocktank order retirement; no cases executed). Nightly UI: 28 passed on attempt 1, 1 explicit skip (settings_08, switch address types). multi_address_1 (receive to each address type and send max combined) passed. E2E revision: 611509ee2d6dc44094276b567ac51949d63760f9.

All current-head test workflows have finished successfully. Local E2E, migration and Pubky/Paykit required retries; explicit skips remain coverage exclusions. No release sign-off is implied. No release sign-off is implied.

Evidence

Xcode 26.0.1 archived 3.1.0 (203) from the release commit; app and extension signatures/versions and the app dSYM UUID were verified. Build 203 is available in TestFlight.

Version/build consistency, changelog fragment preservation, unchanged released changelog history and git diff --check passed. Independent metadata review found no actionable findings. Release commit signature verified locally and by GitHub.

Gaps

All automated runs are finished. Nightly UI passed 28 tests on attempt 1 with settings_08 explicitly skipped. Local E2E passed on attempt 2 (13 total passed, 1 intentional hardware-wallet transfer skip). Pubky/Paykit passed all 6 tests on attempt 2 after a session-start timeout. Transfer and multi-address were intentionally skipped. Migration passed with retries. Manual release QA and allowance-specific runtime gaps remain outside these automation results.

Release runs

Current release commit: 6bcce8f77d4077430d7183c40e8062b0a0326d67. The signed v3.1.0 tag points here. All 3.1.0 changelog entries now have PR references; both draft release bodies contain the changelog. Earlier runs were cancelled after the changelog correction.

Store release notes — shared with synonym.to.

Models used

  • Planning/scoping: gpt-6-astra (reasoning: high)
  • Implementation: gpt-6-astra (reasoning: high)
  • Review: gpt-6-astra (reasoning: high)
  • Review rounds: 1

@greptile-apps

greptile-apps Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Low impact] This metadata-only PR appears safe to merge under the stated post-release plan.

Summary

Prepares version 3.1.0 with build 203.

  • Bitkit builds now identify as version 3.1.0, build 203.
  • The 3.1.0 changelog gathers the release notes under a dated section.

piotr-iohk explicitly states that release-branch runtime results are pending and that device sign-off, the Xcode archive, and TestFlight upload remain separate. This metadata review does not establish those results.

Reviews (1) · Last reviewed commit: "chore: version 3.1.0" · Reviewed by Greptile

@ovitrif

ovitrif commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Milestone 3.1.0: this is the 3.1.0 release version bump.

@ovitrif ovitrif added this to the 3.1.0 milestone Nov 2, 2026

@talosmachina talosmachina left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

No findings. Release prep for Bitkit iOS 3.1.0: MARKETING_VERSION 3.0.1 to 3.1.0 and CURRENT_PROJECT_VERSION 202 to 203 in all six app-target configurations (the four extension/test configurations stay at 1 / 1.0 as on master), and the changelog.d/next/ fragments collected into a dated [3.1.0] section. Reviewed 08faaf7, light tier, static (metadata-only diff; per the Bitkit track rules this box does not build the app branch, CI does).

What I checked, and 3 candidates I ruled out

Changed: Bitkit.xcodeproj/project.pbxproj, CHANGELOG.md, and 64 deleted fragments under changelog.d/next/ (only .gitkeep remains).

Changelog reproduced, not read: ran scripts/collect-changelog.sh --target next from master's own copy on a clean worktree of the base (master, the PR's merge base). It collected 64 entries; the only difference from this PR's CHANGELOG.md is the ## [3.1.0] - 2026-11-02 heading and the two link-reference lines ([Unreleased] now compares from v3.1.0, new [3.1.0] compares v3.0.1...v3.1.0). So every bullet, its category (6 Added, 7 Changed, 50 Fixed, 1 Security) and its #<n> suffix is exactly what the fragments produce, and no released section was touched (the diff's only removed line is the old [Unreleased] link).

Version: MARKETING_VERSION 3.0.1 to 3.1.0 and CURRENT_PROJECT_VERSION 202 to 203 in all six app-target configurations (the four extension/test configurations stay at 1 / 1.0 as on master); no other occurrence of the old marketing version left in the build file.

Ruled out

  • Tag already exists: v3.1.0 points at 08faaf7, the head of this PR, which is what Docs/RELEASE.md describes (tag the release branch, merge this PR after the store release).
  • Fragments lost: 64 fragments deleted, 64 bullets in the new section, each fragment's text found in its category.
  • Hotfix fragments: changelog.d/hotfix/ holds only .gitkeep on both base and head, so nothing was skipped.

Merge confidence: 4/5, no findings, but CI is still running at the time of review (unit, integration, build-local and migration jobs pending), so the green row does not apply yet.

Reviewer model: claude-opus-5-5
Reasoning effort: Not exposed (the reviewer's session metadata names the model but carries no reasoning setting)

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

Code scan against v3.0.1, the last published release on this lineage. No findings. Approval waits for CI.

  • Version: 3.1.0 (203) in all six app, widget and notification configs; 203 is above every published build (v3.0.1 202, v3.0.0 200).
  • Changelog: all 64 fragments consumed; everything from ## [3.0.1] down is byte-identical to v3.0.1; the compare links are correct. Every user-facing PR merged since v3.0.1 has an entry, except #1144 (a shorter French empty-wallet prompt). No entry describes excluded work: #1021 is on master after the release base and is correctly absent.
  • Hotfixes: v3.0.0 (version and changelog only) has nothing to carry. The v2.5.1 Lightning 0.2.7 security backport is carried: ldk-node rc.78 still pins lightning = 0.2.7.
  • Dependencies since v3.0.1: ldk-node rc.76 → rc.78, bitkit-core rc6 → rc11, paykit 0.1.0 → 0.1.1-rc2, vss 0.5.23 → 0.5.26-rc1. None needs a stored-state migration. All four match synonymdev/bitkit-android#1755.
  • App data: AppDataMigrations 2 → 4. Migration 3 clears paykitUiEnabled. Migration 4 turns off public publishing, queues public-endpoint cleanup and moves the legacy on-chain address. The new keychain keys and the USDT_RECOVERY backup category are additive.
  • Newly on by default since v3.0.1: Paykit UI and allowances. Geoblocking and the Blocktank order, CJIT and push paths are removed. Public Paykit payments default to off. Each of these is intended and has a changelog entry.
  • Debug leaks: none in Release. Compilation conditions are inherited only, the network resolves to mainnet, the E2E endpoints sit behind #if DEBUG || E2E_BUILD, and E2E_BUILD is not defined.

Notes for the release, nothing to change here:

  • A send broadcast on 3.0.1 that is still unconfirmed at upgrade can't be boosted afterwards. ldk-node rc.78 has no broadcast record for it, so Boost shows "No broadcast record for this transaction". #1140 documents this. Store notes may want to mention it.
  • With Blocktank push registration removed (#1127), the app is no longer woken for incoming Lightning payments while closed, including on existing channels. The changelog mentions only transfers and force close. Android does the same (synonymdev/bitkit-android#1696).

Device gate (partial): 6bcce8f — not run; the runtime evidence is CI. Pending at 6bcce8f: Run Tests, Integration Tests, e2e-tests-local, the four migration runs (native_upgrade and native_restore from 3.0.1, rn_upgrade and rn_restore from v1.1.6), and E2E Staging. I'll approve once they're green.

ovitrif

This comment was marked as duplicate.

@ovitrif
ovitrif dismissed their stale review November 2, 2026 16:02

Replaced by a comment review: release PRs merge after the store release.

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

Verdict: 💬 No blocking findings. Posted as a comment, not an approval, so this release PR is not merged before the store release; version and changelog are correct, and the notes below are non-blocking.

Checked

  • MARKETING_VERSION 3.1.0 and CURRENT_PROJECT_VERSION 203 in all six shipping configs (app, widget, notification); test targets unchanged. 203 is above every tagged build (202 is the last). Info.plists read the build settings.
  • v3.1.0 points at 08faaf7; this head adds only the #1140 link in CHANGELOG.md.
  • All 64 changelog.d/next/ fragments are in the [3.1.0] section with the right category and number, and the folder is empty again. Compare links are correct.
  • The diff touches only project.pbxproj, CHANGELOG.md and the fragments. CI is green apart from the e2e runs, still in progress at review time.

Notes (non-blocking)

  • Master now also has #1021 (news widget time at large text), merged after the cut, so it is not in v3.1.0 and its fragment stays in changelog.d/next/ after this merges. Build the store release from the tag; if 3.1.0 is rebuilt from master, that fix ships without a changelog entry.
  • CHANGELOG.md:82-89: 7 blank lines before ## [3.0.1].
  • CHANGELOG.md:41 (#1054) packs three unrelated fixes into one line.

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

Approving at 6bcce8f. The code scan in my partial review stands: no findings against v3.0.1.

Five candidates raised on the Android twin were checked here as well. Three reach this release unchanged, and each was intended or accepted in its own PR: paid but unopened Blocktank orders settled without a channel (#1127), the generic error when boosting a send from before the upgrade (#1140), and an allowance auto-payment left in the unknown state after an unclassified pre-send error. The other two are not introduced by this release:

  • The pending-restore lockout already existed in v3.0.1, which had no Proceed path.
  • The fee warning, the display and the broadcast all use the same rate.

CI at 6bcce8f is green:

  • SwiftFormat, lint, build, unit and integration tests, and e2e-tests-local.
  • All four migration runs: native_upgrade and native_restore from 3.0.1, rn_upgrade and rn_restore from v1.1.6.
  • E2E Staging run 41468161055: transfer, multi_address, pubky and ios_nightly_ui.

Device gate: no device check needed — the diff is version and changelog only; the shipped code's runtime evidence is the CI above.

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