Skip to content

Releases: sufarook/Kiln

v1.0.0-alpha04

v1.0.0-alpha04 Pre-release
Pre-release

Choose a tag to compare

@sufarook sufarook released this 11 Aug 12:08
87f84db

The first release to include composite primary keys and @Relation on junction tables — plus a substantial reliability pass (cross-platform testing, binary-compatibility guarding) and the project's first LICENSE file.

plugins {
    id("io.github.sufarook.kiln") version "1.0.0-alpha04"
}

✨ New features

Composite primary keys
Annotate two or more properties with @PrimaryKey to form a composite key. Kiln generates an <Entity>Key data class and uses it wherever a single-key entity would use its key type:

@DbEntity(tableName = "assignments")
data class Assignment(
    @PrimaryKey val taskId: Long,
    @PrimaryKey val userId: Long,
    val assignedAt: String = ""
)

val key = AssignmentKey(taskId = 1, userId = 2)
assignmentRepo.findById(key)
assignmentRepo.delete(key)

@Relation on key columns — junction tables & shared-primary-key 1:1
A key column can now also be a foreign key. Add @Relation to composite-key columns and get the FK helpers on each:

@DbEntity(tableName = "task_tags")
data class TaskTag(
    @PrimaryKey @Relation val taskId: Long,
    @PrimaryKey @Relation val tagId: Long
)

taskTagRepo.findByTask(taskId = 1)    // every tag on a task
taskTagRepo.findByTag(tagId = 5)      // every task with a tag
taskTagRepo.deleteByTask(taskId = 1)

🛡️ Reliability

  • Binary compatibility validation now guards the public API of annotations and runtime (JVM, Android, and the iOS KLib ABI) — accidental breaking changes fail CI.
  • The SchemaMigrator / query DSL / transaction test suite now runs on a real iOS simulator (Kotlin/Native), not just the JVM — so migration and DSL behavior is verified on every published target. This also caught and fixed a real composite-key SQL bug in the migrator's table-rebuild path.
  • Quality gates added: ktlint formatting, Kover coverage reporting, and a Dokka API reference published alongside the docs.

📄 Docs & project

  • Added the Apache-2.0 LICENSE file — the repository previously had none despite every POM declaring it.
  • Corrected stale FAQ answers (transactions, foreign keys, pagination) that predated shipped features, and the @Relation(foreignKey=…) typo in the README (the parameter is cascade).
  • Brand identity on the docs site: logo, favicon, and violet palette.
  • Contributor scaffolding: CONTRIBUTING.md, issue/PR templates, branch protection.

📦 Maven coordinates

Artifact Coordinate
Plugin io.github.sufarook.kiln:1.0.0-alpha04
Annotations io.github.sufarook.kiln:annotations:1.0.0-alpha04
Runtime io.github.sufarook.kiln:runtime:1.0.0-alpha04
Processor io.github.sufarook.kiln:processor:1.0.0-alpha04

Upgrading

No breaking changes — everything is additive. Existing single-key entities are unaffected; composite keys and junction-table @Relation are new capabilities you opt into.

Full Changelog: v1.0.0-alpha03...v1.0.0-alpha04

v1.0.0-alpha03

v1.0.0-alpha03 Pre-release
Pre-release

Choose a tag to compare

@sufarook sufarook released this 03 Aug 05:14

Kiln 1.0.0-alpha03

Fixes

  • Reproducible bytecode: all four published modules (annotations, runtime, processor, gradle-plugin) now pin jvmToolchain(17). Previously the published class-file version silently followed whichever JDK ran the build — this also brings the docs' stated Java requirement (11 → 17) in line with reality.
  • Version single source of truth: the Gradle plugin's embedded coordinates (GROUP/VERSION) are now generated at build time from the project's own version instead of a hand-maintained constant, closing the gap that let 1.0.0-alpha01 ship pointing at a non-existent 1.0.0-SNAPSHOT.

Testing

  • Added a consumer smoke test — a standalone fixture that resolves Kiln purely through the published plugin (no project(":") references) and now gates every Maven Central publish in CI.
  • Added 10 behavioural tests for KilnPlugin covering plugin wiring, per-project-type configuration (JVM vs KMP), and coordinate correctness.

Docs

  • Clarified that DSL operators (eq, and, gte, …) are top-level functions requiring an explicit import when used outside the runtime's own package.

Setup

plugins {
    id("io.github.sufarook.kiln") version "1.0.0-alpha03"
}

Maven coordinates

Artifact Coordinate
Plugin io.github.sufarook.kiln:1.0.0-alpha03
Annotations io.github.sufarook.kiln:annotations:1.0.0-alpha03
Runtime io.github.sufarook.kiln:runtime:1.0.0-alpha03
Processor io.github.sufarook.kiln:processor:1.0.0-alpha03

Full Changelog: v1.0.0-alpha02...v1.0.0-alpha03

v1.0.0-alpha02

v1.0.0-alpha02 Pre-release
Pre-release

Choose a tag to compare

@sufarook sufarook released this 29 Jul 05:16

Kiln 1.0.0-alpha02

Bug fix

  • Fixed a critical issue where the Gradle plugin was referencing 1.0.0-SNAPSHOT for annotations, runtime, and processor dependencies instead of the correct published version. Consumer builds would fail to resolve these artifacts. This release corrects the VERSION constant so all dependencies resolve from Maven Central.

Setup

plugins {
    id("io.github.sufarook.kiln") version "1.0.0-alpha02"
}

Maven coordinates

Artifact Coordinate
Plugin io.github.sufarook.kiln:1.0.0-alpha02
Annotations io.github.sufarook.kiln:annotations:1.0.0-alpha02
Runtime io.github.sufarook.kiln:runtime:1.0.0-alpha02
Processor io.github.sufarook.kiln:processor:1.0.0-alpha02