v0.3.5: Private blob encryption, blob prefetch, intent-based filtering, crypto refactoring
Private blob encryption:
- Encrypted posts (Friends/Circle/Direct) now encrypt attachment blobs with same CEK
- Public blobs unchanged, CID computed on ciphertext for private
- decrypt_blob_for_post/get_blob_for_post for transparent decryption on retrieval
Blob prefetch:
- Pull cycle and sync_with eagerly fetch missing blobs after post sync
- prefetch_blobs_from_peer scans for missing attachments, fetches via fallback chain
- Runs outside conn_mgr lock at Node level
Crypto refactoring:
- Extracted: encrypt/decrypt_bytes_with_cek, wrap/unwrap_cek_for_recipients
- unwrap_cek_for_recipient, unwrap_group_cek, random_cek
- encrypt_post_with_cek, encrypt_post_for_group_with_cek variants
- All existing functions refactored to delegate, 19 crypto tests pass
Intent-based filtering:
- intent_kind field on PostDto ("public"/"friends"/"circle"/"direct"/"unknown")
- Feed/MyPosts filter on intentKind !== 'direct' instead of visibility
- Messages filter with backward-compatible fallback for pre-intent posts
- get_post_intent storage method
IPC updates:
- resolve_blob_data helper using get_blob_for_post with network fallback
- sanitize_download_filename prevents path traversal
- get_blob_path accepts optional post_id_hex
Website:
- Mobile hamburger nav on all pages
- Mesh/Non-mesh N1 labels in network diagnostics
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0abc244ee9
commit
a41b11c0b8
14 changed files with 562 additions and 325 deletions
|
|
@ -51,6 +51,15 @@ nav .links a {
|
|||
transition: color 0.15s;
|
||||
}
|
||||
nav .links a:hover, nav .links a.active { color: var(--text); text-decoration: none; }
|
||||
nav .menu-toggle { display: none; background: none; border: none; color: var(--text); font-size: 1.5rem; cursor: pointer; padding: 0.2rem; }
|
||||
|
||||
@media (max-width: 640px) {
|
||||
nav { padding: 0.75rem 1rem; gap: 0; justify-content: space-between; flex-wrap: wrap; }
|
||||
nav .menu-toggle { display: block; }
|
||||
nav .links { display: none; width: 100%; flex-direction: column; gap: 0; padding-top: 0.5rem; }
|
||||
nav .links.open { display: flex; }
|
||||
nav .links a { padding: 0.5rem 0; border-top: 1px solid var(--border); font-size: 0.95rem; }
|
||||
}
|
||||
|
||||
/* --- Layout --- */
|
||||
.container { max-width: 800px; margin: 0 auto; padding: 3rem 2rem; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue