Skip to content

Commit ea42845

Browse files
authored
Merge pull request #25 from aether-framework/feature/release-ready-for-0.4.0-without-version-bump
Update project for 0.4.0 release
2 parents 04a371e + 0918ab0 commit ea42845

8 files changed

Lines changed: 181 additions & 207 deletions

File tree

README.md

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
![License](https://img.shields.io/badge/license-MIT-red)
2-
![Maven Central](https://img.shields.io/maven-central/v/de.splatgames.aether/aether-datafixers)
3-
![Version](https://img.shields.io/badge/version-0.3.0-orange)
2+
![Maven Central](https://img.shields.io/maven-central/v/de.splatgames.aether.datafixers/aether-datafixers)
3+
![Version](https://img.shields.io/badge/version-0.4.0-orange)
44

55
# Aether Datafixers 🔧
66

@@ -10,7 +10,7 @@ inspired by Minecraft's DataFixer Upper (DFU), with a focus on **simplicity**, *
1010

1111
---
1212

13-
## ✨ Features (v0.3.0)
13+
## ✨ Features (v0.4.0)
1414

1515
-**Schema-Based Versioning** — Define data types per version with `Schema` and `TypeRegistry`
1616
-**Forward Patching** — Apply `DataFix` instances sequentially to migrate data across versions
@@ -89,23 +89,23 @@ Dynamic<?> updated = fixer.update(
8989
<dependency>
9090
<groupId>de.splatgames.aether.datafixers</groupId>
9191
<artifactId>aether-datafixers-core</artifactId>
92-
<version>0.3.0</version>
92+
<version>0.4.0</version>
9393
</dependency>
9494
```
9595

9696
**Gradle (Groovy)**
9797

9898
```groovy
9999
dependencies {
100-
implementation 'de.splatgames.aether.datafixers:aether-datafixers-core:0.3.0'
100+
implementation 'de.splatgames.aether.datafixers:aether-datafixers-core:0.4.0'
101101
}
102102
```
103103

104104
**Gradle (Kotlin)**
105105

106106
```kotlin
107107
dependencies {
108-
implementation("de.splatgames.aether.datafixers:aether-datafixers-core:0.3.0")
108+
implementation("de.splatgames.aether.datafixers:aether-datafixers-core:0.4.0")
109109
}
110110
```
111111

@@ -125,7 +125,7 @@ The Bill of Materials (BOM) ensures consistent versions across all Aether Datafi
125125
<dependency>
126126
<groupId>de.splatgames.aether.datafixers</groupId>
127127
<artifactId>aether-datafixers-bom</artifactId>
128-
<version>0.3.0</version>
128+
<version>0.4.0</version>
129129
<type>pom</type>
130130
<scope>import</scope>
131131
</dependency>
@@ -149,7 +149,7 @@ The Bill of Materials (BOM) ensures consistent versions across all Aether Datafi
149149

150150
```groovy
151151
dependencies {
152-
implementation platform('de.splatgames.aether.datafixers:aether-datafixers-bom:0.3.0')
152+
implementation platform('de.splatgames.aether.datafixers:aether-datafixers-bom:0.4.0')
153153
154154
// No version needed
155155
implementation 'de.splatgames.aether.datafixers:aether-datafixers-core'
@@ -161,7 +161,7 @@ dependencies {
161161

162162
```kotlin
163163
dependencies {
164-
implementation(platform("de.splatgames.aether.datafixers:aether-datafixers-bom:0.3.0"))
164+
implementation(platform("de.splatgames.aether.datafixers:aether-datafixers-bom:0.4.0"))
165165

166166
// No version needed
167167
implementation("de.splatgames.aether.datafixers:aether-datafixers-core")
@@ -194,15 +194,15 @@ Optics provide composable, type-safe accessors for nested data structures. They
194194

195195
### Optic Hierarchy
196196

197-
| Optic | Focus | Description |
198-
|---------------|-------------------|-------------------------------------------------------|
199-
| **Iso** | 1 ↔ 1 | Reversible 1-to-1 transformation between two types |
197+
| Optic | Focus | Description |
198+
|---------------|-------------------|---------------------------------------------------------------|
199+
| **Iso** | 1 ↔ 1 | Reversible 1-to-1 transformation between two types |
200200
| **Lens** | 1 → 1 | Focus on exactly one part of a product type (always succeeds) |
201-
| **Prism** | 1 → 0..1 | Focus on one case of a sum type (may not match) |
202-
| **Affine** | 1 → 0..1 | Combines lens and prism capabilities |
203-
| **Traversal** | 1 → 0..n | Focus on zero or more parts |
204-
| **Getter** | 1 → 1 (read-only) | Read-only focus (no modification) |
205-
| **Finder** | Type → Optic | Locates nested types within a schema |
201+
| **Prism** | 1 → 0..1 | Focus on one case of a sum type (may not match) |
202+
| **Affine** | 1 → 0..1 | Combines lens and prism capabilities |
203+
| **Traversal** | 1 → 0..n | Focus on zero or more parts |
204+
| **Getter** | 1 → 1 (read-only) | Read-only focus (no modification) |
205+
| **Finder** | Type → Optic | Locates nested types within a schema |
206206

207207
### Lens Example
208208

@@ -334,13 +334,13 @@ void testFieldRename() {
334334

335335
### Testkit Features
336336

337-
| Component | Description |
338-
|-----------|-------------|
339-
| **TestData** | Fluent builders for creating test data (`TestData.gson().object()...`) |
340-
| **AetherAssertions** | Custom AssertJ assertions for `Dynamic`, `DataResult`, `Typed` |
341-
| **DataFixTester** | Test harness for isolated DataFix testing |
342-
| **QuickFix** | Factory methods for common fix patterns (rename, add, remove, transform) |
343-
| **MockSchemas** | Mock schema utilities for testing |
337+
| Component | Description |
338+
|----------------------|--------------------------------------------------------------------------|
339+
| **TestData** | Fluent builders for creating test data (`TestData.gson().object()...`) |
340+
| **AetherAssertions** | Custom AssertJ assertions for `Dynamic`, `DataResult`, `Typed` |
341+
| **DataFixTester** | Test harness for isolated DataFix testing |
342+
| **QuickFix** | Factory methods for common fix patterns (rename, add, remove, transform) |
343+
| **MockSchemas** | Mock schema utilities for testing |
344344

345345
Add to your project:
346346

@@ -556,22 +556,21 @@ mvn test
556556
- **High-performance APIs** — `Rules.batch()` and single-pass conditional transforms
557557
- **Performance optimizations** — Path caching, optimized fix registry, reduced allocations
558558

559-
- **v0.3.0** (current)
559+
- **v0.3.0**
560560
- **CLI module** — Migrate files from the command line with batch processing and reports
561561
- **Schema Tools module** — Schema diffing, migration analysis, validation, and introspection
562562
- **Fix coverage analysis** — Detect schema changes without corresponding DataFixes
563563
- **Convention checking** — Enforce naming conventions for types, fields, and classes
564564

565-
- **v0.4.0** (next)
565+
- **v0.4.0** (current)
566566
- **Spring Boot Starter** — Auto-configuration, MigrationService with fluent API
567567
- **Actuator integration** — Health indicator, info contributor, custom endpoint, Micrometer metrics
568568
- **Multi-domain support** — Multiple DataFixers with @Qualifier annotations
569569
- **DynamicOps auto-configuration** — Conditional beans for all supported formats
570570
- **Multi-format DynamicOps** — YAML (SnakeYAML, Jackson), TOML (Jackson), XML (Jackson)
571571
- **Package restructuring** — Format-first package organization (`codec.json.gson`, `codec.yaml.jackson`, etc.)
572-
- **Debug utilities** — Pretty printers / tree diff for Dynamic structures (dev-facing)
573572

574-
- **v0.5.0** (API freeze candidate)
573+
- **v0.5.0** (next, API freeze candidate)
575574
- **API stabilization pass** — Naming/packaging cleanup + deprecations completed
576575
- **Compatibility checks in CI** — Binary/source compatibility guardrails for public API
577576
- **Hardened error model** — Consistent exception types + structured error details

0 commit comments

Comments
 (0)