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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Port remaining friend/group/directory/search/social, region/network stats, uptime/dilation, voice-info, and uncategorized TestClient commands.
Deliverables
Validation
TEST_CLIENT_COMMANDSreports no unimplemented command target except explicitly owned voice adapters.Prerequisite
The library behavior required by the program is implemented and its translated parity tests pass.
Project constraints
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