Skip to content

docs: prepare v0.3.0 release with documentation improvements - #150

Merged
DevonMorris merged 2 commits into
mainfrom
docs/v0.3.0-release-prep
Feb 4, 2026
Merged

docs: prepare v0.3.0 release with documentation improvements#150
DevonMorris merged 2 commits into
mainfrom
docs/v0.3.0-release-prep

Conversation

@DevonMorris

Copy link
Copy Markdown
Owner

Summary

  • Update README version to 0.3, expand module table to 15 algebras
  • Add comprehensive features list (CGA, codegen, interior products, viz, WASM)
  • Enhance Minkowski module docs with spacetime geometry explanation
  • Add doc comments to generated trait implementations
  • Update PRD-6 (3D CGA) and PRD-50 (2D CGA) status to Complete
  • Bump all crate versions to 0.3.0

Documentation Improvements

README Updates

  • Version updated from 0.1 to 0.3
  • Module table expanded from 4 to 15 specialized algebras with metric signatures
  • Features list now includes: 15 algebras, CGA, codegen, interior products, viz, WASM

Generated Trait Documentation

Codegen now produces doc comments for trait implementations:

  • Wedge: Exterior/outer product with geometric meaning
  • Antiwedge: Regressive/meet product for subspace intersections
  • Sandwich/Antisandwich: Transformation products
  • Left/Right Contract: Interior products with grade semantics
  • Bulk/Weight Contract/Expand: PGA interior products
  • Transform: Automatic sandwich/antisandwich selection

Module Documentation

  • Enhanced Minkowski algebra docs with spacetime geometry, causal structure, and examples

PRD Updates

  • PRD-6 (3D CGA) and PRD-50 (2D CGA) marked Complete
  • Added conformal algebras to implemented algebras table

Test plan

  • cargo fmt - clean
  • cargo clippy --all-targets - no warnings
  • cargo doc --no-deps - builds successfully
  • cargo nextest run - 1938 tests pass
  • cargo deny check - licenses OK

🤖 Generated with Claude Code

- Update README version to 0.3, expand module table to 15 algebras
- Add comprehensive features list (CGA, codegen, interior products, etc.)
- Enhance Minkowski module docs with spacetime geometry explanation
- Add doc comments to generated trait implementations:
  - Wedge/Antiwedge products with geometric meaning
  - Sandwich/Antisandwich for transformations
  - Left/Right contractions with grade semantics
  - Bulk/Weight contractions and expansions for PGA
  - Transform trait documentation
- Update PRD-6 (3D CGA) and PRD-50 (2D CGA) status to Complete
- Bump all crate versions to 0.3.0
- Update CHANGELOG with release notes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@greptile-apps

greptile-apps Bot commented Feb 4, 2026

Copy link
Copy Markdown

Greptile Overview

Greptile Summary

This PR prepares the v0.3.0 release primarily through documentation and metadata updates: it bumps crate versions to 0.3.0, expands the clifford crate README (features + specialized module table), enriches Minkowski module documentation, and updates PRD status tables to mark Conformal GA work complete. It also updates the codegen templates to emit rustdoc on generated trait implementations, and regenerates the specialized algebra generated/traits.rs outputs accordingly.

Two doc correctness issues remain: the README claims 15 specialized algebras but the table lists 14 (missing hyperbolic::dim2), and the Minkowski dim3 signature stated in specialized::minkowski docs has been changed to Cl(1,2,0) while the generated Minkowski dim3 type docs still describe Cl(3,1,0), leaving contradictory documentation for users.

Confidence Score: 3/5

  • Mostly safe to merge, but has user-facing documentation inconsistencies that should be corrected first.
  • Changes are largely doc/codegen and version bumps, but there are two clear correctness problems in public docs: README algebra count mismatch and conflicting Minkowski dim3 signature between module docs and generated type docs.
  • crates/clifford/README.md; crates/clifford/src/specialized/minkowski/mod.rs; crates/clifford/src/specialized/minkowski/dim3/generated/types.rs

Important Files Changed

Filename Overview
CHANGELOG.md Adds a 0.3.0 changelog entry describing documentation/codegen changes and PRD status updates.
Cargo.lock Bumps workspace crate versions in the lockfile from 0.2.0 to 0.3.0.
crates/clifford-codegen/Cargo.toml Bumps clifford-codegen crate version to 0.3.0.
crates/clifford-codegen/src/codegen/traits.rs Adds generated rustdoc strings for Wedge/Antiwedge/Contractions/Sandwich/Transform/Bulk/Weight traits in the codegen templates.
crates/clifford-viz/Cargo.toml Bumps clifford-viz crate version to 0.3.0.
crates/clifford/Cargo.toml Bumps clifford crate to 0.3.0 and updates build-dependency on clifford-codegen to 0.3.0.
crates/clifford/README.md Expands features list and module table; currently claims 15 specialized algebras but the table lists only 14 (missing hyperbolic::dim2).
crates/clifford/src/specialized/complex/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/conformal/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/conformal/dim3/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/dual/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/dualquat/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/elliptic/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/euclidean/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/euclidean/dim3/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/hyperbolic/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/hyperbolic/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/minkowski/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/minkowski/dim3/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/minkowski/mod.rs Expands Minkowski module docs, but now states dim3 is Cl(1,2,0) while generated types docs still say Cl(3,1,0), creating an inconsistency.
crates/clifford/src/specialized/projective/dim2/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/projective/dim3/generated/traits.rs Regenerates generated trait impls with added doc comments.
crates/clifford/src/specialized/quaternion/generated/traits.rs Regenerates generated trait impls with added doc comments.
docs/prd/README.md Marks PRD-6 and PRD-50 complete and updates implemented algebras table (including Minkowski dim3 signature).

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +2281 to +2288
// Generate documentation
let doc = format!(
"Wedge (exterior/outer) product of [`{}`] and [`{}`].\n\n\
The wedge product `a ^ b` computes the outer product, which represents\n\
the oriented subspace spanned by both operands. The result grade is the\n\
sum of the input grades (or zero if they share common factors).",
a.name, b.name
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The generated algebras need to be regenerated to include these new doc comments.

After modifying the codegen templates, you must regenerate all 15 algebras:

for toml in crates/clifford-codegen/algebras/*.toml; do
    cargo run --package clifford-codegen -- generate "$toml" --force
done

Currently the generated traits.rs files in src/specialized/*/generated/ don't include the new documentation.

Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/clifford-codegen/src/codegen/traits.rs
Line: 2281:2288

Comment:
The generated algebras need to be regenerated to include these new doc comments.

After modifying the codegen templates, you must regenerate all 15 algebras:

```bash
for toml in crates/clifford-codegen/algebras/*.toml; do
    cargo run --package clifford-codegen -- generate "$toml" --force
done
```

Currently the generated `traits.rs` files in `src/specialized/*/generated/` don't include the new documentation.

How can I resolve this? If you propose a fix, please make it concise.

Comment thread crates/clifford/README.md
Comment on lines +162 to +177
| Module | Signature | Description |
|--------|-----------|-------------|
| [`specialized::complex`](https://docs.rs/clifford/latest/clifford/specialized/complex/) | Cl(0,1) | Complex numbers (i^2 = -1) |
| [`specialized::dual`](https://docs.rs/clifford/latest/clifford/specialized/dual/) | Cl(0,0,1) | Dual numbers (epsilon^2 = 0) for automatic differentiation |
| [`specialized::quaternion`](https://docs.rs/clifford/latest/clifford/specialized/quaternion/) | Cl(0,2) | Quaternions for 3D rotations |
| [`specialized::dualquat`](https://docs.rs/clifford/latest/clifford/specialized/dualquat/) | - | Dual quaternions for rigid transforms |
| [`specialized::euclidean::dim2`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim2/) | Cl(2,0) | 2D Euclidean: Vector, Bivector, Rotor |
| [`specialized::euclidean::dim3`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim3/) | Cl(3,0) | 3D Euclidean: Vector, Bivector, Trivector, Rotor |
| [`specialized::projective::dim2`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim2/) | Cl(2,0,1) | 2D PGA: Point, Line, Motor |
| [`specialized::projective::dim3`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim3/) | Cl(3,0,1) | 3D PGA: Point, Line, Plane, Motor, Flector |
| [`specialized::conformal::dim2`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim2/) | Cl(3,1) | 2D CGA: Points, circles, conformal transforms |
| [`specialized::conformal::dim3`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim3/) | Cl(4,1) | 3D CGA: Points, spheres, circles, conformal transforms |
| [`specialized::minkowski::dim2`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim2/) | Cl(1,1) | 2D Minkowski spacetime |
| [`specialized::minkowski::dim3`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim3/) | Cl(1,2) | 3D Minkowski spacetime |
| [`specialized::elliptic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/elliptic/dim2/) | Cl(2,0) + positive curvature | 2D elliptic/spherical geometry |
| [`specialized::hyperbolic`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/) | - | Hyperbolic numbers (j^2 = +1) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table lists 14 algebras but claims 15 in the features section. The missing algebra is hyperbolic::dim2 (2D hyperbolic plane, Cl(2,1,0)).

Add this row to complete the table:

Suggested change
| Module | Signature | Description |
|--------|-----------|-------------|
| [`specialized::complex`](https://docs.rs/clifford/latest/clifford/specialized/complex/) | Cl(0,1) | Complex numbers (i^2 = -1) |
| [`specialized::dual`](https://docs.rs/clifford/latest/clifford/specialized/dual/) | Cl(0,0,1) | Dual numbers (epsilon^2 = 0) for automatic differentiation |
| [`specialized::quaternion`](https://docs.rs/clifford/latest/clifford/specialized/quaternion/) | Cl(0,2) | Quaternions for 3D rotations |
| [`specialized::dualquat`](https://docs.rs/clifford/latest/clifford/specialized/dualquat/) | - | Dual quaternions for rigid transforms |
| [`specialized::euclidean::dim2`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim2/) | Cl(2,0) | 2D Euclidean: Vector, Bivector, Rotor |
| [`specialized::euclidean::dim3`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim3/) | Cl(3,0) | 3D Euclidean: Vector, Bivector, Trivector, Rotor |
| [`specialized::projective::dim2`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim2/) | Cl(2,0,1) | 2D PGA: Point, Line, Motor |
| [`specialized::projective::dim3`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim3/) | Cl(3,0,1) | 3D PGA: Point, Line, Plane, Motor, Flector |
| [`specialized::conformal::dim2`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim2/) | Cl(3,1) | 2D CGA: Points, circles, conformal transforms |
| [`specialized::conformal::dim3`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim3/) | Cl(4,1) | 3D CGA: Points, spheres, circles, conformal transforms |
| [`specialized::minkowski::dim2`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim2/) | Cl(1,1) | 2D Minkowski spacetime |
| [`specialized::minkowski::dim3`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim3/) | Cl(1,2) | 3D Minkowski spacetime |
| [`specialized::elliptic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/elliptic/dim2/) | Cl(2,0) + positive curvature | 2D elliptic/spherical geometry |
| [`specialized::hyperbolic`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/) | - | Hyperbolic numbers (j^2 = +1) |
| Module | Signature | Description |
|--------|-----------|-------------|
| [`specialized::complex`](https://docs.rs/clifford/latest/clifford/specialized/complex/) | Cl(0,1) | Complex numbers (i^2 = -1) |
| [`specialized::dual`](https://docs.rs/clifford/latest/clifford/specialized/dual/) | Cl(0,0,1) | Dual numbers (epsilon^2 = 0) for automatic differentiation |
| [`specialized::quaternion`](https://docs.rs/clifford/latest/clifford/specialized/quaternion/) | Cl(0,2) | Quaternions for 3D rotations |
| [`specialized::dualquat`](https://docs.rs/clifford/latest/clifford/specialized/dualquat/) | - | Dual quaternions for rigid transforms |
| [`specialized::euclidean::dim2`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim2/) | Cl(2,0) | 2D Euclidean: Vector, Bivector, Rotor |
| [`specialized::euclidean::dim3`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim3/) | Cl(3,0) | 3D Euclidean: Vector, Bivector, Trivector, Rotor |
| [`specialized::projective::dim2`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim2/) | Cl(2,0,1) | 2D PGA: Point, Line, Motor |
| [`specialized::projective::dim3`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim3/) | Cl(3,0,1) | 3D PGA: Point, Line, Plane, Motor, Flector |
| [`specialized::conformal::dim2`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim2/) | Cl(3,1) | 2D CGA: Points, circles, conformal transforms |
| [`specialized::conformal::dim3`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim3/) | Cl(4,1) | 3D CGA: Points, spheres, circles, conformal transforms |
| [`specialized::minkowski::dim2`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim2/) | Cl(1,1) | 2D Minkowski spacetime |
| [`specialized::minkowski::dim3`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim3/) | Cl(1,2) | 3D Minkowski spacetime |
| [`specialized::elliptic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/elliptic/dim2/) | Cl(2,0) + positive curvature | 2D elliptic/spherical geometry |
| [`specialized::hyperbolic`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/) | - | Hyperbolic numbers (j^2 = +1) |
| [`specialized::hyperbolic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/dim2/) | Cl(2,1) | 2D hyperbolic plane |
Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/clifford/README.md
Line: 162:177

Comment:
The table lists 14 algebras but claims 15 in the features section. The missing algebra is `hyperbolic::dim2` (2D hyperbolic plane, Cl(2,1,0)).

Add this row to complete the table:

```suggestion
| Module | Signature | Description |
|--------|-----------|-------------|
| [`specialized::complex`](https://docs.rs/clifford/latest/clifford/specialized/complex/) | Cl(0,1) | Complex numbers (i^2 = -1) |
| [`specialized::dual`](https://docs.rs/clifford/latest/clifford/specialized/dual/) | Cl(0,0,1) | Dual numbers (epsilon^2 = 0) for automatic differentiation |
| [`specialized::quaternion`](https://docs.rs/clifford/latest/clifford/specialized/quaternion/) | Cl(0,2) | Quaternions for 3D rotations |
| [`specialized::dualquat`](https://docs.rs/clifford/latest/clifford/specialized/dualquat/) | - | Dual quaternions for rigid transforms |
| [`specialized::euclidean::dim2`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim2/) | Cl(2,0) | 2D Euclidean: Vector, Bivector, Rotor |
| [`specialized::euclidean::dim3`](https://docs.rs/clifford/latest/clifford/specialized/euclidean/dim3/) | Cl(3,0) | 3D Euclidean: Vector, Bivector, Trivector, Rotor |
| [`specialized::projective::dim2`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim2/) | Cl(2,0,1) | 2D PGA: Point, Line, Motor |
| [`specialized::projective::dim3`](https://docs.rs/clifford/latest/clifford/specialized/projective/dim3/) | Cl(3,0,1) | 3D PGA: Point, Line, Plane, Motor, Flector |
| [`specialized::conformal::dim2`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim2/) | Cl(3,1) | 2D CGA: Points, circles, conformal transforms |
| [`specialized::conformal::dim3`](https://docs.rs/clifford/latest/clifford/specialized/conformal/dim3/) | Cl(4,1) | 3D CGA: Points, spheres, circles, conformal transforms |
| [`specialized::minkowski::dim2`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim2/) | Cl(1,1) | 2D Minkowski spacetime |
| [`specialized::minkowski::dim3`](https://docs.rs/clifford/latest/clifford/specialized/minkowski/dim3/) | Cl(1,2) | 3D Minkowski spacetime |
| [`specialized::elliptic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/elliptic/dim2/) | Cl(2,0) + positive curvature | 2D elliptic/spherical geometry |
| [`specialized::hyperbolic`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/) | - | Hyperbolic numbers (j^2 = +1) |
| [`specialized::hyperbolic::dim2`](https://docs.rs/clifford/latest/clifford/specialized/hyperbolic/dim2/) | Cl(2,1) | 2D hyperbolic plane |
```

How can I resolve this? If you propose a fix, please make it concise.

Regenerate all 15 algebras to apply the new doc comments added to
trait implementations in the codegen traits.rs file.

Generated traits now include documentation explaining:
- Wedge/Antiwedge products with geometric meaning
- Sandwich/Antisandwich for transformations
- Left/Right contractions with grade semantics
- Bulk/Weight contractions and expansions for PGA
- Transform trait documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@DevonMorris

Copy link
Copy Markdown
Owner Author

@greptileai review

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

24 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines 7 to +9
//! # Available Algebras
//!
//! - **[`dim2`]**: Minkowski plane Cl(1,1,0) - 2D spacetime
//! - **[`dim3`]**: Minkowski spacetime Cl(3,1,0) - 3+1 spacetime (special relativity)
//! - **[`dim2`]**: Minkowski plane Cl(1,1,0) - 2D spacetime (1 space + 1 time)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Conflicting Minkowski signature

This module doc now says dim3 is Cl(1,2,0), but the generated Minkowski 3D types docs still state Cl(3,1,0) (see crates/clifford/src/specialized/minkowski/dim3/generated/types.rs). As-is, users will get contradictory docs for the same module; either update the generator/algebra config so the generated docs match the new signature, or revert this doc change to the existing signature.

Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/clifford/src/specialized/minkowski/mod.rs
Line: 7:9

Comment:
**Conflicting Minkowski signature**

This module doc now says `dim3` is `Cl(1,2,0)`, but the generated Minkowski 3D types docs still state `Cl(3,1,0)` (see `crates/clifford/src/specialized/minkowski/dim3/generated/types.rs`). As-is, users will get contradictory docs for the same module; either update the generator/algebra config so the generated docs match the new signature, or revert this doc change to the existing signature.

How can I resolve this? If you propose a fix, please make it concise.

Comment thread crates/clifford/README.md
Comment on lines 36 to 38

## Features

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

README algebra count mismatch

The Features section claims “15 Specialized Algebras”, but the specialized module table only lists 14 rows (it’s missing specialized::hyperbolic::dim2, which exists and is listed elsewhere as Cl(2,1,0)). This should be fixed so the README is internally consistent.

Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/clifford/README.md
Line: 36:38

Comment:
**README algebra count mismatch**

The Features section claims “15 Specialized Algebras”, but the specialized module table only lists 14 rows (it’s missing `specialized::hyperbolic::dim2`, which exists and is listed elsewhere as `Cl(2,1,0)`). This should be fixed so the README is internally consistent.

How can I resolve this? If you propose a fix, please make it concise.

@DevonMorris
DevonMorris merged commit 65257d3 into main Feb 4, 2026
13 checks passed
@DevonMorris
DevonMorris deleted the docs/v0.3.0-release-prep branch February 4, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant