Add core test coverage: sync error/cloud + desktop services/SDK (518 C# tests)
Details
Rust (28 new tests):
- error_tests.rs: all 10 SyncError variants, Display, Debug, std::error::Error,
SyncResult, From<serde_json::Error>, unicode, edge cases (16 tests)
- cloud_storage_tests.rs: CloudStorageConfig defaults/custom/serde,
CloudFile create/clone/serde, ChangeSet empty/populated/clone (12 tests)
C# Desktop Services (5 new test files):
- EntityTypeMapTests: lookup roundtrips, uniqueness, all fields non-empty (14 tests)
- StringHelpersTests: emoji stripping, null/empty, accented/CJK preservation (8 tests)
- FocusModeServiceTests: state toggle, event firing, duplicate suppression (7 tests)
- QuickActionServiceTests: action collection, caching, invalidation, find by
ID/shortcut, case insensitivity, provider exception handling (11 tests)
- PlatformDetectorTests: platform/arch detection, memory, GPU/CPU detection,
hardware assessment, AI recommendation (11 tests)
C# SDK Tests (3 new test files):
- WikiLinkParserTests: wiki-link/privstack URL parsing, mixed formats,
ExtractContentFromEntity, ExtractSnippet, regex patterns (16 tests)
- UnixTimestampConverterTests: number/string/ISO reads, millis write,
roundtrip, epoch zero, negative, invalid token (8 tests)
- GraphProviderModelsTests: node CompositeKey, edge/content/link construction,
GraphContribution defaults and populated (8 tests)
C# Models (1 new test file):
- PropertyModelsTests: PropertyDefinition, PropertyGroup, RelationEntry,
PropertyTemplate, EntityMetadata — defaults, serialization, record with (21 tests)
Total C# tests: 379 → 518 (139 new)
Total Rust sync tests: +28
Add cloud api_client + vault recovery test coverage (93 tests)
Details
api_client_extended_tests.rs (61 tests):
- Token management: get/refresh/logout flows
- 429 rate limiting: Retry-After parsing, gate blocking, proactive throttling
- 401 auto-refresh retry on POST and DELETE
- Workspace 409 conflict resolution
- All endpoint error paths (500s)
- Data edge cases: invalid base64, string-encoded percents, empty lists
- Concurrent refresh deduplication
recovery_extended_tests.rs (32 tests):
- setup_recovery_with_mnemonic: roundtrip, overwrite, vault_manager wrapper
- reset_password: re-encryption roundtrip, mnemonic stays valid
- sanitize_for_sql: edge cases (quotes, unicode, empty, long strings)
- checkpoint and content hash verification
Add plugin-host test coverage: sandbox + manager (306 tests, 80%→85%)
Details
- TrackingLimiter: memory_growing allowed/denied, table_growing, instances/tables/memories
- get_resource_metrics: metadata-only, third-party limits, with entities, zero memory edge case
- PluginResourceMetrics: Debug, Clone, Serialize coverage
- from_wasm_cached: nonexistent file error path
- track_fuel_consumption: no-op for metadata-only
- call_link_type/call_navigate_to_item: error paths
- Manager: navigate_to_item, get_entity_view_data (capability not supported)
- Manager: get_plugin_metrics, get_all_plugin_metrics
- Manager: get_plugin/get_plugin_mut not found
- Manager: load_plugin_from_wasm error, navigation items with icons
- Manager: fetch_url_for_plugin network error, with_policy constructor
Fix QuestPDF license error in UnifiedRecoveryKitPdfService
Details
Add Community license configuration in static constructor, matching
the existing pattern in EmergencyKitPdfService. Without this, QuestPDF
throws on PDF generation since it requires explicit license selection.
Add comprehensive entity_store test coverage (94 tests, 48%→88%)
Details
New test areas covering previously untested functionality:
- Sync ledger: list_all_entity_ids, entities_needing_sync (with
unsynced, modified-after-sync, local-only exclusion), mark_entity_synced,
mark_entities_synced batch, clear_sync_ledger_for_peer,
invalidate_sync_ledger_for_entity
- Storage estimation: estimate_storage_bytes, estimate_storage_by_types
- Cloud sync cursors: save/load/upsert/clear
- Plugin fuel history: record, metrics (avg/peak/count), clear, isolation
- RAG vector index: upsert, update, delete, delete_all, cosine similarity
search, type-filtered search, get_hashes with filter, fetch_all
- Orphan management: find_orphan_entities, delete with cascade, empty
valid_types early return
- Maintenance: checkpoint, run_maintenance orphan cleanup
- DB diagnostics: returns table metadata
- Query filter edge cases: path without slash prefix, missing field,
limit break, include_trashed, bool filter, string-to-number coercion,
string-to-bool coercion
- Compact: write/delete/compact/verify data integrity
Get notified about new releases