Repository navigation
Release 4.0.0-alpha.1 on Dioxus 0.8 alpha.1 - #55
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the library and standalone examples from Dioxus 0.7 to the exact published
0.8.0-alpha.1graph for the4.0.0-alpha.1release. The dependency requirement also accepts crates.io patches to Dioxus revisionf9519967a6fb3e85bf3c1a2e2bf816a85033f752.Fixes private
ScopeIdaccess in file-picker IDs and the missing web historyLocationfeature, pinsweb-systo 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.webanddesktoptest runs passed.cargo clippy --all-targets --all-features -- -D warningspassed.RUSTDOCFLAGS='-D warnings' cargo doc --no-deps --all-featurespassed.cargo publish --dry-run --lockedpassed.Publication is paused because no crates.io token is configured locally. No publication, release tag, or GitHub release has been created.