Skip to content

Commit 7e3187a

Browse files
dmealingclaude
andcommitted
chore(release): 0.21.3 — CHANGELOG + Maven/PyPI/NuGet version bumps
Coordinated PATCH: npm/PyPI/NuGet 0.21.3, Maven 7.21.3. Changed product code is Maven (the Gson reflective-Date wire form) and npm (date-mode timestamp filtering); PyPI and NuGet are version-parity bumps per the lockstep rule. Also refines the RELEASING step-0 scan added earlier today. Using it for real exposed that a bare `git branch -a --no-merged` returns ~100 branches in this repo — abandoned spikes, worktree-agent artifacts, old release branches — and a wall that size gets skimmed, which defeats the check it was meant to be. Now bounded to the last 14 days (7 branches here, all gate replays of work already on main), with a note that no-mistakes/* branches need confirming rather than assuming. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KTGT5ksntpcJDZVJ5VyXHS
1 parent 65142f3 commit 7e3187a

21 files changed

Lines changed: 62 additions & 22 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,37 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
77

88
## [Unreleased]
99

10-
### Fixed — a POJO-bound temporal value in a jsonb column was written locale- and timezone-dependently (Java/Maven only)
10+
## [0.21.3] — npm `0.21.3` · PyPI `0.21.3` · NuGet `0.21.3` · Maven `7.21.3`
11+
12+
Coordinated PATCH. **Changed product code: Maven and npm.** PyPI and NuGet are version-parity
13+
bumps — the Java fix is a Gson-reflection concern with no analogue in those ports, and schema/TS
14+
codegen is TS-owned (ADR-0015).
15+
16+
Both fixes were found the same way, and it is worth stating once: a test that asserts on the
17+
*shape* of generated or serialized output cannot tell you the output is wrong. Each of these
18+
shipped behind a green suite that inspected code rather than running it.
19+
20+
### Added — filtering a `timestampMode: "date"` timestamp (npm)
21+
22+
`?filter[<timestamp>][gte]=…` threw at request time under `timestampMode: "date"`. The Drizzle pg
23+
column binds a JS `Date` and calls `.toISOString()` on any bound value, while `runtime-ts`'s filter
24+
parser passed the raw query-string value through — so `eq`/`ne`/`gt`/`gte`/`lt`/`lte`/`in` all died
25+
with `TypeError: value.toISOString is not a function`. Only `isNull` survived, because it coerces as
26+
a boolean regardless of subtype. `0.21.2` could only warn about this at generation time.
27+
28+
The generated `FilterAllowlist` rule now carries `dateValues: true` for exactly those columns, and
29+
the parser coerces with `new Date(…)`; a malformed value is rejected as `filter.invalid_value`
30+
rather than bound as an Invalid Date, which would emit `NaN`-shaped SQL instead of a 400. The flag
31+
is optional, so an allowlist generated before this release behaves exactly as it did. Only
32+
`field.timestamp` is marked — Drizzle types `field.date` and `field.time` as strings under every
33+
dialect — and `timestampMode` is already normalized to `"string"` for sqlite/D1 upstream, so the
34+
emitter needs no dialect branching. Both the Fastify and Hono mounts share the one parser.
35+
36+
The `0.21.2` generation-time warning is removed rather than left to cry wolf; its test now pins the
37+
warning's **absence** in all four mode/dialect combinations, so reverting the fix cannot quietly
38+
re-land the warning in place of the behavior.
39+
40+
### Fixed — a POJO-bound temporal value in a jsonb column was written locale- and timezone-dependently (Maven)
1141

1242
Closes the last carry-forward item from the #275 batch: the OMDB jsonb temporal path — the
1343
motivating blast radius for that whole fix — had **no test at any level**, and adding one surfaced

‎docs/RELEASING.md‎

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,21 @@
2525
Run this **first**, before the CHANGELOG is even written:
2626

2727
```bash
28-
git fetch origin -q && git branch -a --no-merged origin/main
28+
git fetch origin -q
29+
for b in $(git branch -a --no-merged origin/main --format='%(refname)' | grep -v HEAD); do
30+
d=$(git log -1 --format=%ct "$b" 2>/dev/null); [ -z "$d" ] && continue
31+
age=$(( ( $(date +%s) - d ) / 86400 ))
32+
[ "$age" -le 14 ] && printf "%3sd %s %s\n" "$age" "$(git log -1 --format=%h "$b")" "${b#refs/}"
33+
done | sort -n
2934
```
3035

36+
The recency filter is load-bearing: a bare `git branch -a --no-merged` returns ~100 branches here
37+
(abandoned spikes, `worktree-agent-*` artifacts, old release branches). A wall that size gets
38+
skimmed, which defeats the check — so bound it to what could plausibly belong in this cut.
39+
3140
Decide explicitly for every branch the scan returns: merge it into this cut, or state why it waits.
32-
Do not skip past the list.
41+
Note that `no-mistakes/*` branches are usually gate replays of work already on `main` — confirm
42+
rather than assume. Do not skip past the list.
3343

3444
**Why this is step 0 and not a nicety:** `0.21.1` shipped *without* a `timestampMode` fix that was
3545
already written and sitting on an unmerged branch. Because versions are immutable on all four

‎server/csharp/Directory.Build.props‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
-->
99

1010
<PropertyGroup>
11-
<Version>0.21.2</Version>
11+
<Version>0.21.3</Version>
1212
<Authors>Doug Mealing</Authors>
1313
<Company>Doug Mealing LLC</Company>
1414
<Product>MetaObjects</Product>

‎server/java/codegen-base/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.metaobjects</groupId>
88
<artifactId>metaobjects</artifactId>
9-
<version>7.21.2</version>
9+
<version>7.21.3</version>
1010
</parent>
1111

1212
<artifactId>metaobjects-codegen-base</artifactId>

‎server/java/codegen-kotlin/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.metaobjects</groupId>
99
<artifactId>metaobjects</artifactId>
10-
<version>7.21.2</version>
10+
<version>7.21.3</version>
1111
</parent>
1212

1313
<artifactId>metaobjects-codegen-kotlin</artifactId>

‎server/java/codegen-mustache/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.metaobjects</groupId>
88
<artifactId>metaobjects</artifactId>
9-
<version>7.21.2</version>
9+
<version>7.21.3</version>
1010
</parent>
1111

1212
<artifactId>metaobjects-codegen-mustache</artifactId>

‎server/java/codegen-plantuml/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.metaobjects</groupId>
88
<artifactId>metaobjects</artifactId>
9-
<version>7.21.2</version>
9+
<version>7.21.3</version>
1010
</parent>
1111

1212
<artifactId>metaobjects-codegen-plantuml</artifactId>

‎server/java/codegen-spring/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.metaobjects</groupId>
88
<artifactId>metaobjects</artifactId>
9-
<version>7.21.2</version>
9+
<version>7.21.3</version>
1010
</parent>
1111

1212
<artifactId>metaobjects-codegen-spring</artifactId>

‎server/java/core-spring/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.metaobjects</groupId>
88
<artifactId>metaobjects</artifactId>
9-
<version>7.21.2</version>
9+
<version>7.21.3</version>
1010
</parent>
1111

1212
<artifactId>metaobjects-core-spring</artifactId>

‎server/java/integration-tests-kotlin/pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.metaobjects</groupId>
99
<artifactId>metaobjects</artifactId>
10-
<version>7.21.2</version>
10+
<version>7.21.3</version>
1111
</parent>
1212

1313
<artifactId>metaobjects-integration-tests-kotlin</artifactId>

0 commit comments

Comments
 (0)