Skip to content

Release 4.0.0-alpha.1 on Dioxus 0.8 alpha.1 - #55

Merged
kindintelligence merged 9 commits into
mainfrom
dev
Oct 19, 2026
Merged

kindintelligence merged 9 commits into
mainfrom
dev

Conversation

@kindintelligence

@kindintelligence kindintelligence commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Moves the library and standalone examples from Dioxus 0.7 to the exact published 0.8.0-alpha.1 graph for the 4.0.0-alpha.1 release. The dependency requirement also accepts crates.io patches to Dioxus revision f9519967a6fb3e85bf3c1a2e2bf816a85033f752.

Fixes private ScopeId access in file-picker IDs and the missing web history Location feature, pins web-sys to 0.3.98, raises the verified MSRV to Rust 1.88, updates SSR/i18n and all lockfiles, refreshes Rustls, and keeps checked atomic sortable IDs warning-free on Rust 1.99 without raising the MSRV. Includes the existing dev fixes for board moves, registry acceptance, pointer tracking, selection ranges, file hover, autoscroll sampling, and collision ranking.

Updates the release documentation, alpha CLI/gallery settings, browser readiness and macOS selection modifier, and prerelease release handling. Keeps the existing protected-branch CI check names while running the new MSRV and git-patched consumer checks.

Validation completed locally on macOS (including Rust 1.99 tests, Clippy, and rustdoc):

  • cargo test --all-features: 294 tests and 5 doctests passed.
  • Separate web and desktop test runs passed.
  • cargo clippy --all-targets --all-features -- -D warnings passed.
  • RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --all-features passed.
  • wasm web check and Rust 1.88 minimal library check passed.
  • Scratch git-patched downstream consumer check passed with one coherent Dioxus family.
  • Both standalone examples passed tests and Clippy.
  • All 40 Chromium browser regressions passed without retries; production gallery built.
  • Markdown lint and dependency policy checks passed for the root and both examples.
  • cargo publish --dry-run --locked passed.

Publication is paused because no crates.io token is configured locally. No publication, release tag, or GitHub release has been created.

claude and others added 9 commits September 2, 2026 07:47
Read the crate end to end and wrote the findings down as an internal
working document, alongside the renderer and Blitz notes. Nothing is
fixed here; the file is the triage list.

Nine numbered findings, headed by the registry exposing two acceptance
paths where the public payload-only family (acceptable, step_zone,
children_of, hit_test_closest) now bypasses accepts_query,
allowed_effects and the provider's ReleasePolicy that every built-in
component goes through. Also records what was verified and found sound,
so a later review does not re-derive it.

Excluded from the published tarball like the other maintainer notes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01De2nBwaxgWtTjE8VoUeDqG
One registry acceptance pipeline: the payload-only lookups (acceptable,
step_zone, step_sibling, children_of, first_child, hit_test_closest)
now run the same accepts / accepts_query / allowed_effects negotiation
the built-in components do, via DropQuery::new(payload), so a custom
source no longer targets zones a Draggable would skip.

try_apply_move locates a board item by key instead of trusting the
event index, adjusts same-column forward inserts from the index it
found, and returns ApplyMoveError::SourceNotFound without mutating on a
stale drop; apply_move documents that a reordered column makes it
remove the wrong item, and a test pins that hazard.

Selection::toggle re-anchors on the toggled key so Shift+click ranges
from it. FileDropZone pairs every on_hover(true) with a false, including
when disabled mid-hover. AutoScroll coalesces offset reads to one in
flight. Custom collision ranking indexes registration order once.
SortableList and SortableGrid retire the capture flag on every return
to Idle. DropEffects gains &, &=, ! (masked to STANDARD), From and
FromIterator. The rect-refresh bus keys registrations from its own
counter. update_pointer's (0, 0) contract and DndContext's handle
equality are stated in rustdoc.

CI's push filter names dev (development no longer exists) and the
contributor docs pin the rumdl version CI runs. The review document
records each finding's resolution, including the one left as
documentation and the half-finding withdrawn as already documented.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01De2nBwaxgWtTjE8VoUeDqG
The 2026-09 review's two deferred items, done properly.

acceptable, step_zone, step_sibling, children_of and first_child are
deprecated since 3.2.0 in favor of their _query forms, which they now
wrap exactly; hit_test_closest is deprecated in favor of resolve, and
its note names the one difference (equal-distance fallback ties go to
the later record there). The 57 payload-only call sites in the runtime
tests moved to the query forms and to resolve; the one test pinning the
deprecated helper's own tie-break keeps calling it under
allow(deprecated). A registry unit test registers zones with
allowed_effects: EMPTY and an accepts_query filter and asserts the
deprecated lookups refuse them and equal their query forms - the bug
the review found, pinned.

update_pointer no longer drops every exact (0, 0) sample. It drops one
only when it jumps in from more than 256 CSS px away, the synthetic
report some webviews emit; a sample continuing from nearby is a real
pointer reaching the viewport corner and is applied. The constant's
derivation is in its comment and the contract test covers both cases.

Verified here with the wasm target and the GTK/WebKitGTK libraries
installed: every step of every CI job, including cargo test
--all-features, clippy -D warnings over all features and targets, docs
with -D warnings, and both standalone desktop examples. The review
document records the resolution and the verification.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01De2nBwaxgWtTjE8VoUeDqG
CI's semver job rejected the deprecated registry lookups under the
3.1.0 manifest: a newly deprecated public method requires a minor
version, and the attributes already said since = "3.2.0". The crate is
3.2.0 in Cargo.toml, in both standalone example manifests (they pin the
path dependency's version), and in the three lockfiles the release
validator checks with --locked - one line each, nothing else
re-resolved. The changelog keeps its Unreleased heading; release prep
converts it, as it did for 3.1.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01De2nBwaxgWtTjE8VoUeDqG
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01De2nBwaxgWtTjE8VoUeDqG
Pin the alpha dependency graph and web-sys bindings, enable the missing web history feature, replace private ScopeId access for file inputs, and require the verified Rust 1.88 minimum. Update the standalone consumers and refresh Rustls in each lockfile.
Document the Dioxus and MSRV changes, retain the unreleased dev fixes in the changelog, and check a git-patched downstream consumer in CI. Align the CLI and gallery build settings, wait for browser fixture readiness, use the platform selection modifier, and support prerelease tags without promoting them to latest.
Use a checked compare-exchange loop in place of the newly deprecated fetch_update while retaining the Rust 1.88 minimum and the existing ID exhaustion behavior.
@kindintelligence
kindintelligence merged commit fb80a41 into main Oct 19, 2026
22 checks passed
@kindintelligence
kindintelligence deleted the dev branch October 19, 2026 08:14
@kindintelligence
kindintelligence restored the dev branch October 19, 2026 08:15
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