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.
2.9 KiB
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 insrc/xmpp/omemo.candsrc/xmpp/ox.c(separate files with the same names — be precise about path).