Repository navigation
fix: Vuetify 4 UI regressions, Rust dependency updates, HTTP/1.1-only listener - #129
Merged
JanZachmann merged 3 commits intoOct 6, 2026
Merged
Conversation
…logs - Vuetify 4 positions v-overlay content by the location prop, so the overlay spinner needs location="center center" instead of flex classes. - Vuetify 4 removed the MD2 typography classes; switch to the MD3 names from the Vuetify upgrade guide. - useAsyncAction watches messages synchronously, because the global watcher in App.vue clears them before a default watcher would run. The reboot and factory reset dialogs now close and stop loading. - Bump version to 1.2.6. Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
HttpServer's rustls listener always enables HTTP/2, and actix-http 3.x only supports h2 0.3, which has an unfixed DoS advisory (RUSTSEC-2026-0258). Build the HTTPS listener from actix-server and actix-http instead, without HTTP/2, so h2 is no longer in the build. Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
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.
Summary
UI fixes for Vuetify 4
OverlaySpinner: uselocation="center center"onv-overlay. The spinner (reboot, factory reset, update) is centered again.text-h4,text-h5,text-h6,text-subtitle-1/2,text-body-1/2,text-caption) with the MD3 names from the Vuetify upgrade guide (text-headline-large,text-headline-small,text-title-large,text-body-large,text-title-small,text-body-medium,text-body-small). Two test selectors that used.text-h4are updated.useAsyncAction: watch success and error messages withflush: 'sync'. The reboot and factory reset dialogs now close and stop loading after the request.Rust dependency updates
cargo update), among them actix-web 4.15, actix-http 3.18, rustls 0.23.45, tokio 1.53, time 0.3.55.HttpError::Http.bodyis no longer anOption; the error body is read withHttpError::body()/body_json(). A test response with a 5xx status can no longer be built asOk(Response), so the 503 test is replaced by tests ofmap_http_errorwithcrux_http::testing::rejection.hash_passwordcreates the salt itself (getrandomfeature). A new test checks that a hash created by argon2 0.5 still validates, so stored device passwords keep working after the update.HTTPS listener without HTTP/2
actix-server+actix_http::HttpService::rustls_0_23instead ofHttpServer::bind_rustls_0_23, and actix-web'srustls-0_23feature is removed. The UI is served over HTTP/1.1 only, andh2is no longer in the build. Workers, client disconnect timeout and graceful shutdown match the previousHttpServersetup. A TODO inmain.rsnames the condition to go back tobind_rustls_0_23.Version
Reason
On a device, starting a factory reset showed the overlay at the bottom left of the page, the text in plain body size, and the factory reset dialog stayed open with a loading button behind the overlay.
locationprop (defaultbottom), so thealign-center justify-centerclasses no longer center it.App.vueshows the toast and clears the message. It runs before the watcher inuseAsyncAction, which then only sawnulland never calledonSuccess/onError. A sync watcher sees the message before it is cleared. The factory reset e2e test now checks that the dialog closes.The dependency updates clear RUSTSEC-2026-0285 (rustls) and the yanked
chacha20/spinversions.RUSTSEC-2026-0258 (
h20.3.27, DoS via empty DATA frames) cannot be fixed by an update: it is fixed only in h2 0.4.16+, actix-http 3.x still depends on h2 0.3, and h2 does not backport fixes to 0.3 (hyperium/h2#948). actix-web'srustls-0_23feature always enables HTTP/2, so the server offered it over ALPN and the advisory applied. Upstream tracks the h2 0.4 move in actix/actix-web#4199. HTTP/1.1 only has no real cost for a local device UI; the WebSocket already used HTTP/1.1.Not fixed by this PR:
rsa, viajsonwebtoken): no fixed version.getrandomstays at 0.3: crux_http 0.20 still pulls inrand0.9 →getrandom0.3, which needs ourwasm_jsfeature for the WASM build.bincode/proc-macro-error(unmaintained): still pulled in by crux.