All notable changes to this project will be documented in this file.
- Removed redundant server-status caching layer from FFI state, eliminating stale-cache UI inconsistencies.
- Removed blocking "server unavailable" banners from service registration, client connection, and status monitoring views so pages remain fully operable regardless of server reachability.
- Simplified client connection view to allow manual service key input alongside dropdown selection.
- Cleaned up automatic server-status retry loops that caused unnecessary background network traffic on mobile.
- Fixed mobile UI status check instability where server showed as unreachable intermittently despite correct configuration.
- Added synchronous
forceRefreshServerStatusFFI endpoint that waits for actual network result instead of returning stale cache. - Parallelized dual TCP status queries (Keys + RemoteId) with
tokio::join!to halve round-trip time. - Increased background status refresh timeout from 800ms to 3000ms to accommodate mobile network latency.
- Fixed Flutter parallel loading race in client connection and service registration views by sequencing config load before status check.
- Upgraded
MSG_HEADER_KEYatomic hash operations fromOrdering::RelaxedtoRelease/Acquirefor cross-thread visibility.
- Added one-click configuration export in UI Config page with JSON payload encoded as Base64.
- Added one-click configuration import in UI Config page from Base64-encoded JSON, including validation and immediate apply/save flow.
- Included clipboard-friendly export dialog and import dialog to simplify cross-device/shareable configuration transfer.
- Fixed Android UI release verification on
armeabi-v7aby preferring NDK LLVM ELF tools instead of hostobjcopy/readelfthat could not parse the artifact format. - Added an exported-symbol hash fallback check in the Android UI release workflow to preserve FFI provenance validation when raw and stripped hashes differ.
- Rerolled
0.2.5as a patch release to unblock end-to-end UI artifact publishing.
- Fixed Android UI release workflow false failures when APK-packaged
libpb_mapper_ffi.sodiffers at raw byte level from staged FFI output. - Kept strict FFI provenance checks by adding ELF Build ID and debug-stripped hash fallback verification before upload.
- Rerolled
0.2.4runtimeMSG_HEADER_KEYsynchronization fixes as a new patch release after CI pipeline stabilization.
- Fixed runtime
MSG_HEADER_KEYpropagation so UI-configured key changes take effect immediately without process restart. - Replaced one-time static header-key snapshot with mutable runtime key state used by checksum and default codec creation.
- Wired UI FFI config application to the shared key setter to keep Linux/Windows behavior consistent.
- Resolved cross-platform mismatch where Windows UI failed against keyed server while Linux appeared to ignore UI key changes.
- Fixed
clippy::needless_as_bytesinui/native/pb_mapper_ffi/src/state.rsto restore strict CI lint pass (-D warnings). - No runtime behavior change; release is a CI/lint hotfix on top of
0.2.2.
- Added full Flutter UI + FFI support for
MSG_HEADER_KEYconfiguration, including config persistence, validation, and runtime propagation. - Made
MSG_HEADER_KEYoptional in UI config: empty value now falls back to the default header key behavior. - Updated service registration/client connection setup guidance in UI to explicitly include
MSG_HEADER_KEYconsistency checks. - Hardened UI release build flow to enforce FFI-first build order per platform (Windows/Linux/macOS/Android/iOS).
- Added workflow-level FFI integrity checks (hash verification between staged FFI artifacts and packaged UI outputs).
- Added
pb-mapper-server --use-machine-msg-header-keyto deriveMSG_HEADER_KEYfrom machine hostname + MAC addresses. - Persisted the derived key to
/var/lib/pb-mapper-server/msg_header_keyfor operator reuse inpb-mapper-server-cliandpb-mapper-client-cli. - Added fallback MAC collection paths (
/sys/class/net,ip link,ifconfig) to improve portability. - Updated user guides (English and Chinese) with setup and usage instructions for machine-derived key mode.
- Added/expanded code documentation for public key-related APIs and derivation rationale.
- Extracted stream/UDP logic into
deps/uni-streamand switched core networking to use it. - Fixed UDP forwarding by preserving datagram boundaries and adding explicit datagram APIs.
- Added
into_split()owned halves for spawn-friendly IO split. - Updated UI Rust bridge to pass correct UDP datagram mode to server/client.
- Added deep-dive docs on async Send/Sync/Pin and UDP datagram forwarding.