Upstream's "guard terminal writes while suspended" fix and commit 2 of this branch both work by sprinkling `if (!isendwin())` (or `!is_suspended && !isendwin()`) guards around every doupdate() reachable during a suspended session. That keeps isendwin() a valid signal but turns the no-stray-write invariant into a whitelist: every new doupdate / refresh / wrefresh added later in src/ has to remember the guard, and the original bug class came from exactly such an oversight in _inp_write. Introduce a single primitive, prof_doupdate(), that flushes only when not suspended (via the existing _ui_redraw_suspended() helper). Replace every direct doupdate() in src/ui/inputwin.c (inp_get_line, inp_get_password, _inp_write) and the trailing doupdate in ui_update with the wrapper, collapsing their inline guards. ui_suspend() now flushes via prof_doupdate() before flipping ui_suspended, so upstream's pre-endwin flush is preserved. The flag-based gate in ui_update / ui_resize / ui_redraw is kept as belt-and-suspenders: even if a future raw doupdate slips in elsewhere, ui_update has not been refreshing the virtual screen, so the blit finds stale content rather than a fresh status-bar clock or chat line.
CProof
CProof is a console based XMPP chat client based on Profanity.
See the Quick Start Guide for information on installing and using CProof.
Project
CProof enables you to communicate with privacy, freedom and comfort. Our open-source chat application delivers secure, end-to-end encrypted messaging (OTR, PGP, OMEMO, OX) built on the trusted XMPP protocol. With a decentralized design, you can connect directly or even host your own server, keeping your data in your hands. Whether you're chatting with friends or collaborating securely, CProof makes private communication simple, reliable, and truly yours.
Installation
Check our installation guide for detailed instructions.
How to contribute
See our Helping Out page for a concise summary of ways to help us.
Review the Contributing Guide and Code Overview pages for advanced technical details.
Getting help
Prior to asking questions, check our User Guide, then check out the FAQ.
If you are still having a problem then search the issue tracker.
As a last resort, feel free to write us on support@jabber.tech or create a new issue depending on what your problem is.
Links
Website
Feel free to visit our website: jabber.space.
You may also check the repository if you like, available on git.jabber.space/devs/profanity.
Plugins
Plugins repository: https://git.jabber.space/devs/cproof-plugins
