Current section

Files

Jump to
rbt_weave CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.2.4] - 2026-04-17
### Fixed
- Remove weave-content from workspace members to fix hex package compilation
(cargo metadata failed because weave-content source files are not included in the hex package)
- Make weave-content a standalone crate with explicit config instead of workspace inheritance
## [0.2.3] - 2026-04-17
### Fixed
- Fix clippy pedantic errors: wildcard match for single variant, redundant closure, function too many lines
- Remove unused `entries()` method from `EntityRegistry`
- Extract `writeback_registry_entities` and `write_case_output` helpers from `build_single_case`
## [0.2.2] - 2026-04-17
### Added
- **weave-content** crate published to crates.io (`cargo install weave-content`)
- Content DSL parser, validator, and builder for case files
- Shared entity registry: standalone actor/institution files with cross-file name resolution
- NULID write-back: `build` generates IDs and writes them back to source files
- Auto-discover: finds `actors/`, `institutions/`, `cases/` directories from content root
- Commands: `validate`, `verify`, `build`
### Fixed
- NEXT relationship IDs no longer written back to timeline section during build
(timeline chains are `Event A -> Event B` syntax, not bullet-list relationships)
## [0.2.1] - 2026-04-16
### Added
- `thumbnail_key/1` and `process_thumbnail/1` NIF exports in the bridge crate
- `Weave.Image` Elixir module wrapping image processing NIFs
### Changed
- Removed external site references from READMEs
## [0.2.0] - 2026-04-16
### Added
- **weave-image** crate for thumbnail processing
- Download images from URLs with 5 MB size limit and 15s timeout
- Center-crop and resize to 256x256 lossless WebP thumbnails
- Deterministic storage keys via SHA-256 of source URL (`thumbnails/{hex[0..32]}.webp`)
- Output size capped at 50 KB
- `thumbnail_key/1`, `download/1`, `resize_to_webp/1`, `process_thumbnail/1`
- Unit tests for resize, key generation, size limits, error cases
- Per-crate README files for crates.io
## [0.1.0] - 2026-04-16
### Added
- **weave-graph** crate for conflict-of-interest pattern detection on knowledge graphs
- `Node` and `Edge` types for subgraph representation (NULID-based identifiers)
- `Subgraph` and `IndexedSubgraph` with O(1) adjacency list lookups
- Cycle detection -- enumerate directed simple cycles matching edge-type sequences
- Path detection -- constrained DFS matching edge types and node labels against templates
- Hub detection -- flag Actor-Institution pairs with concentrated influence edges
- Six built-in patterns: COI-001 through COI-006
- Configurable `DetectOpts` with max depth and pattern ID filtering
- Property-based tests via `proptest` for correctness guarantees
- Performance benchmarks: <50ms for 10K nodes / 50K edges
- **weave_nif** crate providing Rustler NIF bridge
- `health_check/0` -- verify NIF is loaded
- `detect_conflicts/2` -- JSON-in, JSON-out conflict detection on dirty CPU scheduler
- **rbt_weave** Elixir hex package
- `Weave.Native` -- low-level NIF bindings via Rustler
- `Weave.Graph` -- public API delegating to `Weave.Native`
- Publishable to both [crates.io](https://crates.io) (Rust) and [hex.pm](https://hex.pm) (Elixir)
[Unreleased]: https://github.com/redberrythread/weave/compare/v0.2.4...HEAD
[0.2.4]: https://github.com/redberrythread/weave/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/redberrythread/weave/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/redberrythread/weave/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/redberrythread/weave/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/redberrythread/weave/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/redberrythread/weave/releases/tag/v0.1.0