Round 98: Add transient and hydra features

ober

2ba2a68484762e60b024ebc8687242be00299fe3

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 894d0ba..2403385 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -3414,6 +3414,33 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 
 ---
 
+### Round 98 — Transient & Hydra
+
+| Emacs Command | Status | Description |
+|---|---|---|
+| transient-prefix | :orange_circle: | Invoke transient prefix |
+| transient-suffix | :orange_circle: | Invoke transient suffix |
+| transient-toggle | :orange_circle: | Toggle transient option |
+| transient-switches | :orange_circle: | Cycle transient switches |
+| transient-resume | :orange_circle: | Resume previous transient |
+| transient-quit-all | :orange_circle: | Quit all transient levels |
+| transient-quit-one | :orange_circle: | Quit one transient level |
+| transient-save | :orange_circle: | Save transient values |
+| transient-set | :orange_circle: | Set transient values |
+| hydra-default-pre | :orange_circle: | Hydra default pre-command |
+| hydra-keyboard-quit | :orange_circle: | Quit hydra |
+| hydra-text-scale | :orange_circle: | Hydra text scale menu |
+| hydra-buffer | :orange_circle: | Hydra buffer menu |
+| hydra-git | :orange_circle: | Hydra git menu |
+| hydra-project | :orange_circle: | Hydra project menu |
+| hydra-org | :orange_circle: | Hydra org menu |
+| hydra-flycheck | :orange_circle: | Hydra flycheck menu |
+| hydra-lsp | :orange_circle: | Hydra LSP menu |
+| hydra-smerge | :orange_circle: | Hydra smerge menu |
+| hydra-rectangle | :orange_circle: | Hydra rectangle menu |
+
+---
+
 ## Recommended Development Roadmap
 
 > *Reprioritized based on the user's actual Emacs workflow*
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index e3185bd..fc55274 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -13225,3 +13225,44 @@
 (def (cmd-detached-delete-session app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Detached: session deleted")))
+
+;;; Round 98 — Hydra (cont.)
+(def (cmd-hydra-keyboard-quit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: quit")))
+
+(def (cmd-hydra-text-scale app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: text scale menu opened")))
+
+(def (cmd-hydra-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: buffer management menu opened")))
+
+(def (cmd-hydra-git app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: git menu opened")))
+
+(def (cmd-hydra-project app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: project menu opened")))
+
+(def (cmd-hydra-org app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: org menu opened")))
+
+(def (cmd-hydra-flycheck app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: flycheck menu opened")))
+
+(def (cmd-hydra-lsp app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: LSP menu opened")))
+
+(def (cmd-hydra-smerge app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: smerge menu opened")))
+
+(def (cmd-hydra-rectangle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: rectangle operations menu opened")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 3d96718..5e63f61 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -13763,3 +13763,44 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Term: switched to line mode")))
 
+;;; Round 98 — Transient & Hydra
+(def (cmd-transient-prefix app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: prefix command invoked")))
+
+(def (cmd-transient-suffix app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: suffix command invoked")))
+
+(def (cmd-transient-toggle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: toggled option")))
+
+(def (cmd-transient-switches app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: cycled switches")))
+
+(def (cmd-transient-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: resumed previous transient")))
+
+(def (cmd-transient-quit-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: quit all levels")))
+
+(def (cmd-transient-quit-one app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: quit one level")))
+
+(def (cmd-transient-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: values saved")))
+
+(def (cmd-transient-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Transient: values set for session")))
+
+(def (cmd-hydra-default-pre app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hydra: default pre-command")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index df5234d..be17d3a 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -3491,4 +3491,25 @@
   (register-command! 'detached-view-session cmd-detached-view-session)
   (register-command! 'detached-attach cmd-detached-attach)
   (register-command! 'detached-delete-session cmd-detached-delete-session)
+  ;; Round 98
+  (register-command! 'transient-prefix cmd-transient-prefix)
+  (register-command! 'transient-suffix cmd-transient-suffix)
+  (register-command! 'transient-toggle cmd-transient-toggle)
+  (register-command! 'transient-switches cmd-transient-switches)
+  (register-command! 'transient-resume cmd-transient-resume)
+  (register-command! 'transient-quit-all cmd-transient-quit-all)
+  (register-command! 'transient-quit-one cmd-transient-quit-one)
+  (register-command! 'transient-save cmd-transient-save)
+  (register-command! 'transient-set cmd-transient-set)
+  (register-command! 'hydra-default-pre cmd-hydra-default-pre)
+  (register-command! 'hydra-keyboard-quit cmd-hydra-keyboard-quit)
+  (register-command! 'hydra-text-scale cmd-hydra-text-scale)
+  (register-command! 'hydra-buffer cmd-hydra-buffer)
+  (register-command! 'hydra-git cmd-hydra-git)
+  (register-command! 'hydra-project cmd-hydra-project)
+  (register-command! 'hydra-org cmd-hydra-org)
+  (register-command! 'hydra-flycheck cmd-hydra-flycheck)
+  (register-command! 'hydra-lsp cmd-hydra-lsp)
+  (register-command! 'hydra-smerge cmd-hydra-smerge)
+  (register-command! 'hydra-rectangle cmd-hydra-rectangle)
 )