Skip to content

Releases: Kompkit/kompkit

KompKit v0.4.0-alpha.0

01 Mar 03:22
92fcc08

Choose a tag to compare

🏷️ 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 RangeError on NaN, Infinity, or min > max
    • Identical API across TypeScript, Kotlin, and Dart
  • 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 with cancel() — mirrors the Debounced<T> shape
    • TypeScript: throttle(fn, wait) returning T & { cancel(): void }
    • Kotlin: requires CoroutineScope (same pattern as debounce); wait in milliseconds
    • Dart: wait is a Duration (idiomatic); returns Throttled<T> with cancel()
    • Validates wait > 0 on all platforms — throws on invalid input
  • formatCurrency default currency fix (breaking)

    • Default changed from EURUSD to align with the existing en-US default locale
    • Affects all three platforms
    • Pass currency: "EUR" explicitly to restore previous behavior
  • Documentation expansion

    • All platform docs (web.md, android.md, flutter.md) expanded with real-world examples for clamp and throttle
    • React useEffect + useRef throttle cleanup pattern added
    • Vue onUnmounted throttle cleanup pattern added
    • Jetpack Compose LaunchedEffect throttle scroll tracking example added
    • Flutter StatefulWidget with initState/dispose lifecycle for throttle and debounce
    • 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 clamp and throttle sections
    • README.md: Quick Start updated to show all 5 utilities across all platforms

🧠 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-gradle action

🧪 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
  • develop and release branches in sync at v0.4.0-alpha.0

⚠️ Breaking Changes

Area Change Migration
formatCurrency default currency EURUSD 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 with cancel() support
  • Throttled<T> type/class on all platforms mirroring Debounced<T> shape
  • Real-world usage examples for clamp and throttle in all platform docs
  • React useRef + useEffect throttle cleanup pattern in web.md
  • Vue onUnmounted throttle cleanup pattern in web.md
  • Jetpack Compose throttled scroll tracker example in android.md
  • Flutter StatefulWidget throttle + dispose example in flutter.md
  • Cross-platform "throttled scroll header with clamped opacity" recipe in recipes.md
  • throttle and clamp entries in ARCHITECTURE.md API parity contract
  • throttle and clamp FAQ entries in faq.md
  • throttle rows in Platform Differences table in README.md

Changed

  • formatCurrency default currency: EURUSD on all platforms
  • README.md Quick Start expanded to show all 5 utilities
  • docs/CHANGELOG.md and packages/core/flutter/CHANGELOG.md updated
  • docs/roadmap.md updated — 0.4.0-alpha.0 is now current state
  • SECURITY.md supported versions table updated
  • Version bumped to 0.4.0-alpha.0 in lerna.json, package.json, pubspec.yaml, and all docs

Fixed

  • develop branch synced with release (was 1 commit behind after merge commit)
  • Remote URL corrected to lowercase (Kompkit/kompkit)
  • Stale Flutter version reference (3.24.03.27.4) in README_CI.md
  • Wrong formatCurrency output ("1.234,56 €") in README.md Quick Start examples

KompKit v0.3.0-alpha

20 Feb 14:00
a210a63

Choose a tag to compare

🏷️ 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: action moved to first param, scope last (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-ESen-US on all platforms
    • All platforms now accept BCP 47 locale strings (e.g. "en-US", "es-ES", "ja-JP")
    • Kotlin: converts BCP 47 string to Locale internally — callers no longer construct Locale objects
    • Dart: normalizes en-US → en_US for intl internally, adds ISO 4217 regex validation
    • Invalid currency codes throw on all platforms; invalid locale behavior documented per platform
  • Structural cleanup

    • Removed duplicate lib/src/kompkit_core.dart, unused themes/, docs/index.md
    • Renamed contributing.md → CONTRIBUTING.md (GitHub auto-link)
    • Added SECURITY.md and CODE_OF_CONDUCT.md
    • Added exports map, sideEffects: false, engines: ">=20" to web package.json
    • Added Flutter (pub) to Dependabot config, all ecosystems set to monthly
  • 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-gradle action

🧪 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-ESen-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: action is now first param, scope last
  • formatCurrency default locale: es-ESen-US on all platforms
  • formatCurrency Kotlin: accepts BCP 47 String instead of java.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.0 to v0.3.0-alpha.0

Removed

  • debounceVoid in 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...
Read more

KompKit v0.2.0-alpha

09 Feb 13:18
01b80f0

Choose a tag to compare

🏷️ 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
  • Dependency Updates
    • Kotlin: 2.1.02.3.0
    • ktlint-gradle: 12.1.214.0.1
    • detekt: 1.23.71.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: v3v5
    • Flutter CI version: 3.24.03.27.4
  • 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-gradle action
  • 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-alpha to v0.2.0-alpha

Fixed

  • Web CI workflow now excludes packages/core/flutter/** from triggers
  • Stale coroutines version references in docs (1.8.11.10.2)
  • Documentation inconsistencies where Flutter was missing from cross-platform references

KompKit v0.1.0-alpha

10 Nov 01:00

Choose a tag to compare

🏷️ 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
  • Documentation
    • README.md fully rewritten
    • Added /docs/ folder with:
      • README_CI.md – CI workflows and troubleshooting
      • CONTRIBUTING.md – branch flow and commit conventions
      • ARCHITECTURE.md – overview of monorepo modules
      • CHANGELOG.md – version history
  • Version bump: v0.1.0-alpha
  • Branch workflow established: developrelease

🧠 Technical Notes

  • Node version: 20.x
  • Java version: 17 (Temurin)
  • Gradle: Managed via setup-gradle action
  • Android SDK: Configured via setup-android action
  • 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 / develop branching model

Fixed

  • Build failures caused by outdated Gradle setup
  • Incorrect npm workspace paths
  • Android CI configuration replaced with Kotlin JVM tasks