Skip to content

chore(deps): update all dependencies + fix Settings Save button loading state#123

Merged
JanZachmann merged 3 commits into
omnect:mainfrom
JanZachmann:deps-update-all
Jun 15, 2026
Merged

chore(deps): update all dependencies + fix Settings Save button loading state#123
JanZachmann merged 3 commits into
omnect:mainfrom
JanZachmann:deps-update-all

Conversation

@JanZachmann

@JanZachmann JanZachmann commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Two changes, bundled as one maintenance PR (version bumped to 1.2.4):

1. Dependency updates (incl. majors)

2. Fix: Settings "Save" button spins permanently after load

The Save button binds to the global is_loading flag, which was stuck true after every page load.

Cause: Event::Initialize called start_loading() and fanned out to silent background fetches (LoadSettings, wifi CheckAvailability). None of their completion handlers cleared the flag, and CheckAvailability re-set it by using unauth_post! (method: get).

Fix: removed start_loading() from Event::Initialize, and switched CheckAvailability to the silent http_get! macro — consistent with the deliberately-silent LoadSettings.

Summary:
- Rust compat bumps via cargo update (tokio 1.52.3, reqwest 0.13.4,
  rustls 0.23.40, uuid 1.23.3, wasm-bindgen 0.2.123, etc.)
- RustCrypto majors in app crate: hmac 0.12->0.13, pbkdf2 0.12->0.13,
  sha1 0.10->0.11 (aligned on digest 0.11)
- JS deps to latest: vue 3.5.38, vuetify 4.1.1, vite 8.0.16,
  vue-tsc 3.3.4, axios 1.17.0, @playwright/test 1.60.0, biome 2.5.0
- Pin time at 0.3.47: 0.3.48 breaks cookie 0.16.2 (locked by actix-web 4.x)
- Fix v-form @submit.prevent @submit handlers into a single
  @submit.prevent="handler" (duplicate onSubmit prop now caught by vue-tsc 3.3)
- Align biome $schema to 2.5.0

Reason:
Keep dependencies current and pull in upstream fixes. getrandom 0.4 is
deliberately not adopted: it is pinned at 0.3 by the transitive
crux_http -> rand 0.9 -> rand_core 0.9 chain and bumping it would break
the WASM backend.

Verification:
- cargo +nightly fmt --check: clean
- cargo clippy --workspace --all-targets --features mock -- -D warnings: clean
- cargo test --features mock: 367 pass
- scripts/build-frontend.sh: WASM + types + UI build clean
- bun run tsc: clean
- e2e: 133 passed
- cargo audit: unchanged baseline (rsa via jsonwebtoken, no fix; 3 unmaintained transitive warnings)

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
…spinning

Summary:
The Settings "Save" button binds to the global is_loading flag, which was
stuck true after every page load, showing a permanent progress spinner.

Reason:
Event::Initialize called start_loading() and fanned out to silent background
fetches (LoadSettings, wifi CheckAvailability). None of their completion
handlers cleared the flag (LoadSettingsResponse uses no_loading; the
CheckAvailabilityResponse handler clears loading in no branch). CheckAvailability
additionally re-set the flag because it used unauth_post! (method: get), which
calls start_loading(). So is_loading stayed true forever after init.

Fix:
- Remove start_loading() from Event::Initialize (init must stay silent)
- Switch CheckAvailability to the silent http_get! macro, consistent with
  the deliberately-silent LoadSettings
- Bump version 1.2.3 -> 1.2.4

Verification:
- Added regression tests (init settle: authenticated+wifi-available and
  wifi-unavailable) that failed before and pass after the fix
- cargo +nightly fmt --check, clippy -D warnings: clean
- cargo test --features mock: all pass; WASM build clean; 133 e2e pass

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
@JanZachmann JanZachmann requested a review from JoergZeidler June 13, 2026 16:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Maintenance PR that updates Rust + UI dependencies (including majors) and fixes a UI loading-state regression where the Settings “Save” button could spin indefinitely after page load due to is_loading being set during initialization without being cleared by the background fetch completion handlers.

Changes:

  • Update UI dependencies (Vue/Vuetify/Vite/etc.) and Rust crate dependencies; bump version to 1.2.4.
  • Fix initialization/loading-state behavior by removing start_loading() from Event::Initialize and making WiFi availability checks use a silent http_get!.
  • Clean up Vuetify form submit handlers to use a single @submit.prevent="..." binding.

Reviewed changes

Copilot reviewed 9 out of 11 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/ui/src/pages/UpdatePassword.vue Fix form submit event binding to a single @submit.prevent handler.
src/ui/src/pages/SetPassword.vue Fix form submit event binding to a single @submit.prevent handler.
src/ui/src/pages/Login.vue Fix login form submit event binding to a single @submit.prevent handler.
src/ui/package.json Update UI dependency versions.
src/ui/bun.lock Regenerate Bun lockfile after dependency updates.
src/ui/biome.json Update Biome schema reference to match updated Biome version.
src/app/src/update/wifi.rs Make WiFi availability check silent (http_get!) to avoid global loading flag side effects; update test accordingly.
src/app/src/update/mod.rs Remove start_loading() from init fan-out; add regression tests for is_loading.
src/app/Cargo.toml Bump crypto-related crate versions (hmac/pbkdf2/sha1).
Cargo.toml Bump workspace version to 1.2.4.
Cargo.lock Lockfile updates from Rust dependency upgrades.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/app/src/update/mod.rs
Comment thread src/app/src/update/mod.rs
Address PR review: the init-settle regression tests only checked is_loading
after follow-up responses, so they would still pass if start_loading() were
reintroduced in Initialize and cleared later. Assert !is_loading immediately
after update(Event::Initialize, ...) to pin the "init is silent" invariant
directly.

Signed-off-by: Jan Zachmann <50990105+JanZachmann@users.noreply.github.com>
@JanZachmann JanZachmann merged commit a06d400 into omnect:main Jun 15, 2026
1 check passed
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.

3 participants