diff options
| -rw-r--r-- | AGENTS.md | 5 | ||||
| -rw-r--r-- | README.md | 19 | ||||
| -rw-r--r-- | config.org | 32 |
3 files changed, 30 insertions, 26 deletions
@@ -12,8 +12,9 @@ This repository is for the creation and maintenance of Emacs 30 configuration fi - The current Org workflow lives under `~/org/` with `journal.org`, `daily/`, `projects/`, `areas/`, `areas/people/people.org`, `resources/`, and `archives/`. - `~/org/` is external to this repository and must already exist. - The configuration may open files in `~/org/`, but it must not create directories, create files, or validate note structure. -- `~/org/moc.org` is a normal note. The configuration may open it, but it must not create or manage it. -- `~/org/areas/people/people.org` is part of the external note system and must already exist. +- `~/org/journal.org` is the operational journal. It must already exist. The configuration may open it, but it must not create or manage it. +- `~/org/moc.org` is a normal note. It must already exist. The configuration may open it, but it must not create or manage it. +- `~/org/areas/people/people.org` is the people CRM file. It must already exist. The configuration may open it, but it must not create or manage it. - The operational journal lives in `~/org/journal.org`; older daily notes may remain under `~/org/daily/`; durable notes created with Denote live in PARA directories under `~/org/`. - Agenda files are discovered by explicitly including `~/org/journal.org` and recursively scanning `.org` files under `~/org/projects/`, `~/org/areas/`, and `~/org/resources/`. - Agenda discovery must exclude `~/org/archives/`. @@ -9,7 +9,9 @@ This repository configures Emacs. It does not define, create, or validate the `~ - `config.org` is the source of truth for Emacs configuration only. - `~/org` is external to this repository and must already exist. - The configuration may open files in `~/org`, but it must not create directories, create files, or validate note structure. -- `~/org/moc.org` is a normal note. The configuration may open it, but it must not create or manage it. +- `~/org/journal.org` is the operational journal. It must already exist, and the configuration may open it but must not create or manage it. +- `~/org/moc.org` is a normal note. It must already exist, and the configuration may open it but must not create or manage it. +- `~/org/areas/people/people.org` is the people CRM file. It must already exist, and the configuration may open it but must not create or manage it. - PARA is the organising model for durable notes. Folder placement carries meaning, and workflows must respect that placement. - The system optimises for speed of capture and minimal friction. - The system must prefer explicit rules over implicit behaviour and must avoid over-structuring, manual overhead, and inconsistency. @@ -19,6 +21,7 @@ This repository configures Emacs. It does not define, create, or validate the `~ These are external note-system invariants. The configuration assumes them, but it does not manage them. - `~/org` must exist. +- `~/org/journal.org` must exist. - `~/org/moc.org` must exist. - `~/org/areas/people/people.org` must exist. @@ -56,11 +59,11 @@ The current setup uses these packages and built-in modules: The note system lives under `~/org/` and is organised like this: -- `journal.org` for the operational work journal. +- `journal.org` for the operational journal. - `daily/` for older plain daily Org files that may still exist outside the active capture workflow. - `projects/` for project notes. - `areas/` for area notes. -- `areas/people/people.org` for the structured people system. +- `areas/people/people.org` for the people CRM. - `resources/` for reference material. - `archives/` for archived notes. @@ -84,9 +87,9 @@ The minibuffer stack is intentionally small: - `marginalia` adds annotations. - `corfu` handles in-buffer completion popups for text and Org buffers. -## People System +## People CRM -The people system is a structured people system (lightweight CRM) rooted at `~/org/areas/people/people.org`. +The people workflow is a CRM rooted at `~/org/areas/people/people.org`. - Each top-level heading represents one person. - Entries are strictly structured around heading text and properties. @@ -98,7 +101,7 @@ The people system is a structured people system (lightweight CRM) rooted at `~/o - Failures must surface visibly. The system must not silently fall back to stale state. - `CURRENT_FOCUS` must stay short and phrase-like so summaries and completion annotations remain readable. -Name entry uses fixed abbrevs plus the structured people system: +Name entry uses fixed abbrevs plus the people CRM: - `abbrev` provides deterministic one-shot shortcuts for fixed name expansions. - people-specific abbrevs are generated from top-level cards in `~/org/areas/people/people.org`. @@ -192,11 +195,11 @@ Agenda file selection follows the canonical rules in the `Agenda Rules` section - journal meetings - Denote-backed captures for generic notes, projects, areas, and resources -Journal task capture writes under the current day's `Tasks` heading. Journal note capture writes under `Notes`. Journal meeting capture writes under `Meetings`, and the meeting template prefixes the heading with a timestamp and the word `meeting`. +Journal task capture writes under the current day's `Tasks` heading. Journal note capture writes under `Notes`. Journal meeting capture writes under `Meetings`, and the meeting template prefixes the heading with the capture time. Denote captures still prompt for title, keywords, and subdirectory placement where appropriate, but folder placement does most of the classification work. The project capture template prepopulates the `project` keyword. Area and resource captures do not inject structural keywords automatically, and there is no Denote-backed meeting capture template. -The structured people system is intentionally outside `org-capture`: `M-x ss/people-add` writes a compact card directly into `~/org/areas/people/people.org`, keeping the people file as a fast reference file instead of another capture sink. +The people CRM is intentionally outside `org-capture`: `M-x ss/people-add` writes a compact card directly into `~/org/areas/people/people.org`, keeping the people file as a fast reference file instead of another capture sink. ### Note creation and linking @@ -277,16 +277,16 @@ annotations. (global-corfu-mode 1)) #+end_src -* People rolodex +* People CRM -The people workflow is a lightweight rolodex backed by the canonical +The people workflow is a CRM backed by the canonical =~/org/areas/people/people.org= file. Each top-level heading is a compact card with properties for lookup, completion, reports, and abbrevs. Abbrev remains the fast path for names you type all the time, while CAPF plus Corfu remains the discovery path. The machine-facing layer only reads heading text and properties; the =Context= and =TODOs= sections stay human-facing notes. -The rolodex is designed around =ss/people-overview=: opening the file starts in +The CRM is designed around =ss/people-overview=: opening the file starts in overview mode, direct visits reset back to overview mode, and exiting card view means widening the buffer and restoring that overview. Keep =CURRENT_FOCUS= short and phrase-like so summaries and completion annotations stay readable. @@ -298,7 +298,7 @@ short and phrase-like so summaries and completion annotations stay readable. (defconst ss/people-file (expand-file-name "areas/people/people.org" "~/org/") - "Single source of truth for the lightweight people rolodex.") + "Single source of truth for the people CRM.") (defconst ss/people-engagement-values '("permanent" "contractor" "other") @@ -309,10 +309,10 @@ short and phrase-like so summaries and completion annotations stay readable. "Allowed relationship values for people cards.") (defvar ss/people--cache nil - "Cached rolodex entries loaded from `ss/people-file'.") + "Cached CRM entries loaded from `ss/people-file'.") (defvar ss/people--cache-mtime nil - "Modification time of the cached rolodex entries.") + "Modification time of the cached CRM entries.") (defun ss/people--entry-name (entry) "Return the canonical name in ENTRY." @@ -407,7 +407,7 @@ short and phrase-like so summaries and completion annotations stay readable. (with-temp-buffer (insert-file-contents file) ;; Parse cards without running user hooks; otherwise the - ;; rolodex's own Org hooks recurse back into this parser. + ;; CRM's own Org hooks recurse back into this parser. (delay-mode-hooks (org-mode)) (goto-char (point-min)) @@ -441,7 +441,7 @@ short and phrase-like so summaries and completion annotations stay readable. (setq ss/people--cache nil ss/people--cache-mtime nil) (ss/people-refresh-buffers) - (message "Reloaded people rolodex")) + (message "Reloaded people CRM")) (defun ss/people--entry-by-name (name) "Return the people entry matching canonical NAME." @@ -512,12 +512,12 @@ short and phrase-like so summaries and completion annotations stay readable. (org-cycle-hide-drawers 'all)) (defun ss/people-open () - "Open the people rolodex by delegating to `ss/people-overview'." + "Open the people CRM by delegating to `ss/people-overview'." (interactive) (ss/people-overview)) (defun ss/people--track-buffer () - "Refresh rolodex caches when `ss/people-file' is saved." + "Refresh CRM caches when `ss/people-file' is saved." (when (and buffer-file-name (string= (file-truename buffer-file-name) (file-truename ss/people-file))) @@ -530,7 +530,7 @@ short and phrase-like so summaries and completion annotations stay readable. (file-truename ss/people-file)))) (defun ss/people--open-entry (entry) - "Open the people rolodex file, then narrow to ENTRY for card view." + "Open the people CRM file, then narrow to ENTRY for card view." (find-file (ss/people--require-file)) (widen) (let ((position (org-find-exact-headline-in-buffer @@ -565,7 +565,7 @@ short and phrase-like so summaries and completion annotations stay readable. (insert (ss/people--display entry)))) (defun ss/people--report-buffer (title group-fn) - "Render a grouped rolodex report titled TITLE using GROUP-FN." + "Render a grouped CRM report titled TITLE using GROUP-FN." (let ((groups (sort (seq-group-by (lambda (entry) @@ -741,7 +741,7 @@ short and phrase-like so summaries and completion annotations stay readable. (add-hook 'completion-at-point-functions #'ss/people-capf nil t))) (defun ss/people--maybe-overview-buffer () - "Reset the people rolodex buffer to overview when visiting it directly." + "Reset the people CRM buffer to overview when visiting it directly." (when (and buffer-file-name (string= (file-truename buffer-file-name) (file-truename ss/people-file))) @@ -1015,9 +1015,9 @@ per-day =Tasks=, =Notes=, and =Meetings= headings. Denote capture uses Denote's own Org integration so note identity, metadata, and directories stay under Denote's control rather than custom code. The convenience templates keep the familiar entry points, but only project capture injects a structural keyword by -default. The people rolodex lives outside =org-capture=: adding a person uses -the dedicated =ss/people-add= command so =~/org/areas/people/people.org= stays a compact, -structured card file rather than turning into another capture target. +default. The people CRM lives outside =org-capture=: adding a person uses the +dedicated =ss/people-add= command so =~/org/areas/people/people.org= stays a +compact, structured card file rather than turning into another capture target. #+begin_src emacs-lisp (use-package org-capture |
