Releases: sufarook/Kiln
Release list
v1.0.0-alpha04
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
annotationsandruntime(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
LICENSEfile — 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 iscascade). - 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
Kiln 1.0.0-alpha03
Fixes
- Reproducible bytecode: all four published modules (
annotations,runtime,processor,gradle-plugin) now pinjvmToolchain(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 let1.0.0-alpha01ship pointing at a non-existent1.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
KilnPlugincovering 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
Kiln 1.0.0-alpha02
Bug fix
- Fixed a critical issue where the Gradle plugin was referencing
1.0.0-SNAPSHOTforannotations,runtime, andprocessordependencies 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 |