create-shibumi 0.3.0 → 0.3.4

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/README.md CHANGED
@@ -38,7 +38,7 @@ Creation is atomic: the project is built in a temporary sibling directory and re
38
38
 
39
39
  ## Adopting an existing project
40
40
 
41
- `bun create shibumi .` detects where your build lands (Astro and Vite write `dist/`, Eleventy `_site/`, an exported Next.js `out/`, plain files `public/`), vendors `scripts/ship.ts`, adds the `ship` scripts, installs the one dependency that client needs, and generates a `Dockerfile`, `compose.yaml`, and `.dockerignore` for the static image. Git is never touched, and `--no-install` skips the install.
41
+ `bun create shibumi .` detects where your build lands (Astro and Vite write `dist/`, Eleventy `_site/`, an exported Next.js `out/`, plain files `public/`), copies in `scripts/ship.ts`, adds the `ship` scripts, installs the one dependency that client needs, and generates a `Dockerfile`, `compose.yaml`, and `.dockerignore` for the static image. Git is never touched, and `--no-install` skips the install.
42
42
 
43
43
  Two cases stop the run instead of guessing. Deployment files that already exist are never reinterpreted: a `compose.yaml` carrying Shibumi's static labels beside somebody else's `Dockerfile` would deploy the wrong artifact. A `package.json` with a `start` script belongs to `bun ship:setup`, which generates server deployment files. Finish with `bun ship:setup`.
44
44
 
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "create-shibumi",
3
- "version": "0.3.0",
3
+ "version": "0.3.4",
4
4
  "description": "Scaffold a Shibumi Stack project: Bun, Hono, Zod, Drizzle, SQLite, Alpine",
5
5
  "type": "module",
6
6
  "bin": {
7
- "create-shibumi": "./src/cli.ts"
7
+ "create-shibumi": "src/cli.ts"
8
8
  },
9
9
  "files": [
10
10
  "src/cli.ts",
@@ -46,7 +46,7 @@
46
46
  "license": "MIT",
47
47
  "repository": {
48
48
  "type": "git",
49
- "url": "https://github.com/shibumistack/create-shibumi"
49
+ "url": "git+https://github.com/shibumistack/create-shibumi.git"
50
50
  },
51
51
  "homepage": "https://shibumistack.dev",
52
52
  "dependencies": {
@@ -1,5 +1,4 @@
1
1
  {
2
- "version": "0.2.7",
3
2
  "extensions": [
4
3
  {
5
4
  "name": "admin",
@@ -1,4 +1,4 @@
1
1
  {
2
- "url": "https://shibumistack.dev/ship/v48.ts",
3
- "sha256": "425a8ca3d0b9b8b27660906ea38ec9acb3441a0e0fcf0bd3be191a8e3bd5bea6"
2
+ "url": "https://shibumistack.dev/ship/v49.ts",
3
+ "sha256": "9c9de7cbb7c2d82ce18e429edf216c4c61df24d16a9781035db56bf70d3fad78"
4
4
  }
package/src/adopt.ts CHANGED
@@ -108,7 +108,7 @@ export class AdoptError extends Error {
108
108
  function verifiedShipPath(templatesDir: string): string {
109
109
  const shipPath = join(templatesDir, "ship.ts");
110
110
  if (!existsSync(shipPath)) {
111
- throw new AdoptError(`Vendored Ship client missing at ${shipPath}; aborting.`);
111
+ throw new AdoptError(`Packaged deploy script missing at ${shipPath}; aborting.`);
112
112
  }
113
113
  if (templatesDir === DEFAULT_TEMPLATES_DIR) {
114
114
  const lock = JSON.parse(
@@ -117,7 +117,7 @@ function verifiedShipPath(templatesDir: string): string {
117
117
  const digest = new Bun.CryptoHasher("sha256").update(readFileSync(shipPath)).digest("hex");
118
118
  if (digest !== lock.sha256) {
119
119
  throw new AdoptError(
120
- `Vendored Ship client does not match its checksum lock; the package may be corrupt. Reinstall create-shibumi.`
120
+ `Packaged deploy script does not match its checksum lock; the package may be corrupt. Reinstall create-shibumi.`
121
121
  );
122
122
  }
123
123
  }
package/src/cli.ts CHANGED
@@ -44,7 +44,7 @@ async function printInstaller(): Promise<never> {
44
44
  const bytes = await Bun.file(installer).arrayBuffer();
45
45
  const digest = new Bun.CryptoHasher("sha256").update(bytes).digest("hex");
46
46
  if (digest !== lock.sha256) {
47
- process.stderr.write("Vendored installer does not match its checksum lock; reinstall create-shibumi.\n");
47
+ process.stderr.write("Packaged installer does not match its checksum lock; reinstall create-shibumi.\n");
48
48
  process.exit(1);
49
49
  }
50
50
  process.stdout.write(readFileSync(installer, "utf8"));
@@ -323,7 +323,7 @@ async function main(): Promise<void> {
323
323
  },
324
324
  {
325
325
  value: "blog" as TemplateId,
326
- label: `Blog${detail("Astro: posts, RSS, sitemap, SEO meta, llms.txt")}`,
326
+ label: `Blog${detail("with RSS, sitemap, SEO")}`,
327
327
  },
328
328
  {
329
329
  value: "static" as TemplateId,
@@ -374,7 +374,7 @@ async function main(): Promise<void> {
374
374
  if (args.install) log.success("Dependencies installed");
375
375
  else log.info("Install skipped; run bun install inside the project");
376
376
  if (existsSync(join(result.dest, "scripts", "ship.ts"))) {
377
- log.success("Ship client vendored (scripts/ship.ts)");
377
+ log.success("Deploy script added (scripts/ship.ts)");
378
378
  }
379
379
  } catch (err) {
380
380
  if (err instanceof CreateError) {
@@ -81,15 +81,15 @@ h1, h2, h3 {
81
81
 
82
82
  a { color: inherit; }
83
83
 
84
- main a:not(.btn):not(.button) {
84
+ main a:where(:not(.btn)):where(:not(.button)) {
85
85
  text-decoration: underline;
86
86
  text-decoration-color: color-mix(in srgb, var(--accent) 30%, transparent);
87
87
  text-underline-offset: 0.18em;
88
88
  transition: text-decoration-color 160ms ease;
89
89
  }
90
90
 
91
- main a:not(.btn):not(.button):hover,
92
- main a:not(.btn):not(.button):focus-visible {
91
+ main a:where(:not(.btn)):where(:not(.button)):hover,
92
+ main a:where(:not(.btn)):where(:not(.button)):focus-visible {
93
93
  text-decoration-color: var(--accent);
94
94
  }
95
95
 
@@ -420,3 +420,15 @@ nav a[aria-current="page"] {
420
420
  :has(> .copied), :has(> .is-copied) {
421
421
  animation: copy-glow 1.2s ease-in-out;
422
422
  }
423
+
424
+ .dim { color: var(--muted); }
425
+
426
+ /* Syntax colors for terminal and code blocks. */
427
+ .syntax-command { color:var(--accent); font-weight:750; }
428
+ .syntax-option { color:light-dark(#397a8f,#89dceb); }
429
+ .syntax-string { color:light-dark(#56733d,#a6e3a1); }
430
+ .syntax-comment { color:var(--muted); font-style:italic; }
431
+ .syntax-key,.syntax-keyword { color:light-dark(#7c55a2,#cba6f7); }
432
+ .syntax-literal,.syntax-number { color:light-dark(#a34f30,#fab387); }
433
+ .syntax-added { color:var(--success-text); }
434
+ .syntax-removed { color:light-dark(#a33f43,#f38ba8); }
@@ -26,7 +26,7 @@ const SERVER_HOSTNAME = /^[A-Za-z0-9](?:[A-Za-z0-9.-]{0,251}[A-Za-z0-9])?$/;
26
26
  const COMMIT = /^[a-f0-9]{40}$/;
27
27
  const SERVER_CLI = "~/.local/bin/shibumi-server";
28
28
  const LATEST_SOURCE = "https://shibumistack.dev/ship/latest.ts";
29
- const CURRENT_SOURCE = "https://shibumistack.dev/ship/v48.ts";
29
+ const CURRENT_SOURCE = "https://shibumistack.dev/ship/v49.ts";
30
30
  let sshControlDirectory: string | undefined;
31
31
  let sshControlTarget: string | undefined;
32
32
 
@@ -1809,7 +1809,7 @@ async function localBuildFrontend(config: ClientConfig): Promise<string[] | unde
1809
1809
  if (config.deploymentMode !== "prebuilt") return undefined;
1810
1810
  if (!config.platform) throw new Error("server image platform is missing.\n\nNext: run bun ship:setup.");
1811
1811
  const docker = await run(["docker", "info"], { allowFailure: true });
1812
- if (docker.exitCode !== 0) throw new Error("Docker CLI cannot reach a compatible engine.\n\nNext: start Colima with colima start, verify docker info, then run bun ship.");
1812
+ if (docker.exitCode !== 0) throw new Error("Docker cannot reach your container engine.\n\nNext: start or restart it, then run docker info. When docker info shows Server details, run bun ship again.\n\nColima: colima restart\nPodman: podman machine restart\nDocker Desktop: open or restart Docker Desktop\n\nHelp: https://shibumistack.dev/docs/ship/troubleshooting#docker-engine");
1813
1813
  const plugin = await run(["docker", "compose", "version"], { allowFailure: true });
1814
1814
  const standalone = plugin.exitCode === 0
1815
1815
  ? undefined