Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Changelog

## 0.1.0-alpha.4 — unpublished candidate
## 0.1.0-alpha.4

Published to [crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4) on
27 October 2026 (Europe/Kyiv; 26 October UTC). A fresh Rust 1.88 consumer installed
the crate from the registry and checked commit, no-op and stale-context behavior.
[Evidence and archive hash](docs/evidence/release-alpha4.json).

- Prepare crates.io publication with an explicit registry allowlist, a package
landing page, dry-run CI and a manual workflow for later Trusted Publishing.
Expand Down
37 changes: 18 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,23 @@ an optional way to test consumer workflows, not a dependency of this crate.

## Current prerelease

**[v0.1.0-alpha.3](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3) · released 26 October 2026 · Rust 1.88+**
**[0.1.0-alpha.4 on crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4) · published 27 October 2026 (Europe/Kyiv) · Rust 1.88+**

**[Download the source crate](https://github.com/PerchAnton/edit-session/releases/download/v0.1.0-alpha.3/edit-session-0.1.0-alpha.3.crate)** · [SHA-256 checksums](https://github.com/PerchAnton/edit-session/releases/download/v0.1.0-alpha.3/SHA256SUMS) · [Changelog](CHANGELOG.md) · [Use as a dependency](#use-from-another-project)
**[API documentation](https://docs.rs/edit-session/0.1.0-alpha.4/edit_session/)** · [Download the crate](https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4/download) · [SHA-256 and installation evidence](docs/evidence/release-alpha4.json) · [Changelog](CHANGELOG.md) · [Use as a dependency](#use-from-another-project)

![edit-session alpha 3, released 26 October 2026: 0 runtime dependencies, 25 scoped checks and a 29.4 KiB source archive. Check live state, attempt the host command, retain fields and draft on rejection, and close on success.](docs/assets/release.svg)
![edit-session alpha 4, published on crates.io 27 October 2026: 0 runtime dependencies, 25 scoped checks and a 34.2 KiB source archive. Check live state, attempt the host command, retain fields and draft on rejection, and close on success.](docs/assets/release.svg)

Release snapshot: **16 lifecycle tests + 8 host-example tests + 1 doctest**,
**0 runtime dependencies**, **29.4 KiB source crate (30,112 bytes)**.
[Exact file, hash and release CI](docs/evidence/release-alpha3.json). The example tests
**0 runtime dependencies**, **34.2 KiB source crate (35,058 bytes)**.
[Exact file, hash, release CI and clean installation](docs/evidence/release-alpha4.json). The example tests
model host recovery; they are separate from real application UI regressions. Package
size describes the download. The library API is unchanged from alpha.2.

This GitHub prerelease is available as a source archive or fixed Git dependency;
it is not published on crates.io. The CI badge above tracks current main, while
the release snapshot stays tied to its tagged commit.
The crate was downloaded from crates.io into a fresh Cargo cache and built with
Rust 1.88; commit, no-op and stale-context behavior were checked. The CI badge above
tracks current main, while release facts stay tied to the tagged commit. The
[previous GitHub release](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3)
remains available.

Trying the alpha? [Report a bug](https://github.com/PerchAnton/edit-session/issues/new?template=bug_report.yml)
with your revision and a short sequence of calls, or read the [alpha compatibility policy](docs/RELEASING.md#alpha-compatibility).
Expand All @@ -40,7 +42,7 @@ correction, Cancel, preserved Redo and duplicate confirmation.
From a checkout of this release:

```sh
git clone --branch v0.1.0-alpha.3 --depth 1 https://github.com/PerchAnton/edit-session.git
git clone --branch v0.1.0-alpha.4 --depth 1 https://github.com/PerchAnton/edit-session.git
cd edit-session
cargo run --locked --example retry_command
cargo test --locked --example retry_command
Expand Down Expand Up @@ -71,8 +73,8 @@ dated measurements. Each figure has a source and a defined scope.
| Proposal/check loop | **999 pairs; 0 additional clones** | [Instrumented test](tests/lifecycle.rs); one clone at construction, one more on Reset; caller work excluded |
| Integration cost | **+217 production UI lines** | [267 added / 50 removed](docs/ADOPTION.md#count-the-cost-as-well); no total-code or speed improvement is claimed |

**Experimental, 0.1.0-alpha.3.** Maintained by [PerchAnton](https://github.com/PerchAnton).
Available as a Git dependency; not published to crates.io. PhotoCraft and PdfCraft
**Experimental, 0.1.0-alpha.4.** Maintained by [PerchAnton](https://github.com/PerchAnton).
Available on crates.io and as a Git dependency. PhotoCraft and PdfCraft
integrations are proposed and await upstream approval.

Begin an edit, preview values, reject invalid input, cancel, and produce a single change
Expand Down Expand Up @@ -120,18 +122,15 @@ sequence and shared report help your consumer. The [API contracts](src/lib.rs) a

## Use from another project

**Crates.io candidate: `0.1.0-alpha.4` (not published yet).** After publication,
use `edit-session = "=0.1.0-alpha.4"` in `[dependencies]` and commit `Cargo.lock`.
The [publishing guide](docs/RELEASING.md#registry-publication) covers the first upload
and later Trusted Publishing. Until then, use the existing Git release below.

Add this entry to your crate's `[dependencies]` to use the published alpha 3 at its fixed release commit:
Add this exact prerelease to your crate's `[dependencies]`:

```toml
edit-session = { git = "https://github.com/PerchAnton/edit-session", rev = "968ebd2f9a9b04c068b34a3fba42c246261380b7" }
edit-session = "=0.1.0-alpha.4"
```

Commit the resulting `Cargo.lock`. The companion
Commit the resulting `Cargo.lock`. For a Git dependency, the same release is pinned
at revision `621ece8c2a969c47927fecbff80f94ac9adfa618`.
The companion
[interaction-check](https://github.com/PerchAnton/interaction-check) project replays semantic
scenarios against adapters using this library.

Expand Down
28 changes: 16 additions & 12 deletions docs/RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

## Published prerelease

**[v0.1.0-alpha.3](https://github.com/PerchAnton/edit-session/releases/tag/v0.1.0-alpha.3)**
was published on **26 October 2026**, with a source `.crate` archive and SHA-256
checksums. Its public library API and behavior are unchanged from alpha.2; it adds
the tested recovery example, documentation and package verification. The crate is
not published on crates.io. The separate alpha.4 candidate enables the `crates-io`
registry in its manifest; this does not publish anything.
**[0.1.0-alpha.4 on crates.io](https://crates.io/crates/edit-session/0.1.0-alpha.4)**
was published on **27 October 2026 (Europe/Kyiv; 26 October UTC)**. Its public API,
behavior, Rust 1.88 minimum and zero runtime dependencies are unchanged from alpha.3.
A fresh consumer downloaded it from the registry and checked commit, no-op and
stale-context behavior. The archive hash matches the upload and release CI artifact.
[Evidence](evidence/release-alpha4.json) · [Installation](../README.md#use-from-another-project).
The previous alpha.3 GitHub prerelease remains unchanged.

## Alpha compatibility

Expand Down Expand Up @@ -55,18 +56,21 @@ Do not present an alpha release as the latest stable release.

## Registry publication

### Prepared candidate
### Published version

`0.1.0-alpha.4` is prepared, **not published**. The API, behavior, Rust 1.88 minimum
`0.1.0-alpha.4` is **published on crates.io**. The API, behavior, Rust 1.88 minimum
and runtime dependencies are unchanged. Package metadata/docs change, so the candidate
uses a new version; alpha.3 tags and archives stay untouched. `publish = ["crates-io"]`
limits the registry target. `PACKAGE.md` is the registry landing page and uses absolute
links so it works outside GitHub.

The public crates.io API returned HTTP 404 for `edit-session` on 26 October 2026.
This does not reserve the name or guarantee acceptance; check it again before upload.
The registry lists `PerchAnton` as the owner. This version cannot be overwritten;
prepare a new version for any future package change.

### First upload: owner action
### First upload: completed

Alpha.4 was uploaded with the owner's scoped bootstrap token using Cargo 1.88.
The procedure below is retained for reference; do not upload this version again.

Crates.io currently requires an API token for a crate's **first** publication. Trusted
Publishing can only be configured after the crate exists. There is no token in this
Expand Down Expand Up @@ -128,7 +132,7 @@ edit-session = "=0.1.0-alpha.4"

Run `cargo check`, confirm `Cargo.lock` names the crates.io source (not a path/Git
override), and check the [API documentation](https://docs.rs/edit-session/0.1.0-alpha.4/).
Only then mark the README/changelog as published and add registry badges. Never
Only then mark the README/changelog as published. Never
overwrite a published version; fixes require a new version.

Reference: [Cargo's publishing guide](https://doc.rust-lang.org/cargo/reference/publishing.html).
Expand Down
2 changes: 1 addition & 1 deletion docs/assets/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ the same information in a text table. Existing measured counts are unchanged.

`release.svg` is a dated release summary and a three-step workflow diagram. Its
version, publication date, exact compressed file size and CI references come from
the [release snapshot](../evidence/release-alpha3.json). KiB means bytes / 1024,
the [release snapshot](../evidence/release-alpha4.json). KiB means bytes / 1024,
rounded to one decimal; this is download size, not runtime memory or a comparison
between projects. The README repeats the scoped counts and links to the real assets.

Expand Down
10 changes: 5 additions & 5 deletions docs/assets/release.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 46 additions & 0 deletions docs/evidence/release-alpha4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"recorded_date": "2026-10-27",
"timezone": "Europe/Kyiv",
"status": "published",
"runtime_dependencies": 0,
"license": "MIT OR Apache-2.0",
"scope": "Package and installation evidence; no claim of upstream adoption or application performance.",
"package": "edit-session",
"version": "0.1.0-alpha.4",
"source_commit": "621ece8c2a969c47927fecbff80f94ac9adfa618",
"tag": "v0.1.0-alpha.4",
"registry": "https://crates.io/crates/edit-session/0.1.0-alpha.4",
"registry_metadata": "https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4",
"published_at_utc": "2026-10-26T22:04:03.706343Z",
"tag_ci": "https://github.com/PerchAnton/edit-session/actions/runs/40407939344",
"package_verification": "https://github.com/PerchAnton/edit-session/actions/runs/40407143783",
"tests": {
"lifecycle": 16,
"recovery_example": 8,
"compile_fail_doctest": 1
},
"minimum_rust": "1.88",
"installation": {
"system": "macOS arm64",
"rust": "1.88.0",
"fresh_project": true,
"fresh_cargo_cache": true,
"dependency_source": "registry+https://github.com/rust-lang/crates.io-index",
"checks": [
"exact prerelease download and compile",
"commit before/after values",
"reset produces no-op",
"stale context rejected",
"zero runtime dependencies",
"download checksum equals uploaded archive and verified CI package"
]
},
"files": [
{
"name": "edit-session-0.1.0-alpha.4.crate",
"bytes": 35058,
"sha256": "a97757e1d66f678e3c49c5ba0e6dd915a821fb55ed9707b0d55b4d2b108fcbd0",
"url": "https://crates.io/api/v1/crates/edit-session/0.1.0-alpha.4/download"
}
]
}