Files
profanity/RELEASE_GUIDE.md
jabber.developer2 4401e817d0 refactor: address PR #105 review feedback
Apply fixes, refactors and test additions requested by reviewer on PR #105.

Fixes:
- database: warn and notify user on duplicate archive_id instead of
  silently debug-logging it (R05).
- database: add missing '[' in "[DB Migration]" log prefix (R06).
- xmpp/resource: NULL-out name/status after g_free to avoid double-free
  via roster_list.c cleanup path (R09, R23).
- common: widen strtoi_range internal storage from int to long so that
  values in (INT_MAX, LONG_MAX] are rejected as out-of-range instead of
  being silently truncated on 64-bit platforms (R25).

Refactors:
- xmpp/message: extract _receive_omemo helper, removing three copies of
  the OMEMO receive block in groupchat / MUC-PM / chat handlers (R04).
- omemo: flatten deeply nested device-list processing via guard-clause
  continues (R11).
- tools/autocomplete: merge two nested ifs into a single && condition
  (R13).
- ui/titlebar: extract _show_trust_indicator and inline _wprintw_withattr
  wrapper, collapsing three near-identical trust-indicator blocks (R22).
- config/tlscerts: drop _checked_g_strdup wrapper; g_strdup is
  NULL-safe per glib documentation (R19).
- ui/inputwin: use auto_gchar for spellcheck word instead of manual
  g_free (R20).
- tools/editor: drop outdated "Deprecated synchronous" comment that
  no longer matches the callback-based implementation (R28).

Tests:
- tests/command/cmd_ac: rename segfaults_when_empty ->
  no_segfault_when_empty; expand cycling coverage to three files plus
  backward SHIFT-TAB traversal (R16, R17).
- tests/common: add strtoi_range overflow/underflow and strtol-parsing
  consistency tests (R25).
- tests/xmpp/jid: add test for '@' inside resourcepart per RFC 6122
  section 2.4 (R26).

Misc:
- xmpp/omemo: change omemo_error_to_string return type from char* to
  gchar* for glib consistency (R01).
- subprojects/libstrophe: point wrap-git at our fork at
  git.jabber.space/devs/libstrophe-gh (R24).
- RELEASE_GUIDE: drop "Updating website" section referring to an
  upstream site that is not ours (R18).
2026-04-24 15:13:38 +03:00

1.9 KiB

Release Guide

  • Release libstrophe if required

  • Set the correct release version in meson.build

  • Run Unit tests: meson setup build_test -Dtests=true && meson test -C build_test

  • Run Functional tests: same as above but needs stabber installed

  • Check copyright dates in all files

  • Create clean build folder: meson setup build_deb --buildtype=debug -Dnotifications=enabled -Dicons-and-clipboard=enabled -Dotr=enabled -Dpgp=enabled -Domemo=enabled -Dc-plugins=enabled -Dpython-plugins=enabled -Dxscreensaver=enabled -Domemo-qrcode=enabled -Dgdk-pixbuf=enabled

  • Build profanity: meson compile -C build_deb

  • Generate HTML docs (the docgen argument only works when package status is development) ./build_deb/profanity docgen

  • Generate manpages (the mangen argument only works when package status is development) ./build_deb/profanity mangen

  • Determine if libprofanity's version needs to be increased

  • Update plugin API docs (./apidocs/c and ./apidocs/python) need to run the gen.sh and commit the results to the website git repo

  • Update CHANGELOG (Use scripts/changelog-helper.py)

  • Update profrc.example

  • Update profanity.doap (new XEPs and latest version). Look for DEV which marks what is done on the development branch.

  • Add new release to profanity.doap

  • Set the package status to release: meson setup build_rel --buildtype=release

  • Update date and version in man pages (profanity.1, profanity-ox-setup.1)

  • Add generated command manpages: git add docs/profanity-*.1

  • Commit (Release 0.1.2)

  • Tag (0.1.2)

  • Generate tarballs: meson dist -C build_rel --formats xztar,zip

  • Remove generated command manpages: git rm docs/profanity-*.1 git checkout HEAD -- docs/profanity-ox-setup.1 docs/profanity.1 and docs/profanity-ox-setup.1 are handwritten.

  • Commit Start new cycle

  • Push