Releases: Kompkit/kompkit
KompKit v0.4.0-alpha.0
🏷️ KompKit v0.4.0-alpha.0
🚀 Overview
Fourth alpha release of KompKit, adding two new cross-platform utilities — clamp and throttle — across all three platforms (Web/TypeScript, Android/Kotlin, Flutter/Dart), alongside a formatCurrency default currency fix, comprehensive documentation expansion with real-world examples, and full version alignment.
🧩 Highlights
-
New utility:
clamp- Constrains a number within an inclusive
[min, max]range - Pure, synchronous, zero dependencies on all platforms
- Throws
RangeErroronNaN,Infinity, ormin > max - Identical API across TypeScript, Kotlin, and Dart
- Constrains a number within an inclusive
-
New utility:
throttle- Limits a function to execute at most once per wait period
- First call executes immediately; subsequent calls within the cooldown are ignored
- Returns a
Throttled<T>object withcancel()— mirrors theDebounced<T>shape - TypeScript:
throttle(fn, wait)returningT & { cancel(): void } - Kotlin: requires
CoroutineScope(same pattern asdebounce);waitin milliseconds - Dart:
waitis aDuration(idiomatic); returnsThrottled<T>withcancel() - Validates
wait > 0on all platforms — throws on invalid input
-
formatCurrencydefault currency fix (breaking)- Default changed from
EUR→USDto align with the existingen-USdefault locale - Affects all three platforms
- Pass
currency: "EUR"explicitly to restore previous behavior
- Default changed from
-
Documentation expansion
- All platform docs (web.md, android.md, flutter.md) expanded with real-world examples for
clampandthrottle - React
useEffect+useRefthrottle cleanup pattern added - Vue
onUnmountedthrottle cleanup pattern added - Jetpack Compose
LaunchedEffectthrottle scroll tracking example added - Flutter
StatefulWidgetwithinitState/disposelifecycle forthrottleanddebounce - Complete Flutter app example updated to demonstrate all 5 utilities
- recipes.md: new cross-platform "throttled scroll header with clamped opacity" recipe
- packages/core/web/README.md: expanded
clampandthrottlesections - README.md: Quick Start updated to show all 5 utilities across all platforms
- All platform docs (web.md, android.md, flutter.md) expanded with real-world examples for
🧠 Technical Notes
- Node version: 20.x
- Java version: 17 (Temurin)
- Kotlin: 2.3.0
- TypeScript: 5.7+
- Flutter: 3.27.4 (stable)
- Dart SDK: >=3.0.0 <4.0.0
- Gradle: 8.5 via
setup-gradleaction
🧪 Validation
- ✅ Web build/tests pass — 43/43 (Vitest, tsup)
- ✅ Android build/tests pass — BUILD SUCCESSFUL (Kotlin 2.3.0, JUnit4)
- ✅ Flutter build/tests pass — 50/50 (flutter_test, intl 0.20.2)
- ✅ CI workflows verified on
develop - ✅ Documentation consistent across all platforms
- ✅
developandreleasebranches in sync atv0.4.0-alpha.0
⚠️ Breaking Changes
| Area | Change | Migration |
|---|---|---|
formatCurrency default currency |
EUR → USD |
Pass currency: "EUR" explicitly if needed |
throttle Kotlin |
Requires CoroutineScope parameter |
Pass active scope: throttle<T>(wait, scope) { ... } |
throttle Dart |
wait is Duration, not a number |
Use const Duration(milliseconds: 200) |
🧱 Known Limitations (Alpha)
- Android module not yet published to Maven Central
- Dokka V1 deprecation warning (V2 migration planned)
- TypeScript/V8 silently falls back on unrecognized locale strings (documented platform divergence)
- Kotlin/JVM silently falls back on unrecognized locale strings (documented platform divergence)
🧩 Changelog
[v0.4.0-alpha.0] — 2026-03-01
Added
clamp(value, min, max)utility on all platforms (TypeScript, Kotlin, Dart)throttle(fn, wait)utility on all platforms withcancel()supportThrottled<T>type/class on all platforms mirroringDebounced<T>shape- Real-world usage examples for
clampandthrottlein all platform docs - React
useRef+useEffectthrottle cleanup pattern in web.md - Vue
onUnmountedthrottle cleanup pattern in web.md - Jetpack Compose throttled scroll tracker example in android.md
- Flutter
StatefulWidgetthrottle + dispose example in flutter.md - Cross-platform "throttled scroll header with clamped opacity" recipe in recipes.md
throttleandclampentries in ARCHITECTURE.md API parity contractthrottleandclampFAQ entries in faq.mdthrottlerows in Platform Differences table in README.md
Changed
formatCurrencydefault currency:EUR→USDon all platforms- README.md Quick Start expanded to show all 5 utilities
docs/CHANGELOG.mdand packages/core/flutter/CHANGELOG.md updated- docs/roadmap.md updated —
0.4.0-alpha.0is now current state - SECURITY.md supported versions table updated
- Version bumped to
0.4.0-alpha.0inlerna.json,package.json,pubspec.yaml, and all docs
Fixed
developbranch synced withrelease(was 1 commit behind after merge commit)- Remote URL corrected to lowercase (
Kompkit/kompkit) - Stale Flutter version reference (
3.24.0→3.27.4) in README_CI.md - Wrong
formatCurrencyoutput ("1.234,56 €") in README.md Quick Start examples
KompKit v0.3.0-alpha
🏷️ KompKit v0.3.0-alpha
🚀 Overview
Third alpha release of KompKit, establishing conceptual API parity across all three platforms — Web (TypeScript), Android (Kotlin), and Flutter (Dart). This release introduces breaking changes to debounce and formatCurrency to align behavior, defaults, and error handling across platforms, alongside a formal API parity contract, structural cleanup, and significantly expanded test coverage.
🧩 Highlights
-
API Parity Contract
- Formal contract added to ARCHITECTURE.md defining what is guaranteed across platforms (function names, defaults, cancel() support, error behavior) and what may differ (param style, coroutine scope, locale conversion)
- Platform Divergence table documenting all known behavioral differences with rationale
-
debounce refactor (breaking)
- All platforms now return a Debounced object with a cancel() method
- TypeScript: typed Debounced interface, internal variable renames
- Kotlin:
actionmoved to first param,scopelast (enables trailing lambda), Debounced class with cancel() - Dart: Debounced class with typed call(T) and cancel(), removed
debounceVoid(use debounce instead)
-
formatCurrency standardization (breaking)
- Default locale changed from
es-ES→en-USon all platforms - All platforms now accept BCP 47 locale strings (e.g.
"en-US","es-ES","ja-JP") - Kotlin: converts BCP 47 string to
Localeinternally — callers no longer constructLocaleobjects - Dart: normalizes
en-US → en_USforintlinternally, adds ISO 4217 regex validation - Invalid currency codes throw on all platforms; invalid locale behavior documented per platform
- Default locale changed from
-
Structural cleanup
- Removed duplicate
lib/src/kompkit_core.dart, unusedthemes/, docs/index.md - Renamed
contributing.md → CONTRIBUTING.md(GitHub auto-link) - Added SECURITY.md and CODE_OF_CONDUCT.md
- Added
exportsmap,sideEffects: false,engines: ">=20"to web package.json - Added Flutter (
pub) to Dependabot config, all ecosystems set to monthly
- Removed duplicate
-
Documentation
- README.md: added Why KompKit, Target Audience, Stability Policy, Platform Differences sections
- docs/roadmap.md: rewritten to reflect current state and realistic milestones
- docs/recipes.md: all examples updated for new debounce API and BCP 47 locales
-
Tests
- Web: 4 → 19 tests
- Kotlin: 3 → 17 tests across 3 classes
- Flutter: all 4 test files updated for new API
🧠 Technical Notes
- Node version: 20.x
- Java version: 17 (Temurin)
- Kotlin: 2.3.0
- TypeScript: 5.7+
- Flutter: 3.27.4 (stable)
- Dart SDK: >=3.0.0 <4.0.0
- Gradle: 8.5 via
setup-gradleaction
🧪 Validation
- ✅ Web build/tests pass — 19/19 (Vitest 3.2.4, tsup 8.5.0)
- ✅ Android build/tests pass — 17/17 (Kotlin 2.3.0, JUnit)
- ✅ Flutter build/tests pass — 26/26 (intl 0.20.2)
- ✅ CI workflows verified on
develop - ✅ Documentation consistent across all platforms
⚠️ Breaking Changes
| Area | Change | Migration |
|---|---|---|
| debounce return type | Now returns Debounced instead of a plain function | Call as before; use .cancel() to cancel |
| debounce Kotlin params | action is now first param, scope is last |
Swap param order; use trailing lambda for action |
| debounce Dart | debounceVoid removed |
Use debounce((_) => ...) |
| formatCurrency default locale | es-ES → en-US |
Pass locale: "es-ES" explicitly if needed |
| formatCurrency locale type | Kotlin now takes String instead of Locale |
Pass "en-US" instead of Locale.US |
| formatCurrency errors | Invalid currency throws on all platforms | Validate currency codes before calling |
🧱 Known Limitations (Alpha)
- Android module not yet published to Maven Central
- Dokka V1 deprecation warning (V2 migration planned)
- TypeScript/V8 silently falls back on unrecognized locale strings (documented platform divergence)
- Kotlin/JVM silently falls back on unrecognized locale strings (documented platform divergence)
🧩 Changelog
[v0.3.0-alpha.0] — 2026-02-20
Added
- Debounced return type with cancel() on all platforms
- Formal API Parity Contract in ARCHITECTURE.md
- SECURITY.md and CODE_OF_CONDUCT.md
- Flutter (
pub) ecosystem in Dependabot config - Why KompKit, Target Audience, Stability Policy, Platform Differences sections in README.md
Changed
- debounce Kotlin:
actionis now first param,scopelast - formatCurrency default locale:
es-ES→en-USon all platforms - formatCurrency Kotlin: accepts BCP 47
Stringinstead ofjava.util.Locale - formatCurrency Dart: accepts BCP 47
String, adds ISO 4217 currency validation - Renamed
contributing.md → CONTRIBUTING.md - All Dependabot ecosystems set to monthly schedule
- Bumped version from
v0.2.0-alpha.0tov0.3.0-alpha.0
Removed
debounceVoidin Dart (use debounce instead)- Duplicate
lib/src/kompkit_core.dart - Unused
themes/directory and docs/index.md
Fixed
- Stale version badge in README.md
- In...
KompKit v0.2.0-alpha
🏷️ KompKit v0.2.0-alpha
🚀 Overview
Second alpha release of KompKit, introducing Flutter/Dart as a third platform alongside Web (TypeScript) and Android (Kotlin). This release also includes a comprehensive dependency update across all platforms and significant documentation improvements to reflect the three-platform architecture.
🧩 Highlights
- Flutter/Dart Platform (New)
- Full implementation with API parity:
debounce,debounceVoid,isEmail,formatCurrency - Comprehensive test suite (19 tests, 100% coverage)
- Flutter CI workflow with analysis, testing, coverage, and DartDoc generation
- Complete documentation (docs/flutter.md) and package README
- Full implementation with API parity:
- Dependency Updates
- Kotlin:
2.1.0→2.3.0 - ktlint-gradle:
12.1.2→14.0.1 - detekt:
1.23.7→1.23.8 - Vitest:
^1.6.0→^3.0.0 - tsup:
^8.0.0→^8.5.0 - TypeDoc:
^0.28.14→^0.28.16 - TypeScript:
^5.6.0→^5.7.0 - intl (Dart):
^0.19.0→^0.20.0 - flutter_lints:
^3.0.0→^5.0.0 - codecov-action:
v3→v5 - Flutter CI version:
3.24.0→3.27.4
- Kotlin:
- Documentation & CI
- Added Flutter references across all docs (ARCHITECTURE, CHANGELOG, README_CI, contributing, roadmap)
- Fixed Web CI path filter to exclude Flutter changes
- Enhanced PR template with three-platform checklist
- Updated stale version references throughout documentation
🧠 Technical Notes
- Node version: 20.x
- Java version: 17 (Temurin)
- Kotlin: 2.3.0
- TypeScript: 5.7+
- Flutter: 3.27.4 (stable)
- Dart SDK: >=3.0.0 <4.0.0
- Gradle: 8.5 via
setup-gradleaction - CI concurrency: Enabled per branch, path-filtered for all 3 platforms
🧪 Validation
- ✅ Web build/tests pass (Vitest 3.2.4, tsup 8.5.0)
- ✅ Android build/tests pass (Kotlin 2.3.0, JUnit)
- ✅ Flutter build/tests pass (19 tests, intl 0.20.2)
- ✅ CI workflows verified on
develop - ✅ Documentation up to date and consistent across all platforms
🧱 Known Limitations (Alpha)
- Android module uses basic Gradle setup (no release signing yet)
- Web build lacks publish step (to be added in Beta)
- Packages not yet published to registries (npm, Maven, pub.dev)
- Dokka V1 deprecation warning (V2 migration planned)
- Some internal docs placeholders marked as "WIP"
🧩 Changelog
[v0.2.0-alpha] — 2026-02-09
Added
- Flutter/Dart platform with full API parity (
debounce,isEmail,formatCurrency) - Flutter CI workflow (.github/workflows/flutter.yml)
- Flutter documentation and DartDoc API docs
- Enhanced PR template with three-platform checklist
Changed
- Updated all dependencies to latest versions (see Highlights above)
- Updated documentation across the project to include Flutter platform
- Bumped version from
v0.1.0-alphatov0.2.0-alpha
Fixed
- Web CI workflow now excludes
packages/core/flutter/**from triggers - Stale coroutines version references in docs (
1.8.1→1.10.2) - Documentation inconsistencies where Flutter was missing from cross-platform references
KompKit v0.1.0-alpha
🏷️ KompKit v0.1.0-alpha
🚀 Overview
This is the first public alpha release of KompKit, a modular toolkit designed to unify web and Android development workflows within a single monorepo architecture.
It includes a complete refactor of CI/CD pipelines, documentation, and foundational setup for future stable versions.
This release establishes the base structure for modular development, testing, and packaging, along with the initial developer documentation and guidelines.
🧩 Highlights
- Full CI refactor
- Web: Node + npm/pnpm workflows with caching and path filters
- Android: Kotlin + Gradle CI with JDK 17 and SDK caching
- Monorepo architecture
- Unified structure for
web,android, and shared modules - Path-based job filtering for efficient CI runs
- Unified structure for
- Documentation
README.mdfully rewritten- Added
/docs/folder with:README_CI.md– CI workflows and troubleshootingCONTRIBUTING.md– branch flow and commit conventionsARCHITECTURE.md– overview of monorepo modulesCHANGELOG.md– version history
- Version bump:
v0.1.0-alpha - Branch workflow established:
develop→release
🧠 Technical Notes
- Node version: 20.x
- Java version: 17 (Temurin)
- Gradle: Managed via
setup-gradleaction - Android SDK: Configured via
setup-androidaction - Permissions: Minimal CI tokens (
contents: read,pull-requests: read) - CI concurrency: Enabled to cancel redundant builds per branch
🧪 Validation
- ✅ Web build/tests pass
- ✅ Android build/tests pass
- ✅ CI workflows verified on
develop - ✅ Documentation up to date and consistent
🧱 Known limitations (Alpha)
- Android module uses basic Gradle setup (no release signing yet).
- Web build lacks publish step (to be added in Beta).
- CI optimization still pending for multi-module parallelization.
- Some internal docs placeholders marked as “WIP”.
🧩 Changelog
[v0.1.0-alpha] — 2025-11-10
Added
- Initial monorepo structure (
web,android,docs) - CI workflows for Node and Kotlin/Gradle
- Documentation set (
README,CI,Contributing,Architecture) - Established
release/developbranching model
Fixed
- Build failures caused by outdated Gradle setup
- Incorrect npm workspace paths
- Android CI configuration replaced with Kotlin JVM tasks