Skip to content

Commit a09e36b

Browse files
committed
chore: release prep for v3.5.0-rc.3
Folds the rc.2 publish-fix fallout: - alef 0.19.5 regen fixes Kotlin Android trait-bridge codegen (was emitting HtmlToMarkdownRsBridge in the wrong file → publish :compileReleaseKotlin "Unresolved reference" failure) - actions v1.6.6 fixes elixir Cargo.lock missing on real-release - actions v1.6.7 fixes homebrew arm64_linux SIGPIPE - new publish-pubdev.yaml splits Dart publish onto workflow_dispatch so pub.dev OIDC accepts the token (release event was rejected) - pinned erlef/setup-beam@v1.24.0
1 parent d74a5e4 commit a09e36b

85 files changed

Lines changed: 219 additions & 180 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci-e2e.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1016,7 +1016,7 @@ jobs:
10161016
uses: actions/checkout@v6.0.2
10171017

10181018
- name: Setup Elixir
1019-
uses: erlef/setup-beam@v1.24
1019+
uses: erlef/setup-beam@v1.24.0
10201020
with:
10211021
elixir-version: "1.19"
10221022
otp-version: "28.1"

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [3.5.0-rc.3] - 2026-05-25
11+
12+
### Fixed
13+
14+
- **ci(actions/build-elixir-hex): generate `Cargo.lock` unconditionally after `rewrite-native-deps`.** The fallback `cargo generate-lockfile` only ran on dry-run, but the lockfile is gitignored — real-release runs hit `Missing files: native/html_to_markdown_nif/Cargo.lock` at `mix hex.build`. Now runs in both modes. (kreuzberg-dev/actions v1.6.6, floating `v1` retagged.)
15+
16+
- **ci(publish): split Dart pub.dev publishing into a workflow_dispatch flow so OIDC trusted publishing succeeds.** pub.dev's OIDC verifier rejects tokens minted by `release` events (`Authentication failed!`) and only accepts `push` / `workflow_dispatch`. The publish workflow now assembles the Dart package as an artifact under the `release`-triggered run, then dispatches a separate `publish-pubdev.yaml` workflow (`workflow_dispatch`) that downloads the artifact and runs `dart-lang/publish-pub@v1`. The dispatched job inherits a token GitHub's OIDC provider mints with `event_name == workflow_dispatch`, which pub.dev's audit accepts.
17+
18+
- **ci(actions/homebrew-build-bottles): suppress `brew config` SIGPIPE under `pipefail` on arm64 Linux runners.** The arm64 runner's `/usr/bin/ldd` writes more output than `head -20` consumes; under `set -o pipefail` the broken-pipe propagated out of the early diagnostic block and aborted the script before any bottle work. Temporarily disables `pipefail` for the diagnostic stanza only — strict mode is restored before the build phase. (kreuzberg-dev/actions v1.6.7, floating `v1` retagged.)
19+
20+
- **bindings: regenerated with alef 0.19.5.** Picks up the Kotlin Android trait-bridge codegen fixes that caused the v3.5.0-rc.2 `:compileReleaseKotlin` failure (`Unresolved reference 'HtmlToMarkdownRsBridge'`): `bridge_obj` filename is now used for trait-bridge codegen so the file matches the object name; trait-bridge emission is skipped when the bridge function is excluded via `kotlin_android.exclude_functions`. Also picks up the alef 0.19.5 cumulative sweep: WASM emitter JSON-deserializes structured sub-config fields; swift-bridge restores JSON deserialization step in pre-call AHashMap binding; alef-emitter removes stray `>` after `.collect::<Vec<Vec<String>>>()`; PHP/Ruby/Elixir/Swift/Dart bridges emit pre-call `AHashMap` binding + `ahash = "0.8"` scaffold dep for `Cow<'static, str>` key map params; WASM wraps sanitized `Vec<Vec<String>>` fields with `serde_wasm_bindgen::to_value()`; WASM deduplicates input DTO struct generation across functions sharing the same config type; FFI preserves `AHashMap<Cow<'static, str>, _>` param types across the wrapper boundary; setup-defaults-ruby appends `--add-checksums` to default `bundle install`; scaffold-ffi injects workspace version into every internal workspace dependency so `cargo publish` accepts the FFI crate.
21+
22+
- **ci(e2e): pin `erlef/setup-beam@v1.24.0`** (was `@v1.24` floating minor) to avoid silent action upgrades during the rc cycle.
23+
24+
- **release: cut v3.5.0-rc.3.** Aligned every workspace manifest on `3.5.0-rc.3` via `alef sync-versions --set 3.5.0-rc.3` + full `alef generate` regen against alef 0.19.5.
25+
1026
## [3.5.0-rc.2] - 2026-05-25
1127

1228
### Changed

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ authors:
1212
repository-code: "https://github.com/kreuzberg-dev/html-to-markdown"
1313
url: "https://kreuzberg.dev"
1414
license: MIT
15-
version: 3.5.0-rc.2
15+
version: 3.5.0-rc.3
1616
date-released: 2026-05-17

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ exclude = [
2323
]
2424

2525
[workspace.package]
26-
version = "3.5.0-rc.2"
26+
version = "3.5.0-rc.3"
2727
edition = "2024"
2828
authors = ["Na'aman Hirschfeld <naaman@kreuzberg.dev>"]
2929
description = "High-performance HTML to Markdown converter"
@@ -44,7 +44,7 @@ clap_complete = "4.6"
4444
clap_mangen = "0.3"
4545
encoding_rs = "0.8"
4646
ext-php-rs = "0.15.13"
47-
html-to-markdown-rs = { version = "3.5.0-rc.2", path = "crates/html-to-markdown" }
47+
html-to-markdown-rs = { version = "3.5.0-rc.3", path = "crates/html-to-markdown" }
4848
html5ever = "0.39.0"
4949
once_cell = "1.21"
5050
pyo3 = { version = "0.28.3", features = ["abi3-py310"] }

alef.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[workspace]
2-
alef_version = "0.19.4"
2+
alef_version = "0.19.5"
33
languages = [
44
"python",
55
"node",

crates/html-to-markdown-ffi/Cargo.toml

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "html-to-markdown-ffi"
3-
version = "3.5.0-rc.2"
3+
version = "3.5.0-rc.3"
44
edition = "2021"
55
license = "MIT"
66
description = "High-performance HTML to Markdown converter"
@@ -9,28 +9,29 @@ keywords = ["html", "markdown", "converter"]
99
categories = ["text-processing"]
1010
repository = "https://github.com/kreuzberg-dev/html-to-markdown"
1111

12-
# `serde_json` and `tokio` are emitted unconditionally above so the manifest
13-
# is stable across regens (and so the C FFI codegen can pull them in when an
14-
# async / Result-typed function appears in the API surface), but for umbrella
15-
# crates with no async fns and no JSON-marshalled return types they are
16-
# genuinely unused. The conditional `async-trait` / `futures-util` deps are
17-
# similarly flagged when the umbrella has trait-bridge / streaming adapters
18-
# configured but no actual async-trait / async-stream callsite in the
19-
# generated FFI shim.
20-
[package.metadata.cargo-machete]
21-
ignored = ["serde_json", "tokio", "async-trait"]
22-
2312
[lib]
2413
crate-type = ["cdylib", "staticlib"]
2514

26-
[features]
27-
default = []
28-
2915
[dependencies]
30-
async-trait = "0.1"
31-
html-to-markdown-rs = { path = "../html-to-markdown", version = "3.5.0-rc.2", features = ["full", "metadata", "visitor", "serde", "inline-images"] }
16+
html-to-markdown-rs = { path = "../html-to-markdown", version = "3.5.0-rc.3", features = ["full", "metadata", "visitor", "serde", "inline-images"] }
17+
ahash = "0.8"
3218
serde_json = "1"
3319
tokio = { version = "1", features = ["full"] }
20+
async-trait = "0.1"
21+
22+
# `serde_json`, `ahash`, and `tokio` are emitted unconditionally above so the
23+
# manifest is stable across regens (and so the C FFI codegen can pull them in
24+
# when an async / Result-typed function appears in the API surface), but for
25+
# umbrella crates with no async fns and no JSON-marshalled return types they
26+
# are genuinely unused. The conditional `async-trait` / `futures-util` deps
27+
# are similarly flagged when the umbrella has trait-bridge / streaming adapters
28+
# configured but no actual async-trait / async-stream callsite in the generated
29+
# FFI shim.
30+
[package.metadata.cargo-machete]
31+
ignored = ["ahash", "serde_json", "tokio", "async-trait"]
32+
33+
[features]
34+
default = []
3435

3536
[build-dependencies]
3637
cbindgen = "0.29"

crates/html-to-markdown-node/Cargo.toml

Lines changed: 11 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/html-to-markdown-node/npm/darwin-arm64/package.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/html-to-markdown-node/npm/darwin-x64/package.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/html-to-markdown-node/npm/linux-arm-gnueabihf/package.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)