release: v0.4.0 — panproto-native architecture
Author: Aaron Steven White
Commit
f16dc692c5924b9f8939b33766913cc01bb75818Parent: 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-cospan3 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"