Skip to content

chore: prepare crates for crates.io publishing#199

Merged
erskingardner merged 4 commits into
masterfrom
release/crates-io-prep
Feb 23, 2026
Merged

chore: prepare crates for crates.io publishing#199
erskingardner merged 4 commits into
masterfrom
release/crates-io-prep

Conversation

@erskingardner

@erskingardner erskingardner commented Feb 23, 2026

Copy link
Copy Markdown
Member

Summary

Prepares all publishable crates (mdk-core, mdk-storage-traits, mdk-memory-storage, mdk-sqlite-storage) for first publish to crates.io.

Changes

License

  • Updated copyright: 2024-2025 Parres2024-2026 Internet Privacy Foundation
  • Copied LICENSE into each publishable crate directory — required since cargo publish only packages files within the crate's own directory tree

READMEs (crate-level)

  • Fixed broken ../../LICENSE relative links (work in the repo, break on crates.io) → point to local LICENSE copy
  • Removed stale rust-nostr donation sections from all four crate READMEs
  • Replaced NIP-EE draft PR reference in mdk-core README with Marmot Protocol link
  • Expanded mdk-sqlite-storage README with features, all three usage patterns (keyring, manual key, unencrypted)
  • Expanded mdk-storage-traits README with ecosystem crate links

Workspace README

  • Updated version examples: 0.5.00.6.0

Changelogs

  • Merged unreleased clear_pending_commit entries into [0.6.0] in mdk-core and mdk-uniffi (no git tag exists yet for 0.6.0, so this is the right approach)
  • Fixed stale "JSON codec" sub-bullet in mdk-memory-storage and mdk-sqlite-storage changelogs → "Postcard codec (MlsCodec)" to reflect what actually shipped

Publishing order (after merge + tag)

cargo publish -p mdk-storage-traits
cargo publish -p mdk-memory-storage
cargo publish -p mdk-sqlite-storage
cargo publish -p mdk-core

This PR prepares four MDK crates (mdk-core, mdk-storage-traits, mdk-memory-storage, mdk-sqlite-storage) for initial crates.io publication by updating license ownership, fixing documentation, consolidating changelog entries, and establishing a CI/CD publishing workflow. It establishes the foundation for automated crate releases with proper licensing, documentation, and metadata aligned with crates.io publishing standards.

What changed:

  • Updated root LICENSE file from "2024-2025 Parres" to "2024-2026 Internet Privacy Foundation" and copied LICENSE to each of the four publishable crates
  • Updated workspace README and all crate READMEs to reference version 0.6.0 (from 0.5.0) and fixed LICENSE links from relative paths to absolute GitHub URLs
  • Removed stale donation/branding sections referencing rust-nostr from all crate READMEs
  • Replaced NIP-EE draft PR reference with Marmot Protocol implementation link in mdk-core README
  • Expanded mdk-sqlite-storage README with Features section (SQLCipher encryption, automatic schema migrations, keyring integration, file permission hardening) and three usage patterns (automatic key, manual key, unencrypted)
  • Expanded mdk-storage-traits README with in-tree backend ecosystem references (mdk-memory-storage, mdk-sqlite-storage)
  • Consolidated unreleased changelog entries: merged clear_pending_commit entries into [0.6.0] section in mdk-core and mdk-uniffi CHANGELOG files
  • Corrected codec references in mdk-memory-storage and mdk-sqlite-storage changelogs from "JSON codec" to "Postcard codec (MlsCodec)"
  • Added new .github/workflows/publish-crates.yml GitHub Actions workflow that publishes crates to crates.io in dependency order (mdk-storage-traits → {mdk-memory-storage, mdk-sqlite-storage} in parallel → mdk-core) on GitHub release
  • Removed .github/workflows/codeql.yml and .github/codeql/codeql-config.yml (CodeQL scanning removed from CI)

Security impact:

  • License ownership transferred to Internet Privacy Foundation with updated copyright years (2024-2026)
  • LICENSE links changed from relative paths to absolute GitHub URLs in rustdoc to prevent intra-doc link errors
  • New publish workflow uses CARGO_REGISTRY_TOKEN from secrets for crate.io authentication

Protocol changes:

  • Marmot Protocol implementation reference added to mdk-core documentation in place of NIP-EE draft reference

- Update LICENSE copyright: 2024-2025 Parres → 2024-2026 Internet Privacy Foundation
- Copy LICENSE into each publishable crate directory (required for crates.io packaging)
- Fix broken ../../LICENSE links in all crate READMEs → local LICENSE file
- Remove stale rust-nostr branding/donation sections from all crate READMEs
- Replace NIP-EE reference in mdk-core README with Marmot Protocol link
- Expand mdk-sqlite-storage and mdk-storage-traits READMEs with proper content
- Update workspace README version examples: 0.5.0 → 0.6.0
- Merge unreleased changelog entries into [0.6.0] in mdk-core and mdk-uniffi
- Fix stale "JSON codec" sub-bullet in mdk-memory-storage and mdk-sqlite-storage changelogs
@coderabbitai

coderabbitai Bot commented Feb 23, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0da7cbc and a075431.

📒 Files selected for processing (17)
  • .github/codeql/codeql-config.yml
  • .github/workflows/codeql.yml
  • .github/workflows/publish-crates.yml
  • LICENSE
  • README.md
  • crates/mdk-core/CHANGELOG.md
  • crates/mdk-core/LICENSE
  • crates/mdk-core/README.md
  • crates/mdk-memory-storage/CHANGELOG.md
  • crates/mdk-memory-storage/LICENSE
  • crates/mdk-memory-storage/README.md
  • crates/mdk-sqlite-storage/CHANGELOG.md
  • crates/mdk-sqlite-storage/LICENSE
  • crates/mdk-sqlite-storage/README.md
  • crates/mdk-storage-traits/LICENSE
  • crates/mdk-storage-traits/README.md
  • crates/mdk-uniffi/CHANGELOG.md

📝 Walkthrough

Walkthrough

This PR prepares the 0.6.0 release by updating copyright ownership to Internet Privacy Foundation, bumping crate versions, removing CodeQL workflows, adding automated crates.io publication pipeline, distributing MIT licenses across crates, and refreshing documentation across all crate READMEs and CHANGELOGs.

Changes

Cohort / File(s) Summary
CI/CD Configuration
.github/codeql/codeql-config.yml, .github/workflows/codeql.yml, .github/workflows/publish-crates.yml
Removed CodeQL configuration and workflow files; added new GitHub Actions workflow for automated publishing of four crates (storage-traits, memory-storage, sqlite-storage, core) to crates.io with sequential job dependencies and wait-for-indexing steps.
Licensing & Copyright
LICENSE, crates/mdk-core/LICENSE, crates/mdk-memory-storage/LICENSE, crates/mdk-sqlite-storage/LICENSE, crates/mdk-storage-traits/LICENSE
Updated root LICENSE copyright from Parres to Internet Privacy Foundation (2024-2026); added MIT LICENSE files to all four crates.
Version Updates & Documentation
README.md
Bumped dependency versions from 0.5.0 to 0.6.0 for mdk-core, mdk-memory-storage, and mdk-sqlite-storage; aligned OpenMLS feature example to 0.6.0.
Core Crate Documentation
crates/mdk-core/CHANGELOG.md, crates/mdk-core/README.md
Added clear_pending_commit method documentation in CHANGELOG; rewrote README title and description to reference Marmot Protocol; updated license link; removed donations section.
Memory Storage Updates
crates/mdk-memory-storage/CHANGELOG.md, crates/mdk-memory-storage/README.md
Changed MLS codec from JSON to Postcard in CHANGELOG; rewrote README with user-facing overview, reworded features (LRU caching, thread-safety), clarified production usage guidance, and updated license reference.
SQLite Storage Updates
crates/mdk-sqlite-storage/CHANGELOG.md, crates/mdk-sqlite-storage/README.md
Switched MLS codec from JSON to Postcard; expanded README with encryption details (SQLCipher, 256-bit keys), added feature list, included usage examples for key management modes, updated license reference, and removed donations section.
Storage Traits Documentation
crates/mdk-storage-traits/README.md
Updated title, rewrote introduction to describe storage abstraction layer, listed in-tree backends (mdk-memory-storage, mdk-sqlite-storage), tightened state section wording, removed donations section, and updated license link.
UniFFI Crate Updates
crates/mdk-uniffi/CHANGELOG.md
Repositioned clear_pending_commit changelog entry from Unreleased section to 0.6.0 section.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

storage

Suggested reviewers

  • dannym-arx
  • jgmontoya
  • mubarakcoded
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release/crates-io-prep

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown

✅ Coverage: 91.07% → 91.08% (+0.01%)

Publishes crates to crates.io in dependency order when a GitHub release
is published: mdk-storage-traits first, then mdk-memory-storage and
mdk-sqlite-storage in parallel, then mdk-core last.
@github-actions

Copy link
Copy Markdown

⚠️ Coverage: 91.07% → 91.07% (0.00%)

Rustdoc inlines the crate README and attempts to resolve [LICENSE](LICENSE)
as a Rust intra-doc link, causing a broken-intra-doc-links error under
-D warnings. Use the full GitHub URL instead.
@github-actions

Copy link
Copy Markdown

⚠️ Coverage: 91.07% → 91.07% (0.00%)

dannym-arx
dannym-arx previously approved these changes Feb 23, 2026

@dannym-arx dannym-arx left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

ship it 🛳️

@github-actions

Copy link
Copy Markdown

⚠️ Coverage: 91.07% → 91.07% (0.00%)

@dannym-arx dannym-arx left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

approoooov

@erskingardner
erskingardner merged commit 62b5b48 into master Feb 23, 2026
11 checks passed
@erskingardner
erskingardner deleted the release/crates-io-prep branch February 23, 2026 11:26
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.

2 participants