v2.0.2 - 2026-03-16
- fix(ci): prevent tagpr double-push from leaving cancelled test status by @Pon57 in #73
- fix(ci): prevent tagpr double-push from leaving cancelled test status by @Pon57 in #74
- fix(deps): update kotest to v6.1.6 by @renovate[bot] in #67
- chore(deps): update actions/create-github-app-token action to v2.2.2 by @renovate[bot] in #69
- chore(deps): update actions/create-github-app-token action to v3 by @renovate[bot] in #70
- fix(deps): update kotest to v6.1.7 by @renovate[bot] in #71
- fix(deps): update kotlin monorepo to v2.3.20 by @renovate[bot] in #72
v2.0.1 - 2026-03-10
- fix: use defensive copy for shared DEFAULT_MINOR by @Pon57 in #60
- docs: clarify versioning policy and v2 changelog notes by @Pon57 in #53
- docs: refine release note category titles by @Pon57 in #54
- refactor: replace per-file @OptIn(ExperimentalUnsignedTypes) with module-level opt-in by @Pon57 in #55
- perf: cache hashCode, short-circuit compareTo, and intern default index by @Pon57 in #57
- refactor: consolidate rebalance threshold constants into single object by @Pon57 in #56
- perf: cache FractionalIndex.default() as a singleton by @Pon57 in #58
- perf: add encodedLength property to FractionalIndex by @Pon57 in #59
- perf: zero-copy owned-minor construction in core insert paths by @Pon57 in #61
- chore: remove unused kotest Gradle plugin to fix test api warning by @Pon57 in #64
- perf: allocation-free compact minor estimation in scoring by @Pon57 in #63
- perf: eliminate Pair allocations in parse path by @Pon57 in #62
- Fix hashCode performance regression with a manual lazy cache by @Pon57 in #65
- Revert "perf: cache FractionalIndex.default() as a singleton" by @Pon57 in #66
- fix(deps): update kotest to v6.1.5 by @renovate[bot] in #51
v2.0.0 - 2026-03-08
- fix!: use compact successor after FractionalIndex.default() by @Pon57 in #49
after(FractionalIndex.default())now returns the compact successor8080. In v1, the first key generated afterFractionalIndex.default()was different.- This also affects nearby
before(...),between(...), andrebalance(...)results around the default key - Existing canonical keys remain valid and continue to sort correctly
- This also affects nearby
- Redesign rebalance with multi-strategy optimization by @Pon57 in #50
FractionalIndexGenerator.rebalance(...)has been redesigned around optional inclusive endpoints instead of exclusive bounds.- Parameters were renamed from
lowerExclusive/upperExclusivetolowerEndpoint/upperEndpoint - Non-null endpoints are now included in the returned list
- When both endpoints are present,
countnow means the total number of returned keys, including the endpoints - Reversed endpoints are now invalid; callers must pass an ascending range
- Exact rebalance output may differ from v1 because v2 uses a new optimization pipeline that prefers shorter layouts in major-gap, minor-gap, zero-major, pivot, and boundary cases
- Parameters were renamed from
Note
The compact successor change was conservatively listed as breaking at the time. Under the versioning policy now clarified in the README, this change alone would not require a major bump, as existing keys remain valid. See Versioning.
- If you previously used
rebalance(count, lower, upper)to generatecountinterior keys, change it to request the new total count including both endpoints - If you used named arguments, rename them to
lowerEndpoint/upperEndpoint - If you passed bounds in arbitrary order, normalize them before calling
rebalance - If you assert exact generated keys in tests, especially around
FractionalIndex.default(), update the expected values for v2
- chore(deps): update dependency com.android.kotlin.multiplatform.library to v9.1.0 by @renovate[bot] in #46
- chore(deps): update gradle to v9.4.0 by @renovate[bot] in #48
v1.2.0 - 2026-03-02
- feat: add rebalance API with deterministic in-range key redistribution by @Pon57 in #44
v1.1.0 - 2026-03-01
- feat: add OrThrow APIs by @Pon57 in #42
v1.0.1 - 2026-03-01
- test: add benchmark quality regression tests by @Pon57 in #36
- test: add relative and strict performance regression checks by @Pon57 in #38
- ci: pin upload-artifact action in perf-strict workflow by @Pon57 in #40
- refactor: split generator core and tests into internal modules by @Pon57 in #41
v1.0.0 - 2026-02-27
- feat!: redesign key generation with tiered encoding by @Pon57 in #28
- build: enable Kotlin ABI validation and ABI check in CI by @Pon57 in #22
- ci: run test workflow tasks at repository scope by @Pon57 in #23
- chore: add KMP drag-and-drop sample app by @Pon57 in #24
- docs: add Maven Central badge to README.md by @Pon57 in #25
- chore: configure renovate automerge for patch updates by @Pon57 in #29
- chore: configure project settings by @Pon57 in #30
- docs: update demo video and fix example jvmRun task by @Pon57 in #31
- feat: add codec parameter to Base64 encode/decode by @Pon57 in #32
- feat: add sortable Base64 encoding that preserves sort order by @Pon57 in #33
- docs: add versioning policy and remove pre-v1.0.0 warning by @Pon57 in #34
- perf: reduce object allocations in between() hot path by @Pon57 in #35
- chore(deps): update gradle/actions action to v5.0.2 by @renovate[bot] in #20
- fix(deps): update kotest to v6.1.4 by @renovate[bot] in #26
- chore(deps): update songmu/tagpr action to v1.17.1 by @renovate[bot] in #27
v0.0.4 - 2026-02-23
- ci: rename MavenCentral labels to Maven Central in publish workflow by @Pon57 in #18
v0.0.3 - 2026-02-23
- ci: add Gradle cache to tagpr workflow by @Pon57 in #12
- Ci workflow tuning by @Pon57 in #14
- Ci workflow tuning by @Pon57 in #15
- Ci workflow tuning by @Pon57 in #16
- ci: switch publish workflow to publishAndReleaseToMavenCentral by @Pon57 in #17
v0.0.2 - 2026-02-22
- Add test workflow by @Pon57 in #3
- Configure tagpr to auto-update JS/Wasm lockfiles after version bumps by @Pon57 in #5
- chore: Configure Renovate by @renovate[bot] in #6
- chore(deps): update gradle/actions action to v4.4.4 by @renovate[bot] in #7
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #8
- chore(deps): update gradle/actions action to v5 by @renovate[bot] in #11
- chore(deps): update actions/setup-java action to v5 by @renovate[bot] in #10