Highlights
0.12.0 makes plugin reload safe, hardens multi-client and MUC OMEMO, and speeds up day-to-day Debug builds.
Plugin lifecycle
- Safe unload/reload — ordered teardown drains workers, disconnects accounts, and shuts down libstrophe cleanly
- Atomic install —
make installuses temp+rename so a running WeeChat no longer hits SIGBUS when the mapped.sois replaced - Documented update path:
make installthen/plugin reload xmpp(reconnect accounts after)
OMEMO
- Psi+/multi-client — merge PEP device lists with live sessions; sid learning; do not drop devices missing from incomplete PEP republishes
- Lazy MUC bootstrap — no connect-time PEP storm for every cohabitant; one-shot device/bundle fetch when you
/omemoenable in a non-anonymous room /omemo prune— clear peer sessions/bundles/device lists while keeping your own identity and prekeys- Stranger key-transport / bulk prefetch issues from earlier groupchat work are further reduced
UX fixes
/uploadpaths with spaces and~/~userexpansion- Picker (
/list) keeps selection visible when scrolling - Skip
/icatwhen the script is not loaded; less duplicate self-echo previews - Return focus to the core buffer after startup
Build
- Doctests link the normal
xmpp.so(no second coverage compile on every Debug build) - Prefer lld when available; isolate
GIT_COMMITtoversion.cppfor better ccache .sourceELF embed is opt-in (EMBED_SOURCE=1/make release)
Notes
- MUC OMEMO remains experimental (non-anonymous rooms; members-only preferred).
- Feeds can be disabled with
/set xmpp.look.feeds off.
Packages
Distribution packages (deb, rpm, Arch, Alpine, Void) are attached by CI after the Packages workflow finishes.