TestClient: implement friends, groups, directory, stats, and remaining commands #94

Closed
opened 2026-08-08 08:24:35 +00:00 by hugo · 1 comment
Owner

Objective

Port remaining friend/group/directory/search/social, region/network stats, uptime/dilation, voice-info, and uncategorized TestClient commands.

Deliverables

  • Preserve argument and output behavior, paging/timeouts, permissions, event waits, and cancellation.
  • Classify every source command exactly once and eliminate stale inventory entries.
  • Use recorded/fake service data.

Validation

  • All remaining non-voice-native commands are tested.
  • TEST_CLIENT_COMMANDS reports no unimplemented command target except explicitly owned voice adapters.
  • Full scripted TestClient session passes offline.

Prerequisite

The library behavior required by the program is implemented and its translated parity tests pass.

Project constraints

  • Programs must use the native Rust public API; no CLR, C# process, bridge, RPC, or fallback.
  • Provide deterministic offline/fake validation before opt-in live or device tests.
  • Never log/store credentials or capability tokens, and keep destructive/spending actions separately opt-in.
  • Update program/source completeness, docs, and workspace validation evidence.
## Objective Port remaining friend/group/directory/search/social, region/network stats, uptime/dilation, voice-info, and uncategorized TestClient commands. ## Deliverables - Preserve argument and output behavior, paging/timeouts, permissions, event waits, and cancellation. - Classify every source command exactly once and eliminate stale inventory entries. - Use recorded/fake service data. ## Validation - All remaining non-voice-native commands are tested. - `TEST_CLIENT_COMMANDS` reports no unimplemented command target except explicitly owned voice adapters. - Full scripted TestClient session passes offline. ## Prerequisite The library behavior required by the program is implemented and its translated parity tests pass. ## Project constraints - Programs must use the native Rust public API; no CLR, C# process, bridge, RPC, or fallback. - Provide deterministic offline/fake validation before opt-in live or device tests. - Never log/store credentials or capability tokens, and keep destructive/spending actions separately opt-in. - Update program/source completeness, docs, and workspace validation evidence.
hugo added this to the 11 - Programs and live-grid validation milestone 2026-08-08 08:24:35 +00:00
hugo added the enhancement label 2026-08-08 08:24:35 +00:00
Author
Owner

Implemented and pushed in commit 21f85a1.\n\nCompleted all 28 remaining non-voice TestClient commands across agent, friends, groups, directory/search, and statistics. The live backend now uses native cancellable manager/capability paths with correlated waits and source timeouts; the deterministic fake backend records the same operations and drives a complete offline session. Profile cloning combines AgentProfile data with the legacy interests reply, validates current picks, synchronizes profile/interests/picks/groups, and requires separate mutation, spending, and per-command confirmation gates. The full pinned 135-entry animation catalog now backs play list/name playback, group caches expose stable snapshots, and TEST_CLIENT_COMMANDS leaves only ParcelVoiceInfo and VoiceAcountCommand pending. Docs and generated API coverage were updated.\n\nVerified:\n- cargo test -p libremetaverse-programs --test test_client_services_cli -j 1\n- cargo test -p libremetaverse-programs --test test_client_cli -j 1\n- focused animation, avatar-interest, and group-manager unit tests\n- cargo test --manifest-path tests/compat/Cargo.toml --test avatar_manager_shims -j 1\n- cargo test --manifest-path tests/compat/Cargo.toml --test social_constructor_semantics -j 1\n- cargo test --manifest-path tests/compat/Cargo.toml --test world_manager_shims -j 1\n- cargo clippy -p libremetaverse --lib --no-deps -p libremetaverse-programs --bin test-client --test test_client_services_cli -j 1 -- -D warnings\n- cargo check --workspace --all-targets --locked -j 1\n- cargo fmt --all -- --check\n- python3 tools/generate_api_shims.py --check\n- python3 tools/check_api_coverage.py

Implemented and pushed in commit 21f85a1.\n\nCompleted all 28 remaining non-voice TestClient commands across agent, friends, groups, directory/search, and statistics. The live backend now uses native cancellable manager/capability paths with correlated waits and source timeouts; the deterministic fake backend records the same operations and drives a complete offline session. Profile cloning combines AgentProfile data with the legacy interests reply, validates current picks, synchronizes profile/interests/picks/groups, and requires separate mutation, spending, and per-command confirmation gates. The full pinned 135-entry animation catalog now backs play list/name playback, group caches expose stable snapshots, and TEST_CLIENT_COMMANDS leaves only ParcelVoiceInfo and VoiceAcountCommand pending. Docs and generated API coverage were updated.\n\nVerified:\n- cargo test -p libremetaverse-programs --test test_client_services_cli -j 1\n- cargo test -p libremetaverse-programs --test test_client_cli -j 1\n- focused animation, avatar-interest, and group-manager unit tests\n- cargo test --manifest-path tests/compat/Cargo.toml --test avatar_manager_shims -j 1\n- cargo test --manifest-path tests/compat/Cargo.toml --test social_constructor_semantics -j 1\n- cargo test --manifest-path tests/compat/Cargo.toml --test world_manager_shims -j 1\n- cargo clippy -p libremetaverse --lib --no-deps -p libremetaverse-programs --bin test-client --test test_client_services_cli -j 1 -- -D warnings\n- cargo check --workspace --all-targets --locked -j 1\n- cargo fmt --all -- --check\n- python3 tools/generate_api_shims.py --check\n- python3 tools/check_api_coverage.py
hugo closed this issue 2026-08-11 13:11:46 +00:00
Sign in to join this conversation.