Files
cproof-context/architecture/source-map.md
jabber.developer2 22977846a3 docs: split context into layered, agent-oriented files
Replace the single file-structure.md with a stratified layout designed
for AI/agent skill consumption: tables and concrete identifiers over
prose, files loaded on demand, content separated by churn rate.

Layers:
- architecture/  stable structural reference (overview, source-map,
                 test-map, data-flow)
- patterns/      memory, commands, autocomplete, events, xmpp,
                 encryption, ui, plugins
- testing/       unit-tests, stubs, functional-tests, bench
- build/         local, docker, ci
- playbooks/     add-command, add-test, add-autocomplete,
                 add-event-handler, add-encryption
- gotchas.md     append-only dated entries (seven seed entries)
- wip/           branch-specific notes; deleted on merge to master

Stable layers describe cproof on master only. In-flight feature
branches (currently feat/ai) get a single file under wip/.

INDEX.md is the entry map with churn labels; SKILL.md is the
always-loaded skill hint pointing to it.
2026-04-30 20:52:06 +03:00

2.9 KiB

Source map

src/ module directories

Path Purpose Key files
src/command/ /command definition, dispatch, autocompletion. cmd_defs.c/h, cmd_funcs.c/h, cmd_ac.c/h
src/config/ Persistent configuration: accounts, prefs, themes, colors, CA file, scripts. accounts.c/h, preferences.c/h, theme.c/h, color.c/h, cafile.c/h, scripts.c/h, tlscerts.c/h, conflists.c/h, files.c/h, account.c/h
src/event/ Mediates between XMPP layer and UI/commands. client_events.c/h, server_events.c/h, common.c/h
src/omemo/ OMEMO encryption (libsignal-protocol). omemo.c/h, crypto.c/h, store.c/h
src/otr/ OTR encryption (libotr v4). otr.c/h, otrlib.h, otrlibv4.c
src/pgp/ OpenPGP / OX (gpgme). gpg.c/h, ox.c/h
src/plugins/ C and Python plugin support. plugins.c/h, c_plugins.c/h, python_plugins.c/h, c_api.c/h, python_api.c/h, api.c/h, profapi.c/h, callbacks.c/h, autocompleters.c/h, disco.c/h, settings.c/h, themes.c/h
src/tools/ Generic utilities. parser.c/h, autocomplete.c/h, clipboard.c/h, editor.c/h, http_*.c/h, aesgcm_download.c/h, bookmark_ignore.c/h, plugin_download.c/h
src/ui/ Windows, buffers, status bar, input. window.c/h, window_list.c/h, chatwin.c, mucwin.c, console.c, confwin.c, privwin.c, xmlwin.c, vcardwin.c, rosterwin.c, occupantswin.c, inputwin.c/h, statusbar.c/h, titlebar.c/h, tray.c/h, screen.c/h, notifier.c, core.c, buffer.c/h, ui.h, win_types.h
src/xmpp/ XMPP protocol layer. connection.c/h, session.c/h, roster.c/h, roster_list.c/h, muc.c/h, presence.c/h, message.c/h, iq.c/h, stanza.c/h, vcard.c/h, vcard_funcs.h, jid.c/h, capabilities.c/h, omemo.c/h, ox.c/h, blocking.c/h, bookmark.c/h, chat_session.c/h, chat_state.c/h, avatar.c/h, contact.c/h, form.c/h, resource.c/h

Top-level files in src/

File Role
main.c Process entry.
profanity.c / profanity.h Application init/shutdown.
common.h / common.c Project-wide macros and small helpers.
database.c / database.h Database facade (SQLite + flatfile).
chatlog.c / chatlog.h Chat log writer/reader.
log.c / log.h Application log.
config.h.in autoconf-generated config header (do not edit config.h).
gitversion.h.in Generated gitversion.h carrying build-time SHA.

Naming notes

  • The fork-rename (Profanity → cproof) is incomplete. Many symbols, file paths, and headers still carry "Profanity" / "prof_" prefixes. Treat them as current and authoritative; do not rename opportunistically.
  • Encryption modules under src/omemo/, src/otr/, src/pgp/ use module- internal helpers; the XMPP-side bridges live in src/xmpp/omemo.c and src/xmpp/ox.c (separate files with the same names — be precise about path).