aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-24 16:28:07 -0500
committerCraig Jennings <c@cjennings.net>2026-05-24 16:28:07 -0500
commite1789025131b048049777542a91fb7eb55195ce5 (patch)
treef6b795035436a20cc234c2f32555f9b43c4a657b
parent67d8040ad19461cf2a393af95268f92b784d7ece (diff)
downloaddotemacs-e1789025131b048049777542a91fb7eb55195ce5.tar.gz
dotemacs-e1789025131b048049777542a91fb7eb55195ce5.zip
docs(load-graph): classify UI and core-UX modules
Fourth classification batch: the modules that shape the first interactive frame — ui-config, ui-theme, ui-navigation, font-config, selection-framework, modeline-config, mousetrap-mode, popper-config, dashboard-config, nerd-icons-config. I annotated each header, added a Batch 4 table to the inventory, and extended the validation allowlist. 33 of 102 modules are now classified. These mostly stay eager: each has a real first-frame reason (theme, font, modeline, completion stack, landing page). No new hidden dependencies. popper-config carries the spec's open question about its enabled/disabled state, noted for the deferral phase.
-rw-r--r--docs/design/module-inventory.org34
-rw-r--r--modules/dashboard-config.el11
-rw-r--r--modules/font-config.el11
-rw-r--r--modules/modeline-config.el10
-rw-r--r--modules/mousetrap-mode.el10
-rw-r--r--modules/nerd-icons-config.el9
-rw-r--r--modules/popper-config.el10
-rw-r--r--modules/selection-framework.el10
-rw-r--r--modules/ui-config.el11
-rw-r--r--modules/ui-navigation.el12
-rw-r--r--modules/ui-theme.el11
-rw-r--r--tests/test-init-module-headers.el13
12 files changed, 133 insertions, 19 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org
index f5a5294a..9a6a147f 100644
--- a/docs/design/module-inventory.org
+++ b/docs/design/module-inventory.org
@@ -26,7 +26,8 @@ This inventory is independent from the helper inventory owned by
- Batch 1 (Foundation, Layer 1): classified. 7 modules.
- Batch 2 (Text/editing command modules, Layer 2): classified. 9 modules.
- Batch 3 (Core libraries and command modules): classified. 7 modules.
-- 23 of 102 modules classified.
+- Batch 4 (UI / core-UX modules, Layer 2): classified. 10 modules.
+- 33 of 102 modules classified.
- No load-order changes have been made; =init.el= keeps its current eager order.
* Legend
@@ -98,6 +99,25 @@ eager side-effect owners.
| =text-config= | 2 | C/P | eager | eager | none | 3 add-hook, package config | yes |
| =undead-buffers= | 2 | C | eager | eager | none | 3 global keys (kill-buffer remap) | yes |
+** Batch 4 — UI / core-UX modules (Layer 2)
+
+Modules that shape the first interactive frame: theme, font, modeline, window
+navigation, completion stack, and landing page. Most have a real first-frame
+eager reason and stay eager.
+
+| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load |
+|--------+-------+-----+---------+--------+------------------+------------------------+-------------|
+| =ui-config= | 2 | C/S | eager | eager | user-constants | UI defaults, post-command hook, display-buffer-alist | yes |
+| =ui-theme= | 2 | C | eager | eager | none | theme load path, theme key | yes |
+| =ui-navigation= | 2 | C/P | eager | eager | none | nav keymap, 5 global keys, package config | yes |
+| =font-config= | 2 | C/P/S | eager | eager | host-environment, keybindings | 5 global font keys, font-install checks | yes |
+| =selection-framework= | 2 | C/P | eager | eager | none | 1 global key, 15 use-package forms | yes |
+| =modeline-config= | 2 | C/S | eager | eager | user-constants | 2 add-hook (VC cache) | yes |
+| =mousetrap-mode= | 2 | C | eager | eager | cl-lib | 3 add-hook, 1 add-to-list, 1 global key | yes |
+| =popper-config= | 2 | C/P | eager | eager | none | package config (enabled-state open question) | yes |
+| =dashboard-config= | 2 | C/S | eager | eager | none | builds/opens dashboard buffer at startup | conditional |
+| =nerd-icons-config= | 2 | C/P | eager | eager | none | package config | yes |
+
* Hidden dependencies found
Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here,
@@ -120,7 +140,7 @@ not fixed here.
* Pending classification
-The remaining 79 modules required by =init.el=, awaiting per-module inspection.
+The remaining 69 modules required by =init.el=, awaiting per-module inspection.
Each batch reads these against their source and moves them into [[*Classified
modules][Classified modules]] with a load-graph header. Suggested batch order
follows the spec: text/editing command modules, then UI, then programming, then
@@ -134,7 +154,6 @@ Org, then optional integrations.
- [ ] chrono-tools
- [ ] coverage-core
- [ ] coverage-elisp
-- [ ] dashboard-config
- [ ] dev-fkeys
- [ ] diff-config
- [ ] dirvish-config
@@ -145,7 +164,6 @@ Org, then optional integrations.
- [ ] eww-config
- [ ] flycheck-config
- [ ] flyspell-and-abbrev
-- [ ] font-config
- [ ] games-config
- [ ] gloss-config
- [ ] help-config
@@ -159,10 +177,7 @@ Org, then optional integrations.
- [ ] lorem-optimum
- [ ] mail-config
- [ ] markdown-config
-- [ ] modeline-config
-- [ ] mousetrap-mode
- [ ] music-config
-- [ ] nerd-icons-config
- [ ] org-agenda-config
- [ ] org-babel-config
- [ ] org-capture-config
@@ -176,7 +191,6 @@ Org, then optional integrations.
- [ ] org-roam-config
- [ ] org-webclipper
- [ ] pdf-config
-- [ ] popper-config
- [ ] prog-c
- [ ] prog-general
- [ ] prog-go
@@ -190,16 +204,12 @@ Org, then optional integrations.
- [ ] quick-video-capture
- [ ] reconcile-open-repos
- [ ] restclient-config
-- [ ] selection-framework
- [ ] slack-config
- [ ] system-commands
- [ ] telega-config
- [ ] test-runner
- [ ] tramp-config
- [ ] transcription-config
-- [ ] ui-config
-- [ ] ui-navigation
-- [ ] ui-theme
- [ ] vc-config
- [ ] video-audio-recording
- [ ] vterm-config
diff --git a/modules/dashboard-config.el b/modules/dashboard-config.el
index 0ee9200b..4602cc15 100644
--- a/modules/dashboard-config.el
+++ b/modules/dashboard-config.el
@@ -2,7 +2,16 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/S.
+;; Load shape: eager.
+;; Eager reason: builds the startup dashboard landing page.
+;; Top-level side effects: initializes and opens the dashboard buffer at startup
+;; via use-package.
+;; Runtime requires: none.
+;; Direct test load: conditional (builds the dashboard buffer on load).
+;;
;; Note:
;; Nerd-Icons Cheat Sheet: https://www.nerdfonts.com/cheat-sheet
diff --git a/modules/font-config.el b/modules/font-config.el
index 811763f7..d4e2190d 100644
--- a/modules/font-config.el
+++ b/modules/font-config.el
@@ -2,7 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/P/S.
+;; Load shape: eager.
+;; Eager reason: font setup for the first frame, plus font keybindings.
+;; Top-level side effects: binds five global font keys, runs font-installation
+;; checks, configures packages via use-package.
+;; Runtime requires: host-environment, keybindings.
+;; Direct test load: yes.
+;;
;; This module provides font configuration, including:
;;
;; 1. Font Management:
diff --git a/modules/modeline-config.el b/modules/modeline-config.el
index 5afe226e..0e6e5d0f 100644
--- a/modules/modeline-config.el
+++ b/modules/modeline-config.el
@@ -2,7 +2,15 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/S.
+;; Load shape: eager.
+;; Eager reason: the modeline is visible in the first frame.
+;; Top-level side effects: two add-hook (VC cache lifecycle).
+;; Runtime requires: user-constants.
+;; Direct test load: yes.
+;;
;; Simple, minimal modeline using only built-in Emacs functionality.
;; No external packages = no buffer issues, no native-comp errors.
diff --git a/modules/mousetrap-mode.el b/modules/mousetrap-mode.el
index d7f422de..5da66780 100644
--- a/modules/mousetrap-mode.el
+++ b/modules/mousetrap-mode.el
@@ -1,6 +1,16 @@
;;; mousetrap-mode.el --- -*- coding: utf-8; lexical-binding: t; -*-
;;
;;; Commentary:
+;;
+;; Layer: 2 (Core UX).
+;; Category: C.
+;; Load shape: eager.
+;; Eager reason: a global minor mode that prevents accidental mouse edits,
+;; wanted from the first session.
+;; Top-level side effects: three add-hook, one add-to-list, one global key.
+;; Runtime requires: cl-lib.
+;; Direct test load: yes.
+;;
;; Mouse Trap Mode is a minor mode for Emacs that disables most mouse and
;; trackpad events to prevent accidental text modifications. Hitting the
;; trackpad and finding my text is being inserted in an unintended place is
diff --git a/modules/nerd-icons-config.el b/modules/nerd-icons-config.el
index d314be80..d3d55b86 100644
--- a/modules/nerd-icons-config.el
+++ b/modules/nerd-icons-config.el
@@ -3,6 +3,15 @@
;;; Commentary:
;;
+;; Layer: 2 (Core UX).
+;; Category: C/P.
+;; Load shape: eager.
+;; Eager reason: provides the nerd-icons fonts that dashboard, modeline, and
+;; completion render in the first frame.
+;; Top-level side effects: package configuration via use-package.
+;; Runtime requires: none.
+;; Direct test load: yes.
+;;
;; Single home for nerd-icons:
;; - the package itself
;; - completion integration (`nerd-icons-completion')
diff --git a/modules/popper-config.el b/modules/popper-config.el
index 35780eb2..c99a8323 100644
--- a/modules/popper-config.el
+++ b/modules/popper-config.el
@@ -3,6 +3,16 @@
;;
;;; Commentary:
;;
+;; Layer: 2 (Core UX).
+;; Category: C/P.
+;; Load shape: eager.
+;; Eager reason: configures popper so popup buffers (Messages, help, compilation)
+;; appear as managed popups. The enabled/disabled state is an open question in
+;; the spec; revisit during deferral.
+;; Top-level side effects: package configuration via use-package.
+;; Runtime requires: none.
+;; Direct test load: yes.
+;;
;; Configuration for popper.el, which manages secondary buffers as popup windows.
;; Popup buffers (like *Messages*, help, and compilation output) are displayed in
;; a dedicated bottom window and can be easily toggled, cycled, or promoted to
diff --git a/modules/selection-framework.el b/modules/selection-framework.el
index 15ef0a94..11687337 100644
--- a/modules/selection-framework.el
+++ b/modules/selection-framework.el
@@ -3,6 +3,16 @@
;;; Commentary:
;;
+;; Layer: 2 (Core UX).
+;; Category: C/P.
+;; Load shape: eager.
+;; Eager reason: the completion/selection stack (vertico and friends) shapes
+;; every interactive prompt from the first session.
+;; Top-level side effects: one global key binding, package configuration via
+;; fifteen use-package forms.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; This module configures the completion and selection framework using:
;; - Vertico: Vertical completion UI
;; - Marginalia: Rich annotations in minibuffer
diff --git a/modules/ui-config.el b/modules/ui-config.el
index 39b86182..a4c18421 100644
--- a/modules/ui-config.el
+++ b/modules/ui-config.el
@@ -2,7 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/S.
+;; Load shape: eager.
+;; Eager reason: UI preferences that should be visible in the first frame.
+;; Top-level side effects: UI defaults, a post-command hook, and
+;; display-buffer-alist entries.
+;; Runtime requires: user-constants.
+;; Direct test load: yes.
+;;
;; This file centralizes user interface preferences, including:
;; • Frame and window behavior
diff --git a/modules/ui-navigation.el b/modules/ui-navigation.el
index 09100799..f1324c16 100644
--- a/modules/ui-navigation.el
+++ b/modules/ui-navigation.el
@@ -2,7 +2,17 @@
;; author Craig Jennings <c@cjennings.net>
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C/P.
+;; Load shape: eager.
+;; Eager reason: window-navigation keybindings and winner/buffer-move setup for
+;; the first session.
+;; Top-level side effects: defines a navigation keymap, binds five global keys,
+;; configures packages via use-package.
+;; Runtime requires: none (configures packages via use-package).
+;; Direct test load: yes.
+;;
;; Window Navigation
;; This section handles situations where we're navigating or arranging windows
diff --git a/modules/ui-theme.el b/modules/ui-theme.el
index bcc58575..2df37000 100644
--- a/modules/ui-theme.el
+++ b/modules/ui-theme.el
@@ -2,7 +2,16 @@
;; author: Craig Jennings <c@cjennings.net>
;;
;;; Commentary:
-
+;;
+;; Layer: 2 (Core UX).
+;; Category: C.
+;; Load shape: eager.
+;; Eager reason: theme persistence and the theme keybinding; the theme itself is
+;; loaded by an explicit call in init.el.
+;; Top-level side effects: registers the custom theme load path, binds a theme key.
+;; Runtime requires: none.
+;; Direct test load: yes.
+;;
;; This module provides a theme management system with persistence across
;; Emacs sessions.
;;
diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el
index f8085fc7..df3df728 100644
--- a/tests/test-init-module-headers.el
+++ b/tests/test-init-module-headers.el
@@ -46,7 +46,18 @@
"keyboard-macros"
"system-utils"
"text-config"
- "undead-buffers")
+ "undead-buffers"
+ ;; Batch 4 — UI / core-UX modules (Layer 2)
+ "ui-config"
+ "ui-theme"
+ "ui-navigation"
+ "font-config"
+ "selection-framework"
+ "modeline-config"
+ "mousetrap-mode"
+ "popper-config"
+ "dashboard-config"
+ "nerd-icons-config")
"Modules annotated with the load-graph header contract.
Grows one batch at a time. Parity with the init.el require set is the
Phase 1 exit criterion.")