Skip to content

Commit c43a6e3

Browse files
committed
release: cljw 1.2.0 — nREPL base-protocol fidelity, CIDER end-to-end (user-authorized tag)
Smell-audited: 1: version bump + CHANGELOG only; features/fixes shipped in fa0917b (ADR-0170) + 1e83449. Full gate 402/0 green on this exact tree.
1 parent 1e83449 commit c43a6e3

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

‎CHANGELOG.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,49 @@ All notable changes to ClojureWasm are documented here. The format follows
55
[SemVer](https://semver.org/). SemVer compatibility guarantees start at the
66
first stable `1.0.0` tag; pre-1.0 `alpha` / `rc` tags may still change surfaces.
77

8+
## [1.2.0] - 2026-07-13
9+
10+
Minor release: the nREPL server is rebuilt to full base-protocol fidelity —
11+
CIDER (and any nREPL editor client) now works end-to-end. Backward-compatible
12+
with 1.1.x.
13+
14+
### Added
15+
16+
- **nREPL `completions` / `complete` ops** — editor completion (CIDER
17+
company/capf) over the live image: vars, macros, namespaces, aliases,
18+
`ns/var` qualified prefixes, with type annotations.
19+
- **nREPL `lookup` / `info` / `eldoc` ops** — arglists + docstrings from var
20+
metadata; CIDER eldoc and `C-c C-d` documentation work.
21+
- **`*1` / `*2` / `*3` / `*e` REPL history** — interned in `clojure.core`
22+
(upstream shape) and rotated by both the CLI REPL and every nREPL session
23+
(per-session isolation: tooling-session evals cannot touch your `*1`).
24+
- **nREPL `ns` request handling** — evals honor the request namespace
25+
(`namespace-not-found` per spec); each session keeps its own current
26+
namespace, so an `in-ns` in one session never leaks into another.
27+
28+
### Fixed
29+
30+
- **CIDER REPL buffer was unusable** — the read loop blocked with complete
31+
requests already buffered, stranding pipelined messages off-by-one; the
32+
REPL prompt never rendered and RET did nothing. The transport now drains
33+
every buffered message before blocking.
34+
- **Messages over 4 KiB reset the connection** — `C-c C-k` (load-file) on any
35+
real file killed the session. The receive buffer now grows (16 MiB frame
36+
cap).
37+
- **Session identity** — every `clone` returned the same id and replies
38+
ignored the request's `session`; CIDER's two-session model (main + tooling)
39+
depends on both. Sessions are now distinct UUIDs and every reply echoes the
40+
request's `session` + `id`.
41+
- **Error replies** — errors now carry the same caret-rendered text the CLI
42+
prints (was: a bare Zig error name like `NameError`), as the babashka-style
43+
three-message protocol (`err` → `ex`/`root-ex` + `eval-error` → `done`;
44+
was: bundled in one dict, which nREPL clients mis-route, plus a double
45+
`done`). Evaluation stops at the first failing form (JVM parity).
46+
- **`*err*` output** is captured and streamed to the client alongside `*out*`.
47+
- **`describe`** now derives its ops list from the dispatch table (they can
48+
no longer drift) and reports the real version (was: a stale hardcoded
49+
`0.1.0-pre`).
50+
851
## [1.1.0] - 2026-07-12
952

1053
Minor release: new REPL / tooling surface and Java-interop additions, a batch

‎build.zig.zon‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.{
22
.name = .cljw,
3-
.version = "1.1.0",
3+
.version = "1.2.0",
44
.fingerprint = 0x1869d207073beffa,
55
.minimum_zig_version = "0.16.0",
66
.dependencies = .{

0 commit comments

Comments
 (0)