Skip to content

Commit f2273b2

Browse files
jeffreyameyerclaude
andcommitted
Prepare v0.2.0: bump README version, add CHANGELOG
README dependency snippets now reference 0.2.0; the status banner flips from "early development" / "not yet published" to "first public release". CHANGELOG.md documents every feature shipping in 0.2.0, the four known divergences from edtf.js, and the two explicitly deferred items (localized formatting, Ant / Ivy smoke test). This is the last commit before tagging v0.2.0; the release workflow will read the version from the tag and run mvn versions:set to strip -SNAPSHOT before deploying. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent bb93d63 commit f2273b2

2 files changed

Lines changed: 73 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented here. The format is
4+
loosely based on [Keep a Changelog](https://keepachangelog.com/) and
5+
this project follows [Semantic Versioning](https://semver.org/).
6+
7+
## [0.2.0] &mdash; 2026-04-23
8+
9+
First public release on Maven Central. Covers EDTF Levels 0, 1, and most
10+
of Level 2.
11+
12+
### Added
13+
14+
- **Level 0** parsing: ISO 8601-1 dates, datetimes (minute, second, and
15+
millisecond precision), centuries.
16+
- **Level 1** parsing: uncertain (`?`), approximate (`~`), and combined
17+
(`%`) markers; `Y`-notation for five-or-more-digit years; seasons
18+
(codes 21&ndash;24); intervals with bounded, open (`..`), and unknown
19+
endpoints; `EdtfYear`, `EdtfSeason`, `Endpoint` sealed type, and
20+
`EdtfInterval` types.
21+
- **Level 2** parsing: non-progressive partial X-mask patterns in any
22+
YYYY/MM/DD position; sets (`[2020,2021]`) and lists
23+
(`{2019..2021}`) including consecutive `start..end` members and
24+
`earlier`/`later` markers; extended season codes 25&ndash;41
25+
(hemispheric variants, quadrimesters, half-year divisions);
26+
three-digit decade notation (`199`, `199?`); `Y`-notation
27+
exponential (`Y1E5`) and significant-digits (`Y12345S3`) forms;
28+
positional UA markers on individual date components
29+
(`2020?-05~`, `?2020-%05`).
30+
- **Comparison and bounds**: `EdtfTemporal#compareTo`,
31+
`EdtfTemporal#covers`, and `long`-millisecond `min` / `max` for every
32+
supported type.
33+
- **Canonical serialization**: every type implements `toEdtfString()`
34+
in a form that round-trips with edtf.js for the supported subset.
35+
- **Build and CI**: Maven build targeting Java 17 bytecode, JPMS
36+
module descriptor, GitHub Actions CI matrix (Java 17 + 21), release
37+
workflow that signs with GPG and publishes via Sonatype Central
38+
Portal, Dependabot, issue and PR templates, Contributor Covenant
39+
code of conduct, AI-assisted-development disclosure in
40+
`ATTRIBUTION.md`.
41+
- **Test coverage**: 247 unit tests including a generated
42+
parity-vector harness comparing against `edtf.js` v4.11.0 output.
43+
44+
### Known deviations from edtf.js
45+
46+
Documented in code on the affected types. Summary:
47+
48+
- **Datetime canonical form** is normalised to UTC and full
49+
millisecond precision (matching edtf.js's `toISOString` output);
50+
the original timezone offset is preserved on the in-memory value
51+
via `EdtfDate#timeZone()` but not emitted by `toEdtfString()`.
52+
- **Datetime atomicity**: minute, second, and millisecond precision
53+
values report `min == max` (atomic instants), matching edtf.js.
54+
- **Season codes 21&ndash;24** use calendar-quarter bounds
55+
(Q1=Jan&ndash;Mar, etc.) rather than meteorological seasons,
56+
matching the upstream reference.
57+
- **Consecutive list members** report bounds spanning
58+
`start.min..end.max` (semantically the full range). edtf.js
59+
reports `start.max` for the upper bound, which we consider an
60+
upstream bug and diverge from.
61+
62+
### Deferred to a future release
63+
64+
- Locale-aware formatting via `ResourceBundle` (canonical EDTF
65+
rendering only at this release).
66+
- Ant/Ivy consumption smoke test against a real JOSM plugin
67+
scaffold.
68+
69+
[0.2.0]: https://github.com/OpenHistoricalMap/edtf-java/releases/tag/v0.2.0

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Format (EDTF)][edtf] strings, per **ISO 8601-2:2019** (with Amendment 1,
77
This is a port of the JavaScript library [edtf.js][edtf-js] to the JVM,
88
targeting Java 17+ with zero runtime dependencies.
99

10-
> **Status**: Early development (0.1.0-SNAPSHOT). Not yet published to Maven
10+
> **Status**: First public release (0.2.0). Available on Maven
1111
> Central.
1212
1313
## Quick start
@@ -32,20 +32,20 @@ Once published:
3232
<dependency>
3333
<groupId>io.github.openhistoricalmap</groupId>
3434
<artifactId>edtf</artifactId>
35-
<version>0.1.0</version>
35+
<version>0.2.0</version>
3636
</dependency>
3737
```
3838

3939
### Gradle
4040

4141
```groovy
42-
implementation 'io.github.openhistoricalmap:edtf:0.1.0'
42+
implementation 'io.github.openhistoricalmap:edtf:0.2.0'
4343
```
4444

4545
### Ant + Ivy (JOSM plugins)
4646

4747
```xml
48-
<dependency org="io.github.openhistoricalmap" name="edtf" rev="0.1.0"/>
48+
<dependency org="io.github.openhistoricalmap" name="edtf" rev="0.2.0"/>
4949
```
5050

5151
## EDTF coverage

0 commit comments

Comments
 (0)