release: v0.4.0 — panproto-native architecture

Author: Aaron Steven White
Commit f16dc692c5924b9f8939b33766913cc01bb75818
Parent: 044de273ca
Structural diff unavailable

These commits were pushed via plain git push, so no pre-parsed schemas are available. Install git-remote-cospan and re-push via panproto:// to see scope-level changes, breaking change detection, and semantic diffs.

brew install panproto/tap/git-remote-cospan
3 files changed +34 -23
@@ -2,26 +2,37 @@
22 
33 ## v0.4.0
44 
5-### Panproto-powered codegen
6-
7-- Enhanced cospan-codegen to generate sqlx-compatible Row types with denormalization config for all 19 record types
8-- Generated CRUD functions (upsert, get, delete, list) for all 19 record types
9-- Generated `from_json()` Jetstream record deserializers with AT-URI decomposition, field renames, and type overrides
5+### Panproto-native architecture
6+
7+Every data layer is now powered by panproto — schemas, morphisms, field transforms, and instance parsing replace all hand-written string munging.
8+
9+**Schema-driven record processing**
10+- All 130 Lexicon files (56 Cospan + 74 Tangled) parsed via `panproto_protocols::atproto::parse_lexicon()`
11+- Every incoming Jetstream record goes through `parse_json()` → `lift_wtype_sigma()` → `to_json()` → `serde_json::from_value()`
12+- DB projection field transforms (AT-URI decomposition, field renames, counter defaults, nested extraction) defined as panproto `FieldTransform` expressions (`ComputeField`, `RenameField`, `AddField`, `DropField`, `PathTransform`)
13+- 19 Cospan DB projections compiled at codegen time via `panproto_mig::compile()`
14+
15+**Tangled interop via panproto morphisms**
16+- 17 Tangled→Cospan morphisms defined as explicit `Migration` vertex/edge maps
17+- Compiled at codegen time, serialized to msgpack, loaded at appview startup
18+- Applied at runtime via `lift_wtype_sigma()` — no string template code generation
19+- Added `scripts/fetch-tangled-lexicons.sh` to pull latest from tangled.org/tangled.org/core
20+
21+**Generated code from Lexicons**
22+- sqlx-compatible Row types for all 19 record types
23+- CRUD functions (upsert, delete, get, list) per record type
24+- SQL DDL migrations generated from Schema vertices/edges/constraints
25+- 24 XRPC Input/Params types generated from Lexicon query/procedure definitions
26+- 36 new Lexicon files for all XRPC query and procedure endpoints
1027 - TypeScript interfaces now exported (`export interface`)
11-- Integrated panproto-check for Lexicon breaking change detection (`--check` mode)
12-- Added `schema-check` CI job for automated breaking change detection
13-- Schema baseline saved to `generated/sql/baseline.json` for diffing
14-- Removed unused `panproto-core` dependency from cospan-codegen
15-- Generated code written to `crates/cospan-appview/src/db/generated/` for direct appview integration
16-- Replaced 19 hand-written database modules with re-exports from generated code (keeping custom queries)
17-- Replaced manual JSON field extraction in consumer.rs with generated `from_json()` deserializers
18-
19-### Tangled interop codegen
20-
21-- Added 74 Tangled lexicon files under `packages/lexicons/sh/tangled/`
22-- Added `scripts/fetch-tangled-lexicons.sh` for pulling latest from tangled.org/tangled.org/core
23-- Generated 19 Tangled→Cospan interop morphisms with `from_tangled_json()` methods
24-- Replaced 15 manual Tangled Row constructions in consumer.rs with generated morphisms
28+- Breaking change detection via `panproto_check::diff()` + `classify()` (`--check` mode)
29+
30+**Consumer dispatch**
31+- Generic dispatch table for simple records (upsert/delete with no side effects)
32+- Special-case arms only for records with business logic (counter updates, SSE events, state transitions)
33+- Centralized `at_uri` module replaces all inline AT-URI parsing
34+
35+**Replaced ~2,700 lines of hand-written code** with panproto-powered codegen and runtime transforms.
2536 
2637 ## v0.3.2
2738 
@@ -436,7 +436,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
436436 
437437 [[package]]
438438 name = "cospan-appview"
439-version = "0.3.2"
439+version = "0.4.0"
440440 dependencies = [
441441  "anyhow",
442442  "async-trait",
@@ -482,7 +482,7 @@ dependencies = [
482482 
483483 [[package]]
484484 name = "cospan-codegen"
485-version = "0.3.2"
485+version = "0.4.0"
486486 dependencies = [
487487  "anyhow",
488488  "panproto-check",
@@ -499,7 +499,7 @@ dependencies = [
499499 
500500 [[package]]
501501 name = "cospan-node"
502-version = "0.3.2"
502+version = "0.4.0"
503503 dependencies = [
504504  "anyhow",
505505  "async-trait",
@@ -7,7 +7,7 @@ members = [
77 resolver = "2"
88 
99 [workspace.package]
10-version = "0.3.2"
10+version = "0.4.0"
1111 edition = "2024"
1212 license = "AGPL-3.0-or-later"
1313 repository = "https://github.com/cospan-dev/cospan"
cospan · schematic version control on atproto built on AT Protocol