Skip to content

webui: settings polish (update gating, password confirm, video sleep, real time zone) - #48

Merged
Rust-KVM merged 1 commit into
devfrom
claude/webui-settings-polish
Oct 11, 2026
Merged

Rust-KVM merged 1 commit into
devfrom
claude/webui-settings-polish

Conversation

@Rust-KVM

Copy link
Copy Markdown
Owner

Requested by 4c · project thread

Summary

Before: "Update now" could be pressed without any update found; the password was entered once with no confirmation; Video sleep showed the stored duration even when sleep was disabled; the Timezone dropdown looked editable but did nothing and did not show the device's zone; the macro placeholder showed a literal 
; Mount with an empty URL did nothing.

After:

  • "Update now" is disabled until Check reports an update.
  • Setting or changing the password asks for it twice and rejects a mismatch.
  • Video sleep shows "off" (-1) when disabled.
  • Timezone shows the device's real zone, greyed out, with a note that changing it is not supported yet.
  • The macro placeholder shows a real line break.
  • Mount with an empty URL says "enter an image URL first".

How

  • Backend: new read-only RPC getTimezone (TZ, then /etc/timezone, then the /etc/localtime symlink target, else UTC), registered in registry_builder.rs and added to app/tests/rpc_methods.txt.
  • settings.rs: update_available and confirm_pw signals; video sleep reads enabled; mount URL trimmed and validated.
  • settings_advanced.rs: loads getTimezone, inserts it into the list if missing, disables the select.

Testing

  • cargo +nightly fmt --all (CI)
  • cargo +nightly clippy --workspace --release --all-targets -- -D warnings (CI)
  • cargo +nightly test --workspace (CI; covers the RPC method list)
  • Frontend touched: trunk build --locked and wasm32 clippy in crates/rkvm-web (CI)
  • Tested on an RK3588 device: a build merging all five round-2 branches was deployed to the NanoPC-T6; getTimezone returns UTC, 4K60 video plays, startup log has no WARN/ERROR.

Checklist

  • No #[allow(...)] suppressions and no new unwrap() / expect() in production paths
  • Hot paths stay zero-copy; periodic loops use MissedTickBehavior::Delay
  • Shared protocol types live in rkvm-proto
  • RPC method set changed → app/tests/rpc_methods.txt updated
  • Module tree or build invariants changed → not applicable

Round 2 of the web UI retest fixes (minor issues). The five round-2 branches merge onto dev together without conflicts.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PbdzY6PfT28goR4BhqdsXR


Generated by Claude Code

- Update now stays disabled until Check reports an update.
- Setting or changing the password asks for the new one twice.
- Video sleep shows -1 when the device reports it disabled (the device
  keeps the last duration while off).
- Timezone shows the device's actual zone via a new read-only
  getTimezone RPC (TZ, /etc/timezone, /etc/localtime, else UTC). There
  is no setter yet, so the select is disabled and says so.
- The macro steps placeholder showed a literal 
; use a newline.
- Mount URL with an empty field now says to enter a URL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added area: api JSON-RPC, HTTP routes, MCP, MQTT rkvm-web Leptos / WASM frontend labels Oct 11, 2026
@Rust-KVM Rust-KVM self-assigned this Oct 11, 2026
@Rust-KVM
Rust-KVM merged commit b1110ef into dev Oct 11, 2026
13 checks passed
@Rust-KVM
Rust-KVM deleted the claude/webui-settings-polish branch October 12, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: api JSON-RPC, HTTP routes, MCP, MQTT rkvm-web Leptos / WASM frontend

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants