@ondeinference / onde / commits / 6a08d25

Retire onde-tqdm in favour of upstream tqdm 0.8.1

The crossterm 0.29 bump (mrlazy1708/tqdm#28) is merged upstream and released as tqdm 0.8.1, so the onde-tqdm republish is no longer needed. The mistral.rs fork now depends on upstream tqdm directly; onde picks that up when it moves to onde-mistralrs 0.9.4. Docs only here: the fork inventory and the Cargo.toml comment about why mio no longer needs a patch. The published onde-tqdm versions stay up so onde-mistralrs 0.9.3 keeps resolving. Closes #9 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Seto Elkahfi committed Sep 5, 2026 at 09:50 UTC 6a08d258485b573417de9353f6c5433aab62b355
3 files changed +44 -35
.agents/skills/forked-dependencies/SKILL.md
+38 -31
@@ -1,6 +1,6 @@
1 ---
2 name: forked-dependencies
3 -description: The complete inventory of forked crates and [patch.crates-io] overrides that the onde stack depends on — mistral.rs, candle, sysctl, mio, tqdm, core2. Explains what each fork is for, where it is consumed, how the git-vs-published two-tier model works, and how to update or add one. Apply whenever a build fails on a missing/incompatible crate for an Apple or Android target, when bumping the mistral.rs or candle fork, or when adding a new patched dependency.
3 +description: The complete inventory of forked crates and [patch.crates-io] overrides that the onde stack depends on — mistral.rs, candle, sysctl, mio, tqdm, core2 — including the retired ones. Explains what each fork is for, where it is consumed, how the git-vs-published two-tier model works, and how to update or add one. Apply whenever a build fails on a missing/incompatible crate for an Apple or Android target, when bumping the mistral.rs or candle fork, or when adding a new patched dependency.
4 allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5 user-invocable: true
6 ---
@@ -51,15 +51,17 @@ publish. onde therefore resolved crates.io `tqdm 0.8.0` → `crossterm 0.25` →
51 visionOS patch even though the tqdm fork "already fixed" crossterm upstream of
52 it.
53
54 -The fix that removed the whole problem: the crossterm-0.29 tqdm fork is now
55 -**published to crates.io as `onde-tqdm`** and consumed by the mistral.rs fork as
56 -a `version =` registry dep (package rename), exactly like `onde-mistralrs-*` and
57 -`onde-candle-*`. A registry dep survives publish, so onde's registry-resolved
58 -tree gets `onde-tqdm` → `crossterm 0.29` → `mio 1.x`, and the `mio 0.8.11`
59 -line disappears entirely. This is now **done**: `onde-mistralrs-*` 0.9.3
60 -(carrying the `onde-tqdm` dep) is published, onde consumes 0.9.3, and onde's
61 -`[patch.crates-io] mio` entry has been **deleted**. The `mio` fork is retired.
62 -See the onde-tqdm and mio entries.
54 +The fix that removed the whole problem was to make the crossterm-0.29 tqdm a
55 +**registry** dep of the mistral.rs fork rather than a git one, since a registry
56 +dep survives publish: onde's resolved tree then gets `crossterm 0.29` → `mio
57 +1.x` and the `mio 0.8.11` line disappears entirely. That shipped first as the
58 +stopgap fork crate `onde-tqdm` (in `onde-mistralrs-*` 0.9.3), which let onde
59 +delete its `[patch.crates-io] mio` entry and retire the `mio` fork.
60 +
61 +Upstream has since merged the crossterm bump (mrlazy1708/tqdm#28) and released
62 +it as **`tqdm 0.8.1`**, so the fork crate is no longer needed: the mistral.rs
63 +fork depends on plain `tqdm = "0.8.1"` and **`onde-tqdm` is retired**. See the
64 +tqdm and mio entries.
65
66 ---
67
@@ -69,9 +71,14 @@ See the onde-tqdm and mio entries.
71 |-------|---------------|-----|---------|----------------|
72 | mistral.rs (12 crates) | `setoelkahfi/mistral.rs` | branch `fix/all-platform-fixes` | All-platform fixes; **published** as `onde-mistralrs-*` | onde deps (registry) |
73 | candle-core, candle-nn | `setoelkahfi/candle` | branch `onde/candle-0.11.0-27f20fea` (rev `27f20fea`) | Post-0.11.0 candle APIs; **published** as `onde-candle-{core,nn}` | mistral.rs fork deps (registry) |
72 -| tqdm | `setoelkahfi/tqdm` | branch `release/onde-tqdm` (version `0.8.2`) | Bumps crossterm to 0.29 (→ mio 1.x); **published** as `onde-tqdm` | mistral.rs fork dep (registry) |
74 +| tqdm | *none — upstream* | crates.io `tqdm 0.8.1` | Crossterm 0.29 (→ mio 1.x) is upstream as of 0.8.1 | mistral.rs fork dep (registry) |
75 | sysctl | `setoelkahfi/sysctl-rs` | branch `feature/watchos` | watchOS (`target_os = "watchos"`) support | `[patch.crates-io]` in onde **and** mistral.rs fork |
74 -| mio | `setoelkahfi/mio` | branch `feature/visionos` | visionOS support for the `mio 0.8.11` line | **RETIRED** — patch removed from onde once it consumed onde-mistralrs 0.9.3 (onde-tqdm → mio 1.x). Fork kept for history/upstream PR. |
76 +| mio | `setoelkahfi/mio` | branch `feature/visionos` | visionOS support for the `mio 0.8.11` line | **RETIRED** — patch removed from onde once it consumed onde-mistralrs 0.9.3 (crossterm 0.29 → mio 1.x). Fork kept for history/upstream PR. |
77 +
78 +> **Retired:** `onde-tqdm` (`setoelkahfi/tqdm`, branch `release/onde-tqdm`,
79 +> published 0.8.1/0.8.2) — the stopgap republish of the crossterm-0.29 tqdm
80 +> fork. Upstream merged the bump and released `tqdm 0.8.1`, so the mistral.rs
81 +> fork now depends on upstream directly. See the tqdm entry.
82
83 > **Retired:** `core2` (`bbqsrc/core2` rev `545e84bc`) — was a `[patch.crates-io]`
84 > workaround for the yanked `core2 0.4.0`; removed from the mistral.rs fork after
@@ -150,25 +157,25 @@ See the onde-tqdm and mio entries.
157 (`aarch64-apple-visionos{,-sim}`) `cargo +nightly check -Z build-std` pass with
158 the `mio` patch deleted.
159
153 -### tqdm → crossterm 0.29 → `onde-tqdm`
154 -
155 -- **Fork:** `setoelkahfi/tqdm`. Two branches:
156 - - `deps/bump-crossterm` — keeps the crate named `tqdm`, feeds the **upstream
157 - PR** mrlazy1708/tqdm#28 (do not rename the package here).
158 - - `release/onde-tqdm` — sets `package = "onde-tqdm"` (crate lib name stays
159 - `tqdm` so downstream `use tqdm::…` and doctests are unchanged) and is
160 - **published to crates.io as `onde-tqdm`** (0.8.1, 0.8.2).
161 -- **Why:** bumps crossterm to 0.29 (→ mio 1.x), eliminating the whole `mio
162 - 0.8.11` visionOS problem at its source.
163 -- **Consumed in:** the mistral.rs fork's `[workspace.dependencies]` as
164 - `tqdm = { version = "0.8.2", package = "onde-tqdm" }` — a **registry** rename
165 - dep, so it survives `cargo publish` and reaches onde (unlike the old git dep,
166 - which was stripped). This is the same rename trick as `onde-mistralrs-*` and
167 - `onde-candle-*`.
168 -- **Publish order:** publish `onde-tqdm` **before** republishing the
169 - `onde-mistralrs-*` crates that depend on it. Note the published
170 - `onde-mistralrs-core 0.9.2` still uses plain `tqdm ^0.8.0` (pre-rename); the
171 - `onde-tqdm` dep first ships in `0.9.3`.
160 +### tqdm → upstream (`onde-tqdm` RETIRED)
161 +
162 +- **Status:** no fork. `setoelkahfi/tqdm` branch `deps/bump-crossterm` was
163 + merged upstream as mrlazy1708/tqdm#28 and released as **`tqdm 0.8.1`**, which
164 + carries the crossterm 0.29 bump (→ mio 1.x) that the whole `mio 0.8.11`
165 + visionOS problem hinged on.
166 +- **Consumed in:** the mistral.rs fork's `[workspace.dependencies]` as plain
167 + `tqdm = "0.8.1"`. It must stay a **registry** dep — `cargo publish` strips git
168 + deps, so a git tqdm would never reach onde.
169 +- **The `onde-tqdm` stopgap (retired):** branch `release/onde-tqdm` set
170 + `package = "onde-tqdm"` (lib name stayed `tqdm`, so `use tqdm::…` and doctests
171 + were unchanged) and was published as `onde-tqdm` 0.8.1/0.8.2 — the same rename
172 + trick as `onde-mistralrs-*` and `onde-candle-*`, needed only because upstream
173 + hadn't released the bump yet. Its source was byte-identical to upstream
174 + `tqdm 0.8.1` apart from the package metadata, so the swap back is a drop-in.
175 +- **Which release drops it:** `onde-mistralrs-core` 0.9.2 used plain
176 + `tqdm ^0.8.0` (crossterm 0.25), 0.9.3 used `onde-tqdm 0.8.2`, and the next
177 + publish (0.9.4) goes back to upstream `tqdm 0.8.1`. The published `onde-tqdm`
178 + versions stay up so 0.9.3 keeps resolving; don't yank them.
179
180 ### core2 → removed
181
.agents/skills/sdk-regressions/SKILL.md
+1 -1
@@ -497,7 +497,7 @@ Known publish-verification snags (hit during 0.9.1):
497 | Error | Fix |
498 |-------|-----|
499 | E0599 on candle APIs (`indexed_gemv`, ...) | Step 0 — publish `onde-candle-*` and repoint |
500 -| `dependency tqdm does not specify a version` | git dep needs a registry fallback: `version = "0.8.0"` alongside `git =` |
500 +| `dependency tqdm does not specify a version` | tqdm must be a registry dep, not git — it is plain `tqdm = "0.8.1"` since the crossterm bump landed upstream |
501 | `core2 0.4.0 is yanked` | `cargo update -p bitstream-io` (4.10.0 dropped core2) |
502
503 ---
Cargo.toml
+5 -3
@@ -121,8 +121,10 @@ uniffi = { version = "=0.31.0", features = ["build"] }
121 # dropped — cargo just logs "patch was not used in the crate graph" and builds
122 # the unpatched registry crate, which is how the watchOS check kept failing.
123 #
124 -# mio no longer needs patching: onde-mistralrs-core 0.9.3 depends on onde-tqdm
125 -# 0.8.2 (crossterm 0.29 -> mio 1.x), so the old tqdm -> crossterm 0.25 -> mio
126 -# 0.8.11 chain (which lacked visionOS support) is gone from the tree.
124 +# mio no longer needs patching: onde-mistralrs-core pulls tqdm with crossterm
125 +# 0.29 -> mio 1.x, so the old tqdm -> crossterm 0.25 -> mio 0.8.11 chain (which
126 +# lacked visionOS support) is gone from the tree. 0.9.3 got that via the
127 +# onde-tqdm fork crate; from 0.9.4 it comes from upstream tqdm 0.8.1, which
128 +# carries the merged crossterm bump. onde-tqdm is retired.
129 [patch.crates-io]
130 sysctl = { git = "https://github.com/setoelkahfi/sysctl-rs.git", branch = "feature/watchos-0.6" }