chore: release 0.3.8#13
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces an event-driven 'lazyload' mode for room-key distribution when proactive key exchange is disabled and the check interval is set to 0. In this mode, keys are shared on encrypted sends or when device lists change, rather than via periodic scans. The changes include updates to configuration parsing, logging, documentation, translations, and unit tests verifying the lazy mode behavior. There are no review comments, so I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Pull request overview
This PR finalizes the 0.3.8 release by clarifying and validating the “proactive vs lazy (event-driven)” room-key sharing behavior, updating related docs/translations, and bumping release metadata.
Changes:
- Add/extend unit tests to cover default interval behavior and event-driven key sharing on device-list changes.
- Update E2EE documentation, config metadata, and translations to describe lazy mode semantics when the interval is
0. - Bump plugin version to
0.3.8and add the 0.3.8 changelog entry.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit/test_matrix_new_spec_compat.py | Adds coverage for default interval selection and lazy-mode sharing on device-list changes. |
| README.md | Updates configuration documentation for matrix_e2ee_key_share_check_interval lazy-mode semantics. |
| processors/event_processor_streams.py | Adjusts warning log when device-list-triggered key sharing fails. |
| metadata.yaml | Bumps plugin version to 0.3.8. |
| i18n/zh-CN.json | Updates hint text for key-share interval behavior (lazy mode vs proactive). |
| i18n/ru-RU.json | Updates Russian hint text for key-share interval behavior. |
| i18n/en-US.json | Updates English hint text for key-share interval behavior. |
| e2ee/e2ee_manager.py | Clarifies docstring and adds a lazy-mode startup log when interval is 0. |
| e2ee/e2ee_manager_sessions.py | Expands docstring for device-list change key-sharing path (relevant to lazy mode). |
| config.py | Updates inline comment documenting interval=0 semantics. |
| config_metadata.json | Updates config hint to describe lazy-mode behavior when proactive exchange is off. |
| CHANGELOG.md | Adds 0.3.8 entry describing the updated key-sharing behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| logger.warning( | ||
| "Event-driven room-key sharing after a device-list change " | ||
| f"failed: {e}" | ||
| ) |
| logger.info( | ||
| "Room-key distribution is using lazy mode; keys will be " | ||
| "rechecked on encrypted sends and device-list changes" | ||
| ) |
What changed
m.forwarded_room_keyresponses and explicitm.room_key.withheldoutcomesRoot cause
The response path attempted to encrypt directly with an existing Olm session. A newly requesting sibling device usually had no session yet, so the response failed. The proactive toggle also did not activate periodic room-key checks when the configured interval remained at its default zero.
Validation
PYTHONPATH=tests/unit uv run pytest -q(147 passed, 11 subtests)uv run ruff check .python -m compileall -q .git diff --check