Round 379: Firebase ext, Vercel ext, Netlify ext, Cloudflare/Fly.io ext (20 commands)

ober

de9e5a23d32958d66c47c800cf9c5a5cb3d7d5f9

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 2fc9cc9..27cd60d 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 379 — Firebase ext, Vercel ext, Netlify ext, Cloudflare/Fly.io ext
+
+| Feature | Emacs | jemacs | Status |
+|---|---|---|---|
+| Firebase auth users | — | `firebase-auth` | :orange_circle: Scaffolded |
+| Firebase Firestore | — | `firebase-firestore` | :orange_circle: Scaffolded |
+| Firebase functions | — | `firebase-functions` | :orange_circle: Scaffolded |
+| Firebase hosting | — | `firebase-hosting` | :orange_circle: Scaffolded |
+| Vercel domains | — | `vercel-domains` | :orange_circle: Scaffolded |
+| Vercel env vars | — | `vercel-env` | :orange_circle: Scaffolded |
+| Vercel deploy logs | — | `vercel-logs` | :orange_circle: Scaffolded |
+| Vercel projects | — | `vercel-projects` | :orange_circle: Scaffolded |
+| Netlify sites | — | `netlify-sites` | :orange_circle: Scaffolded |
+| Netlify functions | — | `netlify-functions` | :orange_circle: Scaffolded |
+| Netlify forms | — | `netlify-forms` | :orange_circle: Scaffolded |
+| Netlify plugins | — | `netlify-plugins` | :orange_circle: Scaffolded |
+| Cloudflare Workers | — | `cloudflare-workers` | :orange_circle: Scaffolded |
+| Cloudflare Pages | — | `cloudflare-pages` | :orange_circle: Scaffolded |
+| Cloudflare DNS | — | `cloudflare-dns` | :orange_circle: Scaffolded |
+| Cloudflare WAF | — | `cloudflare-waf` | :orange_circle: Scaffolded |
+| Fly.io deploy | — | `flyio-deploy` | :orange_circle: Scaffolded |
+| Fly.io machines | — | `flyio-machines` | :orange_circle: Scaffolded |
+| Fly.io volumes | — | `flyio-volumes` | :orange_circle: Scaffolded |
+| Fly.io secrets | — | `flyio-secrets` | :orange_circle: Scaffolded |
+
 ### Round 378 — Twilio ext, SendGrid ext, Mailgun ext, SES/Postmark ext
 
 | Feature | Emacs | jemacs | Status |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 9f435e2..cb84de1 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -26837,3 +26837,44 @@
 (def (cmd-postmark-stats app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Postmark: showing delivery stats")))
+
+;; Round 379 batch 2 — Netlify ext, Cloudflare/Fly.io ext
+(def (cmd-netlify-forms app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Netlify: listing form submissions")))
+
+(def (cmd-netlify-plugins app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Netlify: listing build plugins")))
+
+(def (cmd-cloudflare-workers app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cloudflare: listing Workers")))
+
+(def (cmd-cloudflare-pages app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cloudflare: listing Pages projects")))
+
+(def (cmd-cloudflare-dns app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cloudflare: managing DNS records")))
+
+(def (cmd-cloudflare-waf app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Cloudflare: managing WAF rules")))
+
+(def (cmd-flyio-deploy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fly.io: deploying application")))
+
+(def (cmd-flyio-machines app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fly.io: listing machines")))
+
+(def (cmd-flyio-volumes app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fly.io: listing volumes")))
+
+(def (cmd-flyio-secrets app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fly.io: managing secrets")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 3d6b3f0..ba92045 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -27618,3 +27618,44 @@
 (def (cmd-mailgun-domains app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Mailgun: listing domains")))
+
+;; Round 379 batch 1 — Firebase ext, Vercel ext
+(def (cmd-firebase-auth app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Firebase: managing auth users")))
+
+(def (cmd-firebase-firestore app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Firebase: browsing Firestore collections")))
+
+(def (cmd-firebase-functions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Firebase: listing cloud functions")))
+
+(def (cmd-firebase-hosting app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Firebase: managing hosting sites")))
+
+(def (cmd-vercel-domains app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vercel: listing domains")))
+
+(def (cmd-vercel-env app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vercel: managing environment variables")))
+
+(def (cmd-vercel-logs app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vercel: viewing deployment logs")))
+
+(def (cmd-vercel-projects app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vercel: listing projects")))
+
+(def (cmd-netlify-sites app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Netlify: listing sites")))
+
+(def (cmd-netlify-functions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Netlify: listing functions")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 6fb5ae6..0320c0b 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9420,4 +9420,26 @@
   (register-command! 'postmark-templates cmd-postmark-templates)
   (register-command! 'postmark-servers cmd-postmark-servers)
   (register-command! 'postmark-stats cmd-postmark-stats)
+
+  ;; Round 379 — Firebase ext, Vercel ext, Netlify ext, Cloudflare/Fly.io ext
+  (register-command! 'firebase-auth cmd-firebase-auth)
+  (register-command! 'firebase-firestore cmd-firebase-firestore)
+  (register-command! 'firebase-functions cmd-firebase-functions)
+  (register-command! 'firebase-hosting cmd-firebase-hosting)
+  (register-command! 'vercel-domains cmd-vercel-domains)
+  (register-command! 'vercel-env cmd-vercel-env)
+  (register-command! 'vercel-logs cmd-vercel-logs)
+  (register-command! 'vercel-projects cmd-vercel-projects)
+  (register-command! 'netlify-sites cmd-netlify-sites)
+  (register-command! 'netlify-functions cmd-netlify-functions)
+  (register-command! 'netlify-forms cmd-netlify-forms)
+  (register-command! 'netlify-plugins cmd-netlify-plugins)
+  (register-command! 'cloudflare-workers cmd-cloudflare-workers)
+  (register-command! 'cloudflare-pages cmd-cloudflare-pages)
+  (register-command! 'cloudflare-dns cmd-cloudflare-dns)
+  (register-command! 'cloudflare-waf cmd-cloudflare-waf)
+  (register-command! 'flyio-deploy cmd-flyio-deploy)
+  (register-command! 'flyio-machines cmd-flyio-machines)
+  (register-command! 'flyio-volumes cmd-flyio-volumes)
+  (register-command! 'flyio-secrets cmd-flyio-secrets)
 )