Journal v1.12.1: fix NullReferenceException when adding map section
Details
The MapHeightSelector ComboBox fires SelectionChanged during XAML
InitializeComponent (due to SelectedIndex="1"), before named controls
are resolved. Added null-conditional checks on MapHeightSelector and
MapContainer to guard against the initialization race.
Move inline tests to integration tests for crdt, crypto, ffi
Details
Migrate remaining #[cfg(test)] inline test modules to tests/ directories.
Crates migrated:
- privstack-crdt: 18 pn_counter tests → tests/pn_counter_tests.rs
- privstack-crypto: 5 recovery tests → tests/recovery_tests.rs
- privstack-ffi: 337 tests → tests/ffi_tests.rs (biggest migration)
FFI crate changes:
- Added "rlib" to Cargo.toml crate-type for integration test linking
- Made DTOs pub: SyncEventDto, DiscoveredPeerInfo, SyncStatus,
CloudFileInfo, LicenseInfo, ActivationInfo, FfiDeviceInfo,
SdkRequest, SdkResponse (with pub fields)
- Made functions pub: init_core, init_with_plugin_host_builder,
license_error_to_ffi, nullable_cstr_to_str, to_c_string
- Made EntityRegistry methods pub: new, register_schema, get_schema,
get_handler, has_schema
- Made HANDLE static pub, plugin_ffi module pub
Remaining #[cfg(test)] in cloud/config.rs and crypto/key.rs are
test-only constructors (CloudConfig::test, KdfParams::test), not
inline test modules.
Total: 360 integration tests, 0 inline test modules remaining.
Move inline tests to integration tests for ppk, plugin-sdk, plugin-host
Details
Migrate all #[cfg(test)] inline test modules to tests/ directories as
proper integration tests. This enforces the public API boundary and
ensures tests only exercise exported interfaces.
Crates migrated:
- privstack-ppk: 21 tests → tests/ppk_tests.rs
- privstack-plugin-sdk: 34 tests → tests/types_tests.rs
- privstack-plugin-host: 236 tests across 5 new files
(permissions, policy, wit_types, sandbox, manager)
Visibility changes to support integration tests:
- lib.rs: re-export TrackingLimiter, PluginState, AuditConfig
- wit_types.rs: make to_core_field() and to_core() pub
- manager.rs: remove #[cfg(test)] from new_for_test
- sandbox.rs: make track_fuel_consumption and last_fuel_consumed pub
Total: 291 integration tests, 0 inline tests remaining in these crates.
Fix Journal map pin marker, zoom level, and photo loading
Details
- Add red circle PointFeature pin marker on geocoded map locations
- Fix zoom by calculating OSM resolution directly from zoom level
(156543.03392 * cos(lat) / 2^zoom) instead of relying on
Navigator.Resolutions which may be empty at call time
- Add click-to-reposition pin in MapSectionEditor (updates lat/lon on VM)
- Fix PhotoSectionView loading by triggering from AttachedToVisualTree instead
of DataContextChanged, ensuring visual tree is connected for storage provider
resolution walk
- Version bump 1.9.2 → 1.9.3
Get notified about new releases