Skip to content

docs: give every workspace member its own README - #21

Merged
KeyCode17 merged 1 commit into
mainfrom
docs/per-crate-readmes
Aug 7, 2026
Merged

docs: give every workspace member its own README#21
KeyCode17 merged 1 commit into
mainfrom
docs/per-crate-readmes

Conversation

@KeyCode17

Copy link
Copy Markdown
Owner

Why

crates.io renders each crate's own README, and all 16 published pxsolver-* crates had none. Their pages showed a one-line description and nothing else — no usage, no link back to the workspace, and no way to tell a shipping handler (pxsolver-perimeterx) from a detection-only stub (pxsolver-turnstile).

What's here

  • A README for all 19 workspace members. Each carries the crate's purpose, an install snippet, its public surface, and the caveats specific to it (proxy credentials for pxsolver-harvester, the rotation math for pxsolver-camoufox, stub status for the three placeholder handlers, the v1.9.0 signature change for pxsolver-pipeline).
  • readme = "README.md" declared explicitly on the 16 published crates rather than relying on filename auto-detection.
  • Documents the package/crate name split: you depend on pxsolver-core but you use px_core::…. Not guessable from a crates.io page.

Bug fixed on the way

The root README told readers to run:

cargo install pxsolver-server pxsolver-cli

Both are publish = false and have never existed on crates.io — that command fails. Only the 16 library crates are published; the binaries build from source. The root README now lists what is actually installable and from where, with a table of the published crates.

These do not reach crates.io until the next minor

1.9.0 is already published and versions are immutable, so the crate pages stay bare until a new version ships. Per .github/workflows/release.yml, the crates.io publish is gated on minor/major/initial — a patch tag will not publish. Surfacing these needs a 1.10.0.

Verification

cargo check --workspace --all-targets clean · cargo package -p pxsolver-core --list confirms README.md is included in the packaged artifact. Docs and manifest metadata only; no code paths touched.

crates.io renders each crate's own README, and all 16 published crates
had none — their pages showed a bare description with no usage, no link
back to the workspace, and no way to tell a shipping handler from a
detection-only stub. Each now carries its purpose, install snippet,
public surface and the caveats specific to it, with `readme` declared
explicitly rather than left to filename auto-detection.

Fixes a false claim in the root README while in there: it told readers to
`cargo install pxsolver-server pxsolver-cli`, but both binaries are
`publish = false` and have never been on crates.io. Only the 16 library
crates are published; the binaries build from source. The root README now
lists what is actually installable from where.

Also documents the package/crate name split — you depend on
`pxsolver-core` but `use px_core::…`, which is not guessable from the
crates.io page alone.

px-server, px-cli and xtask are unpublished but get READMEs too; they are
what a reader browsing the repo lands on.
@KeyCode17
KeyCode17 merged commit 70523de into main Aug 7, 2026
6 checks passed
@KeyCode17
KeyCode17 deleted the docs/per-crate-readmes branch August 7, 2026 17:50
@KeyCode17 KeyCode17 mentioned this pull request Aug 7, 2026
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