Skip to content

Release train

Releases are cut as a release train: one repo-wide tag, khflutterlib-v<x.y.z>, that every package is consumed at together.

Pin every kh_* package your app uses to the same release-train tag. The packages depend on each other through that same tag, and pub won't accept two git refs for one package. Mixing tags, using a branch, or using the older per-package tags (such as kh_core-v0.1.1) makes flutter pub get fail.

dependencies:
  kh_core:
    git:
      url: https://github.com/msflib/flutter.git
      path: packages/kh_core
      ref: khflutterlib-v0.4.3
  kh_ui:
    git:
      url: https://github.com/msflib/flutter.git
      path: packages/kh_ui
      ref: khflutterlib-v0.4.3

To upgrade, change every ref together.

Compatibility matrix

Release train kh_core kh_theme kh_ui kh_screens kh_utils
khflutterlib-v0.4.3 0.2.0 ⚠️ 0.1.2+2 0.2.2+2 0.1.1+8 0.1.2+1
khflutterlib-v0.4.2 0.2.0 ⚠️ 0.1.2+2 0.2.2+1 0.1.1+7 0.1.2+1
khflutterlib-v0.4.1 0.2.0 ⚠️ 0.1.2+1 0.2.2 0.1.1+6 0.1.2+1
khflutterlib-v0.4.0 0.2.0 ⚠️ 0.1.2+1 0.2.1 0.1.1+5 0.1.2+1
khflutterlib-v0.3.0 0.1.3 0.1.2 0.2.0 ⚠️ 0.1.1+4 0.1.2
khflutterlib-v0.2.0 0.1.2 0.1.2 0.1.2 0.1.1+3 0.1.1

⚠️ marks a breaking change:

  • kh_core 0.2.0: KhEnvironmentConfig.apiBaseUrl is now String?. Add a null check where you read it, or move backend settings to typed fields on a subclass. See kh_core, "Environment configuration".
  • kh_ui 0.2.0: KhErrorState no longer shows KhFailure.message, only user-safe copy. See kh_ui, "Error copy" for the migration note.

Releases before khflutterlib-v0.2.0 used per-package tags only, and their internal refs don't line up. Don't build new apps against them.

For how releases are cut, see §13 of PHASE_0_ARCHITECTURE.md.