WIP: feat/upstream-sync #104
Closed
jabber.developer2
wants to merge 54 commits from
feat/upstream-sync into master
pull from: feat/upstream-sync
merge into: devs:master
devs:master
devs:feat/ai-api-type
devs:fix/editor-terminal-size
devs:ci/docker-hub-publishing
devs:feat/disco-ac
devs:feat/privacy-enhancements
devs:fix/clientid-regression
devs:fix/ai-chat-completions-followup
devs:feat/ai-custom
devs:fix/unencrypted-send
devs:rollback/pre-upstream-merge
devs:fix/autoping-warning-null-domain
devs:fix/pad-dead-space-reclaim
devs:feat/autoping-warning
devs:chore/untrack-gitversion
devs:fix/multiline-pad-clip
devs:fix/issue-112-followups
devs:fix/issue-128-migrate-v3-dedup
devs:fix/delay-timestamp-validation
devs:ref/light-cleanup
devs:fix/history-scroll-pad-redraw-storm
devs:fix/plugin-post-display-incoming-only
devs:merge/upstream-full
devs:merge-improve
devs:chore/remove-chatlog-stage-1
devs:fix/ai-json-encoding
devs:feat/no-db-backlog-114
devs:fix/scroll-non-chat-windows
devs:fix/paged-non-chat-windows
devs:fix/ai-leaks
devs:feat/ai
devs:fix/ai-followups
devs:test/ai-coverage-unit-only
devs:test/ai-coverage
devs:refactor/scroll-mechanism
devs:fix/verify-per-contact-context
devs:feat/no-db-mode
devs:feat/ai-json
devs:feat/pikaur-parity-arch
devs:fix-pikaur-build
devs:feat/functest-speedup
devs:fix/cwe-134-format-string-audit
devs:ci/separate-build-step
devs:test/autoping-functional-tests
devs:test/db-functional-tests
devs:fix/arch-build
devs:fix/xep-0030-disco-items-error-handling
devs:fix/xep-0030-empty-disco-items
devs:playground/fix/src_refactoring
devs:tests/disco
devs:fix/test-CI-stability
devs:feat/parallel-tests-clean
devs:feat/parallel-functional-tests
devs:fix/functional_tests_v2
devs:fix/functional_tests
devs:fix/connect_max_args
devs:feat/extended_debug_info
devs:playground/fix/scroll-stuck
devs:build/multicore
devs:build/reenable-fedora
devs:build/autoupdate
No Reviewers
Labels
Clear labels
Compat/Breaking
Breaking change that won't be backward compatible
Kind/Bug
Something is not working
Kind/Documentation
Documentation changes
Kind/Enhancement
Improve existing functionality
Kind/Feature
New functionality
Kind/Security
This is security issue
Kind/Testing
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Low
4
The priority is low
Priority
Medium
3
The priority is medium
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: devs/cproof#104
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "feat/upstream-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Merge Profanity's latest upstream updates into CProof
Closes #64
Summary
Cherry-picked 52 upstream commits from profanity-im/profanity into cproof, covering bug fixes, security improvements, performance optimizations, and new features. The fork point is commit
5385cc28(April 22, 2025). One additional integration commit was added to resolve compilation issues caused by dependencies between cherry-picked patches.Stats: 60 files changed, +1345 / -643 lines
Tests: 438 unit tests PASSED, functional tests PASSED (verified in Docker)
What was merged (52 upstream commits)
Memory safety fixes (13 commits)
ff65db0bfix: potential segfault inlog_database_get_limits_info0218ba26fix: memory leak and crash when id is NULL iniq_id_handler_add1d508d59fix: memory leaks when OMEMO keys not generated yetfa1c4dddfix: invalid free after/omemo gen7f5ae430fix: memleaks in tlscerts and console2406413efix: NULL deref and memleaks in OX logic16080ab9fix: potential null pointer deref incmd_ac_complete156b78adfix: file handle leak incmd_sendfileon OMEMO error3d2a82adfix: NULL deref incmd_omemo_trust/untrust2d7426fbfix: rare memleak inroster_list1ec536d3fix:api_get_current_occupants()memory problems286e563ffix: redundant error reporting in http downloadf74501e9cleanup: add a defensive check incmd_process_input()OMEMO improvements (7 commits)
79ff9badfix: OMEMO startup initializationbc13a726fix: Floating Point Exception in OMEMO session building01c781fcfix: don't publish OMEMO keys if server doesn't support pubsub62458557fix: reduce OMEMO trust check frequency + trust indicators in titlebar25d2cb01fix: check for necessary pointers inomemo_receive_messagecbe6dac4perf: flush OMEMO store only after encrypting for all recipientsd9a8c579perf: optimize random data generationSecurity & certificates (3 commits)
4dcaa839Prepare to use SHA256 fingerprints of certs0acea8d0Retrieve and save new fingerprints from libstrophea07cff8aUse the stronger certificate fingerprintProtocol & XMPP (6 commits)
189050f3feat: sanitize illegal XML characters from outgoing messages421bb2e2feat: only request receipts when supported4c731f52fix: allow adding own JID to roster9fb45b54fix: ignore self-presence for untracked MUC rooms93918a20feat: display incoming reports (XEP-0377)446f28acfix: use<body>tag for spam reporting (XEP-0377)Signal handling & stability (3 commits)
7c83c260fix: exit gracefully on SIGTERM and SIGHUP613df864fix: check connection state before accepting commandcff26a97fix: OTR whitespace tag detection to prevent false positivesUI improvements (4 commits)
3e16ae1dfeat: implement dynamic pad resizingb0a89530fix: custom outgoing stamp and stamp command help9035af95feat: add command autocompletion for/stamp038f345aminor theme improvementsConfig & accounts (5 commits)
f19acc21fix: reconnect when no account has been set up yetc61c72f2when renaming an account, copy all existing keys7c04b17asimplifyaccounts_get_account()81f92f1ffix: overwriting new accounts when running multiple instancesa9ef0003fix: improve status reporting and filename handling for/url saveNew features (4 commits)
24c3b5d5feat: add new command/changes309c0a64fix: defineprefs_changes_printoutside ofprefs_changes030c0b79docs: improve help for/blocked29129bf8return error on/time <invalid-section>Code quality (7 commits)
1aeb19acprint PID in debug logs4b610579fix Git version strings for out-of-tree buildsb6a70aa4cleanup: fix cast function type warnings inpgp.c12a181b5cleanup: wrap release handler iniq.ca704887fadd types to function prototypes62fd40c5usegbooleanconsistentlyb0221f61simplifyconf_string_list_{add,remove}()implementationsWhat was NOT merged (239 remaining upstream commits)
1. CI / Build infrastructure / Docs / Tests / Refactoring (168 commits)
Not applicable — cproof uses autotools while upstream has migrated to meson. These commits modify CI pipelines, meson build files, GitHub templates, documentation, test refactoring (mass renames), and general code style changes that don't affect functionality.
2. Meson build system (9 commits)
Upstream has migrated from autotools to meson. cproof retains autotools as its build system, so these are not applicable:
fbfa1f13Add meson build systembc777c56feat: Remove autotools and adapt docu and scripts27b5f0fbbuild(meson): add support for libomemo-c as OMEMO backend3. OMEMO refactoring series (14 commits)
A large series of OMEMO improvements that depend on each other and conflict heavily with cproof's OMEMO code. These introduce new UX features (device/fingerprint notifications, detailed error messages, session feedback) but require significant adaptation:
ded2f6affeat: Add OMEMO trust status indicators to the titlebarce9b5140feat: Notify users when new OMEMO devices or fingerprints are discovered99c03f8cfeat: Provide detailed encryption failure messages for OMEMO5a3083f2feat: Show active and trust status in/omemo fingerprintb20e3f1afeat: Improve feedback during OMEMO session initiation4d49c2b7feat: Provide descriptive fallback messages for OMEMO decryption failures321ff571feat: Suppress repetitive missing device ID warnings4253da99feat: Suppress redundant "session already exists" messagesb7c8f823feat: Suppress "new device" alerts for already known devicese4bfda2ffix: Incorrect OMEMO decryption error for Key Transport Messages9a501e6efix(omemo): add missing includes for libomemo-c builds68085f01fix(omemo): standardize PreKey management to prevent decryption failures45dc50ecfix: initialize OMEMO pointers and add NULL checks65ca3c44fix: handle potential NULL from malloc in OMEMO fingerprint decoding4. JID validation series (5 commits)
A connected series of JID validation improvements that cascade through multiple files. Conflicts with existing cproof JID handling:
09757da5feat: Improve validation of JIDs5bcf859efeat: Addjid_is_valid_user_jid()to check for valid user JIDsd6705362fix: Only allow/msgwith valid JIDs35a2f299fix: Correct handling ofcreate_fulljidwithout resourcef251cc8bfeat: Handle and allow JIDs with trailing slashes5. Spellcheck feature (2 commits)
Depends on meson build system changes for aspell/hunspell integration:
492236636feat: add spellcheck highlighting supported2fdf88feat: Add/spellcheck listcommand6. GError / GString / API type refactoring (5 commits)
Mass refactoring across many files. Conflicts with divergent cproof code:
48ac88deFix GError handling2fb56b85Fix some more untyped APIsf7cddd11Improve const correctness4194298dLess GString4eaa291fRe-factorcmd_presence()7. Account & misc fixes (8 commits)
Individual fixes with conflicts in divergent files:
5c484c26fix: Fix not saving first created accountbfc9eb25fix: Sanitize account names0830d829Minor fixes of accounts40963c70fix: database return NULL if no history limits are found224087995Fix potential double free349de02bIntroduceprof_date_time_format_iso8601()f55f7611The buffer API should use unsigned types1d943169fix: missingplugins_post_chat_message_displaycalls8. Other individual fixes & improvements (28 commits)
Remaining commits that conflicted individually or have low priority. Notable ones:
63af7277feat: Implement color coded status messages for file transfers82db360ffeat: Improve XEP-0377 support with report-origin and third-party elementse9c6b3b3feat: support UTF-8 characters in autocompletione15f6592fix: Fix NULL dereference and memory leak in_mam_rsm_id_handlerd8a7b234fix: segfault when using/command help8dbd1e32fix: Fix file autocompletion bugs and restore cycling11bc6ea2fix: Fix usage error in/timecommand99e7057afix: Increase max arguments for/connectto 9c24cdcd6fix: Fix-Wanalyzer-deref-before-checkwarning incmd_ac_complete434a8878Fix-Wanalyzer-deref-before-checkwarning inget_message_from_editor606eaac3Fix GPGME >= 2.0.0 compatibility issue #20489f2abc75Fix tests with gcc15 (uintptr_t)7f48452dDon't usememchr()on strings potentially shorter than 4 bytes5810f49curl save: fix location printed5696bf77Fix typo in examplesRecommended follow-up
The OMEMO refactoring series (14 commits) and JID validation series (5 commits) are the most valuable unmerged changes. They should be ported in dedicated PRs with manual adaptation rather than cherry-picking, as they require coordinated changes across multiple files that have diverged from upstream.
ff65db0b) 0b7ec1c5b60218ba26) a9ee765c491d508d59) 1dc1785b4cfa1c4ddd) d993155c307f5ae430) c7c4c8da782406413e) fbcb49f6d016080ab9) 7f7e8307f4156b78ad) 1c954460843d2a82ad) d4112a3efb2d7426fb) 46987dee7779ff9bad) 3fa6542fb8189050f3) bba6bc5f767c83c260) 7bc5b3cf2e613df864) 1ffff8de33cff26a97) 626f67237d62458557) d7decd7f173e16ae1d) e55b1b3e9d421bb2e2) 67307193554c731f52) 1bf732497001c781fc) e8b8a8d52ecbe6dac4) 6831c4a192d9a8c579) a8716bf8a79fb45b543) f6b2347811bc13a726b) 034b789f1c1ec536d34) 56488dd2f9286e563fb) 23436ae0aaf74501e97) 7215aacd5ef19acc215) 5fc3b41707c61c72f2f) dd8b62f43daccounts_get_account(). (7c04b17af) 19c87e74f225d2cb012) 66e84a2735030c0b799) 7de1b52962446f28ac3) c03d3d499b93918a20d) 9538816bef9035af95c) b0f4590082b0a89530f) c67f716eb9a9ef00032) c1dd6b8b1a81f92f1fe) e1de3eee8e038f345a4) a7a09a813a1aeb19acb) 1c12498a1b/changes(24c3b5d53) ef958772a9conf_string_list_{add,remove}()implementations. (b0221f614) c99d852ad7gbooleanconsistently. (62fd40c51) ccd6a8b3c3a704887f1) b1aa840e0612a181b5d) dda8a6f722b6a70aa47) 1859d616204b610579a) ac6c3a13a9/time <invalid-section>(29129bf88) 05cdd312994dcaa839f) 05efdf83e20acea8d0d) fff03ff543a07cff8a9) 35ab9ca457prefs_changes_printoutside ofprefs_changes(309c0a64a) 7bb8f2efb3feat/upstream-syncto WIP: feat/upstream-syncfeat/upstream-syncto WIP: feat/upstream-syncMerged in #105
Pull request closed