create-meith 0.23.3 → 0.25.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/dist/bin.mjs CHANGED
@@ -323,6 +323,7 @@ function envExample(name, target) {
323
323
  }
324
324
  var SELF_HOST_DEPLOY_KIT = [
325
325
  ".dockerignore",
326
+ ".github/dependabot.yml",
326
327
  ".github/workflows/build.yml",
327
328
  "Dockerfile",
328
329
  "docker-compose.yaml",
@@ -511,6 +512,23 @@ export function installedPluginDefinitions() {
511
512
  .env*.local
512
513
  *.log
513
514
  .DS_Store
515
+ `
516
+ );
517
+ files.set(
518
+ ".github/dependabot.yml",
519
+ `# Keeps this board's GitHub Actions current: one weekly pull request that
520
+ # bumps the actions pinned in .github/workflows. Upgrading Meith itself is
521
+ # separate and deliberate \u2014 see README.md, "Upgrading" \u2014 because the board's
522
+ # \`next\` pin has to move together with \`@meith/web\` rather than on its own.
523
+ version: 2
524
+ updates:
525
+ - package-ecosystem: github-actions
526
+ directory: /
527
+ schedule:
528
+ interval: weekly
529
+ groups:
530
+ actions:
531
+ patterns: ['*']
514
532
  `
515
533
  );
516
534
  files.set(
@@ -960,6 +978,13 @@ while everything reading \`package.json\` sees the other. Reading the version
960
978
  out of the freshly installed \`@meith/web\` is what keeps the two the same
961
979
  without anybody having to know the number.
962
980
 
981
+ This upgrade is deliberate and manual for that reason: \`next\` and
982
+ \`@meith/web\` move together or not at all. What *is* kept current for you is
983
+ this repository's own GitHub Actions \u2014 \`.github/dependabot.yml\` opens a
984
+ weekly pull request bumping the actions pinned in
985
+ \`.github/workflows/build.yml\`, which is a safe, independent update the two
986
+ commands above never touch.
987
+
963
988
  That \`package.json\` change is the whole pin: \`Dockerfile\`'s own
964
989
  \`FROM\` line takes the version as a build argument, and
965
990
  \`.github/workflows/build.yml\` reads it straight out of \`package.json\`'s
@@ -1381,7 +1406,7 @@ var THEME_TEMPLATES = [
1381
1406
  },
1382
1407
  {
1383
1408
  path: "src/theme.ts",
1384
- contents: "import { defaultTheme } from '@meith/theme-default'\nimport { defineTheme } from '@meith/theme-kit'\n\nimport { Footer } from './slots/footer'\n\nexport const __MEITH_EXTENSION_CAMEL__Theme = defineTheme({\n key: '__MEITH_EXTENSION_KEY__',\n title: '__MEITH_EXTENSION_TITLE__',\n extends: defaultTheme,\n slots: { Footer },\n})\n"
1409
+ contents: "import { defaultTheme } from '@meith/theme-default'\nimport { defineTheme } from '@meith/theme-kit'\n\nimport { Footer } from './slots/footer'\n\nexport const __MEITH_EXTENSION_CAMEL__Theme = defineTheme({\n key: '__MEITH_EXTENSION_KEY__',\n title: '__MEITH_EXTENSION_TITLE__',\n version: '0.1.0',\n extends: defaultTheme,\n slots: { Footer },\n})\n"
1385
1410
  },
1386
1411
  {
1387
1412
  path: "src/tokens.ts",
@@ -1435,7 +1460,7 @@ export function Footer({ boardTitle, links, timezoneLabel, poweredBy }: FooterMo
1435
1460
  },
1436
1461
  {
1437
1462
  path: "src/theme.test.ts",
1438
- contents: "import { describe, expect, it } from 'vitest'\n\nimport { defaultTheme, TOKEN_NAMES } from '@meith/theme-default'\nimport { assertThemeContract, resolveTheme } from '@meith/theme-kit'\n\nimport { __MEITH_EXTENSION_CAMEL__Theme } from './theme'\nimport { DARK_TOKENS, LIGHT_TOKENS } from './tokens'\n\ndescribe('the __MEITH_EXTENSION_KEY__ theme', () => {\n it('satisfies the theme-kit contract', () => {\n expect(assertThemeContract(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme)).missing).toEqual([])\n })\n\n it('inherits from the default theme rather than copying it', () => {\n expect(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme).chain).toEqual(['__MEITH_EXTENSION_KEY__', 'default'])\n })\n\n it('overrides exactly one slot: the footer', () => {\n expect(Object.keys(__MEITH_EXTENSION_CAMEL__Theme.slots)).toEqual(['Footer'])\n expect(__MEITH_EXTENSION_CAMEL__Theme.slots.Footer).not.toBe(defaultTheme.slots.Footer)\n })\n\n it('declares a value for every token the theme layer names', () => {\n for (const name of TOKEN_NAMES) {\n expect(LIGHT_TOKENS[name], `light ${name}`).toBeDefined()\n expect(DARK_TOKENS[name], `dark ${name}`).toBeDefined()\n }\n })\n\n it('recolours the brand group and nothing greyscale', () => {\n expect(LIGHT_TOKENS.primary).not.toBe(DARK_TOKENS.primary)\n expect(LIGHT_TOKENS.background).toBe('oklch(0.968 0 0)')\n expect(DARK_TOKENS.background).toBe('oklch(0.15 0 0)')\n })\n})\n"
1463
+ contents: "import { describe, expect, it } from 'vitest'\n\nimport { defaultTheme, TOKEN_NAMES } from '@meith/theme-default'\nimport { assertThemeContract, resolveTheme } from '@meith/theme-kit'\n\nimport { __MEITH_EXTENSION_CAMEL__Theme } from './theme'\nimport { DARK_TOKENS, LIGHT_TOKENS } from './tokens'\n\ndescribe('the __MEITH_EXTENSION_KEY__ theme', () => {\n it('satisfies the theme-kit contract', () => {\n expect(assertThemeContract(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme)).missing).toEqual([])\n expect(__MEITH_EXTENSION_CAMEL__Theme.version).toBe('0.1.0')\n })\n\n it('inherits from the default theme rather than copying it', () => {\n expect(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme).chain).toEqual(['__MEITH_EXTENSION_KEY__', 'default'])\n })\n\n it('overrides exactly one slot: the footer', () => {\n expect(Object.keys(__MEITH_EXTENSION_CAMEL__Theme.slots)).toEqual(['Footer'])\n expect(__MEITH_EXTENSION_CAMEL__Theme.slots.Footer).not.toBe(defaultTheme.slots.Footer)\n })\n\n it('declares a value for every token the theme layer names', () => {\n for (const name of TOKEN_NAMES) {\n expect(LIGHT_TOKENS[name], `light ${name}`).toBeDefined()\n expect(DARK_TOKENS[name], `dark ${name}`).toBeDefined()\n }\n })\n\n it('recolours the brand group and nothing greyscale', () => {\n expect(LIGHT_TOKENS.primary).not.toBe(DARK_TOKENS.primary)\n expect(LIGHT_TOKENS.background).toBe('oklch(0.968 0 0)')\n expect(DARK_TOKENS.background).toBe('oklch(0.15 0 0)')\n })\n})\n"
1439
1464
  }
1440
1465
  ];
1441
1466
 
@@ -1865,7 +1890,7 @@ async function run(argv, version) {
1865
1890
  }
1866
1891
 
1867
1892
  // src/bin.ts
1868
- var result = await run(process.argv.slice(2), "0.23.3");
1893
+ var result = await run(process.argv.slice(2), "0.25.0");
1869
1894
  for (const line of result.lines) {
1870
1895
  if (result.code === 0) console.log(line);
1871
1896
  else console.error(line);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-meith",
3
- "version": "0.23.3",
3
+ "version": "0.25.0",
4
4
  "description": "Scaffold a Meith board, plugin or theme — npx create-meith <name> writes a deployable board workspace; --plugin and --theme write extension workspaces built on the published kits.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/bin.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { run } from './cli'
3
3
 
4
- const result = await run(process.argv.slice(2), '0.23.3')
4
+ const result = await run(process.argv.slice(2), '0.25.0')
5
5
  for (const line of result.lines) {
6
6
  if (result.code === 0) console.log(line)
7
7
  else console.error(line)
@@ -23,7 +23,7 @@ export const THEME_TEMPLATES: readonly ExtensionTemplate[] = [
23
23
  {
24
24
  path: 'src/theme.ts',
25
25
  contents:
26
- "import { defaultTheme } from '@meith/theme-default'\nimport { defineTheme } from '@meith/theme-kit'\n\nimport { Footer } from './slots/footer'\n\nexport const __MEITH_EXTENSION_CAMEL__Theme = defineTheme({\n key: '__MEITH_EXTENSION_KEY__',\n title: '__MEITH_EXTENSION_TITLE__',\n extends: defaultTheme,\n slots: { Footer },\n})\n",
26
+ "import { defaultTheme } from '@meith/theme-default'\nimport { defineTheme } from '@meith/theme-kit'\n\nimport { Footer } from './slots/footer'\n\nexport const __MEITH_EXTENSION_CAMEL__Theme = defineTheme({\n key: '__MEITH_EXTENSION_KEY__',\n title: '__MEITH_EXTENSION_TITLE__',\n version: '0.1.0',\n extends: defaultTheme,\n slots: { Footer },\n})\n",
27
27
  },
28
28
  {
29
29
  path: 'src/tokens.ts',
@@ -38,6 +38,6 @@ export const THEME_TEMPLATES: readonly ExtensionTemplate[] = [
38
38
  {
39
39
  path: 'src/theme.test.ts',
40
40
  contents:
41
- "import { describe, expect, it } from 'vitest'\n\nimport { defaultTheme, TOKEN_NAMES } from '@meith/theme-default'\nimport { assertThemeContract, resolveTheme } from '@meith/theme-kit'\n\nimport { __MEITH_EXTENSION_CAMEL__Theme } from './theme'\nimport { DARK_TOKENS, LIGHT_TOKENS } from './tokens'\n\ndescribe('the __MEITH_EXTENSION_KEY__ theme', () => {\n it('satisfies the theme-kit contract', () => {\n expect(assertThemeContract(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme)).missing).toEqual([])\n })\n\n it('inherits from the default theme rather than copying it', () => {\n expect(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme).chain).toEqual(['__MEITH_EXTENSION_KEY__', 'default'])\n })\n\n it('overrides exactly one slot: the footer', () => {\n expect(Object.keys(__MEITH_EXTENSION_CAMEL__Theme.slots)).toEqual(['Footer'])\n expect(__MEITH_EXTENSION_CAMEL__Theme.slots.Footer).not.toBe(defaultTheme.slots.Footer)\n })\n\n it('declares a value for every token the theme layer names', () => {\n for (const name of TOKEN_NAMES) {\n expect(LIGHT_TOKENS[name], `light ${name}`).toBeDefined()\n expect(DARK_TOKENS[name], `dark ${name}`).toBeDefined()\n }\n })\n\n it('recolours the brand group and nothing greyscale', () => {\n expect(LIGHT_TOKENS.primary).not.toBe(DARK_TOKENS.primary)\n expect(LIGHT_TOKENS.background).toBe('oklch(0.968 0 0)')\n expect(DARK_TOKENS.background).toBe('oklch(0.15 0 0)')\n })\n})\n",
41
+ "import { describe, expect, it } from 'vitest'\n\nimport { defaultTheme, TOKEN_NAMES } from '@meith/theme-default'\nimport { assertThemeContract, resolveTheme } from '@meith/theme-kit'\n\nimport { __MEITH_EXTENSION_CAMEL__Theme } from './theme'\nimport { DARK_TOKENS, LIGHT_TOKENS } from './tokens'\n\ndescribe('the __MEITH_EXTENSION_KEY__ theme', () => {\n it('satisfies the theme-kit contract', () => {\n expect(assertThemeContract(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme)).missing).toEqual([])\n expect(__MEITH_EXTENSION_CAMEL__Theme.version).toBe('0.1.0')\n })\n\n it('inherits from the default theme rather than copying it', () => {\n expect(resolveTheme(__MEITH_EXTENSION_CAMEL__Theme).chain).toEqual(['__MEITH_EXTENSION_KEY__', 'default'])\n })\n\n it('overrides exactly one slot: the footer', () => {\n expect(Object.keys(__MEITH_EXTENSION_CAMEL__Theme.slots)).toEqual(['Footer'])\n expect(__MEITH_EXTENSION_CAMEL__Theme.slots.Footer).not.toBe(defaultTheme.slots.Footer)\n })\n\n it('declares a value for every token the theme layer names', () => {\n for (const name of TOKEN_NAMES) {\n expect(LIGHT_TOKENS[name], `light ${name}`).toBeDefined()\n expect(DARK_TOKENS[name], `dark ${name}`).toBeDefined()\n }\n })\n\n it('recolours the brand group and nothing greyscale', () => {\n expect(LIGHT_TOKENS.primary).not.toBe(DARK_TOKENS.primary)\n expect(LIGHT_TOKENS.background).toBe('oklch(0.968 0 0)')\n expect(DARK_TOKENS.background).toBe('oklch(0.15 0 0)')\n })\n})\n",
42
42
  },
43
43
  ]
package/src/scaffold.ts CHANGED
@@ -350,6 +350,7 @@ function envExample(name: string, target: ScaffoldTarget): string {
350
350
 
351
351
  const SELF_HOST_DEPLOY_KIT = [
352
352
  '.dockerignore',
353
+ '.github/dependabot.yml',
353
354
  '.github/workflows/build.yml',
354
355
  'Dockerfile',
355
356
  'docker-compose.yaml',
@@ -552,6 +553,24 @@ export function installedPluginDefinitions() {
552
553
  `,
553
554
  )
554
555
 
556
+ files.set(
557
+ '.github/dependabot.yml',
558
+ `# Keeps this board's GitHub Actions current: one weekly pull request that
559
+ # bumps the actions pinned in .github/workflows. Upgrading Meith itself is
560
+ # separate and deliberate — see README.md, "Upgrading" — because the board's
561
+ # \`next\` pin has to move together with \`@meith/web\` rather than on its own.
562
+ version: 2
563
+ updates:
564
+ - package-ecosystem: github-actions
565
+ directory: /
566
+ schedule:
567
+ interval: weekly
568
+ groups:
569
+ actions:
570
+ patterns: ['*']
571
+ `,
572
+ )
573
+
555
574
  files.set(
556
575
  'Dockerfile',
557
576
  `# syntax=docker/dockerfile:1.7-labs
@@ -1005,6 +1024,13 @@ while everything reading \`package.json\` sees the other. Reading the version
1005
1024
  out of the freshly installed \`@meith/web\` is what keeps the two the same
1006
1025
  without anybody having to know the number.
1007
1026
 
1027
+ This upgrade is deliberate and manual for that reason: \`next\` and
1028
+ \`@meith/web\` move together or not at all. What *is* kept current for you is
1029
+ this repository's own GitHub Actions — \`.github/dependabot.yml\` opens a
1030
+ weekly pull request bumping the actions pinned in
1031
+ \`.github/workflows/build.yml\`, which is a safe, independent update the two
1032
+ commands above never touch.
1033
+
1008
1034
  That \`package.json\` change is the whole pin: \`Dockerfile\`'s own
1009
1035
  \`FROM\` line takes the version as a build argument, and
1010
1036
  \`.github/workflows/build.yml\` reads it straight out of \`package.json\`'s