create-volt 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,36 @@ All notable changes to `create-volt` are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/), and this project adheres to
5
5
  [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [0.14.0] - 2026-06-28
8
+
9
+ ### Changed
10
+ - **Adopted the most-secure admin model: ephemeral, shell-only.** Removed the
11
+ persistent role-gated `admin` add-on (from 0.13.0). There is now **no web
12
+ admin** anywhere — the data browser is the ephemeral, localhost-only
13
+ `--studio`, and config is `--edit`; both are shell/SSH-gated. SECURITY.md
14
+ updated to state this as a core property.
15
+
16
+ ### Added
17
+ - Dependency auto-update: `scripts/update-deps.mjs` + a weekly GitHub Action
18
+ bump create-volt's pinned dependency floors to the latest **within the current
19
+ major** (never a breaking major). Repo-only — scaffolded apps are untouched.
20
+ - Refreshed floors: express ^4.22.2, socket.io ^4.8.3, mongodb ^6.21.0,
21
+ mysql2 ^3.22.5, pg ^8.22.0, nodemailer ^6.10.1.
22
+
23
+ ## [0.13.0] - 2026-06-28
24
+
25
+ ### Added
26
+ - Opt-in **`admin`** add-on: a persistent, role-gated web admin (data browser)
27
+ for browser-only admins. Gated by auth **and** an `ADMIN_EMAILS` allowlist;
28
+ the panel is hidden for non-admins and `/admin/api/*` returns 403. Internal
29
+ collections (auth tokens/sessions) hidden. Wired into the default + starter
30
+ templates and the setup wizard (ADMIN_EMAILS field).
31
+ - `SECURITY.md` documenting the ephemeral-admin model and secure defaults.
32
+
33
+ ### Note
34
+ - Prefer the ephemeral `--studio` (shell-gated) for admins with server access;
35
+ the `admin` add-on is the explicit standing-surface opt-in for non-shell admins.
36
+
7
37
  ## [0.12.0] - 2026-06-28
8
38
 
9
39
  ### Added
@@ -173,6 +203,8 @@ All notable changes to `create-volt` are documented here. The format follows
173
203
  watching and full-page hot reload. Supports `--skip-install` and `--force`,
174
204
  and auto-detects npm / pnpm / yarn / bun for the install step.
175
205
 
206
+ [0.14.0]: https://github.com/MIR-2025/volt/releases/tag/v0.14.0
207
+ [0.13.0]: https://github.com/MIR-2025/volt/releases/tag/v0.13.0
176
208
  [0.12.0]: https://github.com/MIR-2025/volt/releases/tag/v0.12.0
177
209
  [0.11.0]: https://github.com/MIR-2025/volt/releases/tag/v0.11.0
178
210
  [0.10.0]: https://github.com/MIR-2025/volt/releases/tag/v0.10.0
package/README.md CHANGED
@@ -80,6 +80,16 @@ driver, and is **never** a route in the running app (no standing `/admin` to
80
80
  attack — shell/SSH access is the gate). Needs a persistent driver (MongoDB /
81
81
  MySQL / Postgres) to show data; the memory driver is per-process.
82
82
 
83
+ ## Security & admin model
84
+
85
+ Volt is secure by default, and deliberately has **no web admin** — nothing like
86
+ `/wp-admin` anywhere. The config wizard (`--edit`) and data browser (`--studio`)
87
+ are ephemeral, localhost-only processes; **shell/SSH access is the auth**.
88
+ Several admins? Give each an SSH key — stronger than a shared web panel, with
89
+ nothing public to attack. Plus: escaping by default (no XSS), server-side
90
+ validation + caps, security headers, and `HttpOnly`+`SameSite` cookies. See
91
+ [SECURITY.md](https://github.com/MIR-2025/volt/blob/main/SECURITY.md).
92
+
83
93
  ## Updating Volt
84
94
 
85
95
  Volt is vendored as a single file (`public/volt.js`), not an npm dependency.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-volt",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Scaffold a new Volt app — no-build, signals-based UI with Socket.io hot reload.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,7 +10,7 @@
10
10
  "dev": "node server.js"
11
11
  },
12
12
  "dependencies": {
13
- "express": "^4.19.2",
14
- "socket.io": "^4.7.5"
13
+ "express": "^4.22.2",
14
+ "socket.io": "^4.8.3"
15
15
  }
16
16
  }
@@ -21,7 +21,7 @@ const ENV_PATH = path.join(__dirname, ".env");
21
21
  const PKG_PATH = path.join(__dirname, "package.json");
22
22
  const ADDONS_DIR = path.join(__dirname, ".volt", "addons"); // bundled add-on sources
23
23
  const DEFAULT_PORT = 26628; // create-volt stamps this with the project's date-port
24
- const PKG_VERSIONS = { mongodb: "^6.8.0", mysql2: "^3.11.0", pg: "^8.12.0", nodemailer: "^6.9.0" };
24
+ const PKG_VERSIONS = { mongodb: "^6.21.0", mysql2: "^3.22.5", pg: "^8.22.0", nodemailer: "^6.10.1" };
25
25
  const LIB_FILE = { db: "store.js", mailer: "mailer.js", auth: "auth.js", realtime: "realtime.js" };
26
26
 
27
27
  // --- tiny .env loader (no dependency); never overrides an existing env var ---
@@ -10,12 +10,12 @@
10
10
  "dev": "node server.js"
11
11
  },
12
12
  "dependencies": {
13
- "express": "^4.19.2",
14
- "socket.io": "^4.7.5"
13
+ "express": "^4.22.2",
14
+ "socket.io": "^4.8.3"
15
15
  },
16
16
  "optionalDependencies": {
17
- "mongodb": "^6.8.0",
18
- "mysql2": "^3.11.0",
19
- "pg": "^8.12.0"
17
+ "mongodb": "^6.21.0",
18
+ "mysql2": "^3.22.5",
19
+ "pg": "^8.22.0"
20
20
  }
21
21
  }
@@ -10,7 +10,7 @@
10
10
  "dev": "node server.js"
11
11
  },
12
12
  "dependencies": {
13
- "express": "^4.19.2",
14
- "socket.io": "^4.7.5"
13
+ "express": "^4.22.2",
14
+ "socket.io": "^4.8.3"
15
15
  }
16
16
  }
@@ -137,7 +137,6 @@ if (hasChat) {
137
137
  /* chat UI unavailable */
138
138
  }
139
139
  }
140
-
141
140
  const TABS = [
142
141
  ["home", "Home"],
143
142
  ...(hasAuth ? [["notes", "Notes"]] : []),
@@ -22,7 +22,7 @@ const ENV_PATH = path.join(__dirname, ".env");
22
22
  const PKG_PATH = path.join(__dirname, "package.json");
23
23
  const ADDONS_DIR = path.join(__dirname, ".volt", "addons"); // bundled add-on sources
24
24
  const DEFAULT_PORT = 26628; // create-volt stamps this with the project's date-port
25
- const PKG_VERSIONS = { mongodb: "^6.8.0", mysql2: "^3.11.0", pg: "^8.12.0", nodemailer: "^6.9.0" };
25
+ const PKG_VERSIONS = { mongodb: "^6.21.0", mysql2: "^3.22.5", pg: "^8.22.0", nodemailer: "^6.10.1" };
26
26
  const LIB_FILE = { db: "store.js", mailer: "mailer.js", auth: "auth.js", realtime: "realtime.js" };
27
27
 
28
28
  // --- tiny .env loader (no dependency); never overrides an existing env var ---