Skip to content

release: one binary per platform, vtesse-tap-<arch> dropped; vtesse 1.13.0 (#43) - #46

Merged
compot-dev merged 1 commit into
mainfrom
release/one-binary
Oct 17, 2026
Merged

compot-dev merged 1 commit into
mainfrom
release/one-binary

Conversation

@compot-dev

Copy link
Copy Markdown
Collaborator

Closes #43. Brings the Android versionCode formula left out of #45 (#44). vtesse 1.13.0, the first MAJOR.MINOR.PATCH version.

What changes

  • ci/build-musl.sh builds only vtesse-<target> (lwIP and TAP backends, --tap); vtesse-tap-<target> is no longer built or published. make LWIP=0 stays a build option: CI keeps its "TAP-only build" step and the bench its tap-test.
  • VTESSE_VERSION 1.13.0. Android versionCode = MAJOR*10000 + MINOR*100 + PATCH (11300; 1.12 was 112, so the update installs over the app), MINOR and PATCH must stay below 100.
  • READMEs (all three): one binary per platform with both backends; the old vtesse-tap-ARCH links return 404, vtesse-ARCH --tap replaces it; the OpenIPC and OpenWrt install commands fetch vtesse-$ARCH.
  • docs/usage.md, docs/testing.md (release files, the CI table realigned, versionCode); the device table of 2026-10-14 keeps the binaries it was tested with.
  • CHANGELOG.md: 1.13.0. The release will have 12 files instead of 17; it costs 72–83 KiB per binary for former vtesse-tap users (31–44 KiB compressed on flash), see Release: one binary per platform, drop vtesse-tap-<arch> #43.

Tests

What Result
compot/cross native make test 63 checks, 0 failures, no warnings, vtesse-cli 1.13.0
QEMU=1 ci/build-musl.sh arm32 / mipsel vtesse-arm32 181 572 B, vtesse-mipsel 204 020 B (as in 1.12), unit tests and --version under qemu; no vtesse-tap
compot/android assembleDebug versionCode 11300, versionName 1.13.0
version check 1.12 → 1.13.0 with its CHANGELOG.md section

….13.0 (#43)

- ci/build-musl.sh builds only vtesse-<target> (lwIP and TAP, --tap);
  the TAP-only vtesse-tap-<target> is no longer built or published.
  make LWIP=0 stays a build option, tested by CI (TAP-only build step)
  and the bench (tap-test).
- VTESSE_VERSION 1.13.0, the first MAJOR.MINOR.PATCH version (#44).
  Android versionCode is MAJOR*10000 + MINOR*100 + PATCH (11300, 1.12
  was 112), MINOR and PATCH below 100; version.h comment.
- READMEs: one binary per platform, the old vtesse-tap links return 404,
  the OpenIPC and OpenWrt install commands fetch vtesse-$ARCH.
- docs/usage.md, docs/testing.md: release files and the CI table; the
  device table of 2026-10-14 keeps the binaries it was tested with.
- CHANGELOG.md: 1.13.0.

Tested in compot/cross: make test 63 checks, 0 failures, no warnings;
ci/build-musl.sh arm32 and mipsel with QEMU=1: vtesse-arm32 181572 and
vtesse-mipsel 204020 bytes (as in 1.12), unit tests and --version under
qemu, no vtesse-tap; compot/android: assembleDebug, versionCode 11300,
versionName 1.13.0.

Closes #43
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Release one dual-backend binary per platform in vtesse 1.13.0

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Publish one lwIP-and-TAP binary per platform, replacing the separate TAP-only release asset.
• Adopt version 1.13.0 and an Android versionCode that permits upgrades from 1.12.
• Update installation instructions and release documentation to match the new assets.
Diagram

graph TD
  Build["musl build"] --> Binary["Dual-backend binary"] --> Release["Latest release"] --> Install["Device install"]
  Version["Version header"] --> Gradle["Android Gradle"] --> APK["Versioned APK"] --> Release
  Version --> Build
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Keep publishing a TAP-only variant
  • ➕ Preserves smaller prebuilt downloads for flash-constrained devices and existing asset URLs.
  • ➖ Retains duplicate cross-builds and release assets for every platform.

Recommendation: Use the PR's single-asset release strategy: it simplifies publishing and installation while retaining make LWIP=0 for devices that need a smaller custom build. The trade-off is that existing TAP-only asset URLs stop working and users must download the larger dual-backend binary.

Files changed (9) +58 / -37

Bug fix (1) +9 / -2
build.gradle.ktsDerive an upgrade-safe Android code from three-part versions +9/-2

Derive an upgrade-safe Android code from three-part versions

• Computes 'versionCode' as major × 10000 + minor × 100 + patch, treating a missing patch as zero. Requires minor and patch values below 100; version 1.13.0 yields 11300, above the prior app's 112.

android/app/build.gradle.kts

Documentation (6) +38 / -21
CHANGELOG.mdDocument the 1.13.0 release +15/-0

Document the 1.13.0 release

• Adds release notes for the single-binary policy, removal of TAP-only assets, version format, Android versionCode, and revised install commands.

CHANGELOG.md

README.mdPoint English installation instructions to the combined binary +3/-3

Point English installation instructions to the combined binary

• Explains the single dual-backend asset and the replacement for discontinued TAP-only links. Changes OpenIPC and OpenWrt download commands to fetch 'vtesse-$ARCH'.

README.md

README.ru.mdAlign Russian release and installation guidance +3/-3

Align Russian release and installation guidance

• Describes the combined binary and discontinued TAP-only links in Russian. Updates both device installation commands to download 'vtesse-$ARCH'.

README.ru.md

README.zh-CN.mdAlign Chinese release and installation guidance +3/-3

Align Chinese release and installation guidance

• Describes the combined binary and discontinued TAP-only links in Chinese. Updates both device installation commands to download 'vtesse-$ARCH'.

README.zh-CN.md

testing.mdUpdate CI and versioning documentation +11/-9

Update CI and versioning documentation

• Removes the TAP-only binary from the documented cross-build and release asset lists. Explains the new Android versionCode and its upgrade path from 1.12.

docs/testing.md

usage.mdClarify published binaries and optional TAP-only builds +3/-3

Clarify published binaries and optional TAP-only builds

• States that releases contain one full-featured binary per target. Clarifies that users can still build a smaller TAP-only binary locally with 'make LWIP=0'.

docs/usage.md

Other (2) +11 / -14
build-musl.shStop producing TAP-only cross-build release assets +8/-11

Stop producing TAP-only cross-build release assets

• Replaces the full/TAP build loop with one full-featured build per target. Removes the TAP-only binary's QEMU version smoke test while retaining tests for the full build.

ci/build-musl.sh

version.hSet the shared version to 1.13.0 +3/-3

Set the shared version to 1.13.0

• Changes 'VTESSE_VERSION' from 1.12 to 1.13.0 and documents the transition to three-part versions.

include/vtesse/version.h

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can see how risky a PR is at a glance with blast radius labels

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@compot-dev
compot-dev merged commit 3310f1d into main Oct 17, 2026
10 checks passed
@compot-dev
compot-dev deleted the release/one-binary branch October 17, 2026 20:15
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.

Release: one binary per platform, drop vtesse-tap-<arch>

1 participant