Repository navigation
Fixes cross-platform sync identity instability: importing unchanged records between Windows and macOS could change content keys and event IDs because profile serialization used platform-specific line endings and did not reliably sort property entries.
- Serialize future sync profiles with sorted property entries and LF delimiters, preserving escaping of actual user content.
- Add
canonicalSyncContentKey(record): authenticate the original ciphertext, advertised content key, and typed payload before returning a canonical comparison key. - Preserve compatibility with authenticated historical CRLF and differently ordered profiles. Existing records do not need to be deleted or rewritten to compare correctly.
Validation: LF → CRLF → LF subprocess round trips now preserve record identity. Legacy representation fixtures remain equivalent, while forged keys, corrupt ciphertext, and invalid typed payloads are rejected. Local Core checks and Javadoc passed: 422 tests passed, 9 platform-dependent skips.
Maven coordinates: top.focess:keystead-core:0.5.4. Applications comparing legacy sync records should use the authenticated canonical comparison API. Both desktop clients should be updated to the corresponding fixed release.