create-meith 0.33.4 → 0.34.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
@@ -136,7 +136,14 @@ var ENV_BACKUP_BLOCK = `# The off-site backup destination: an S3-compatible buck
136
136
  # BACKUP_S3_ACCESS_KEY_ID=
137
137
  # BACKUP_S3_SECRET_ACCESS_KEY=
138
138
  # BACKUP_S3_ENDPOINT=
139
- # BACKUP_S3_PREFIX=`;
139
+ # BACKUP_S3_PREFIX=
140
+ #
141
+ # Or a WebDAV folder instead of a bucket \u2014 Nextcloud, ownCloud, a Hetzner
142
+ # Storage Box. The address of a folder that already exists; username and
143
+ # password together or not at all. One destination or the other, never both.
144
+ # BACKUP_WEBDAV_URL=
145
+ # BACKUP_WEBDAV_USERNAME=
146
+ # BACKUP_WEBDAV_PASSWORD=`;
140
147
  function selfHostEnvExample(name) {
141
148
  return `# ${name} \u2014 environment.
142
149
  #
@@ -682,6 +689,14 @@ EXPOSE 3000
682
689
  ENV UPLOADS_DIR=/app/.uploads
683
690
  RUN mkdir -p /app/.uploads && chown node:node /app/.uploads
684
691
 
692
+ # The ring of backup bundles the admin panel's Backups screen writes, lists
693
+ # and prunes, and the postgres client tools \`meith backup\` and the panel's
694
+ # backups dump with. The compose file mounts the persistent "backups" volume
695
+ # over this path.
696
+ RUN apk add --no-cache postgresql18-client
697
+ ENV BACKUP_DIR=/backups
698
+ RUN mkdir -p /backups && chown node:node /backups
699
+
685
700
  # \`meith <command>\` on PATH runs this board's own operator CLI \u2014 the same one
686
701
  # node_modules/.bin/meith is \u2014 so a Coolify terminal or \`docker compose exec web
687
702
  # meith ...\` needs no path. It cd's to /board so the CLI finds this board's
@@ -776,6 +791,14 @@ EXPOSE 3000
776
791
  ENV UPLOADS_DIR=/app/.uploads
777
792
  RUN mkdir -p /app/.uploads && chown node:node /app/.uploads
778
793
 
794
+ # The ring of backup bundles the admin panel's Backups screen writes, lists
795
+ # and prunes, and the postgres client tools \`meith backup\` and the panel's
796
+ # backups dump with. The compose file mounts the persistent "backups" volume
797
+ # over this path.
798
+ RUN apk add --no-cache postgresql18-client
799
+ ENV BACKUP_DIR=/backups
800
+ RUN mkdir -p /backups && chown node:node /backups
801
+
779
802
  # \`meith <command>\` on PATH runs this board's own operator CLI \u2014 the same one
780
803
  # node_modules/.bin/meith is \u2014 so a Coolify terminal or \`docker compose exec web
781
804
  # meith ...\` needs no path. It cd's to /board so the CLI finds this board's
@@ -982,6 +1005,25 @@ services:
982
1005
  DATABASE_URL: postgres://community:$SERVICE_PASSWORD_POSTGRES@postgres:5432/community
983
1006
  AUTH_SECRET: $SERVICE_BASE64_64_AUTH
984
1007
  TICK_SECRET: $SERVICE_BASE64_64_TICK
1008
+ FILESTORE_DRIVER: local
1009
+ # So that "back up before migrating" (a board setting) can ship the
1010
+ # bundle it takes to the same off-site destination the web container
1011
+ # uses. Unset until the four required values are filled in on the
1012
+ # Coolify resource.
1013
+ BACKUP_S3_BUCKET: \${BACKUP_S3_BUCKET:-}
1014
+ BACKUP_S3_REGION: \${BACKUP_S3_REGION:-}
1015
+ BACKUP_S3_ACCESS_KEY_ID: \${BACKUP_S3_ACCESS_KEY_ID:-}
1016
+ BACKUP_S3_SECRET_ACCESS_KEY: \${BACKUP_S3_SECRET_ACCESS_KEY:-}
1017
+ BACKUP_S3_ENDPOINT: \${BACKUP_S3_ENDPOINT:-}
1018
+ BACKUP_S3_PREFIX: \${BACKUP_S3_PREFIX:-}
1019
+ BACKUP_WEBDAV_URL: \${BACKUP_WEBDAV_URL:-}
1020
+ BACKUP_WEBDAV_USERNAME: \${BACKUP_WEBDAV_USERNAME:-}
1021
+ BACKUP_WEBDAV_PASSWORD: \${BACKUP_WEBDAV_PASSWORD:-}
1022
+ volumes:
1023
+ # Both volumes, so that the bundle "back up before migrating" writes
1024
+ # carries the uploads and lands in the same ring as every other backup.
1025
+ - uploads:/app/.uploads
1026
+ - backups:/backups
985
1027
  depends_on:
986
1028
  postgres:
987
1029
  condition: service_healthy
@@ -1036,11 +1078,15 @@ services:
1036
1078
  - BACKUP_S3_SECRET_ACCESS_KEY=\${BACKUP_S3_SECRET_ACCESS_KEY:-}
1037
1079
  - BACKUP_S3_ENDPOINT=\${BACKUP_S3_ENDPOINT:-}
1038
1080
  - BACKUP_S3_PREFIX=\${BACKUP_S3_PREFIX:-}
1081
+ - BACKUP_WEBDAV_URL=\${BACKUP_WEBDAV_URL:-}
1082
+ - BACKUP_WEBDAV_USERNAME=\${BACKUP_WEBDAV_USERNAME:-}
1083
+ - BACKUP_WEBDAV_PASSWORD=\${BACKUP_WEBDAV_PASSWORD:-}
1039
1084
  volumes:
1040
1085
  - uploads:/app/.uploads
1041
- # Where \`meith backup --dir /backups\` writes its ring of bundles. A
1042
- # named volume rather than the container filesystem, so the ring survives
1043
- # every redeploy.
1086
+ # The ring of backup bundles: what the admin panel's Backups screen
1087
+ # writes, lists and downloads, and what \`meith backup --dir /backups\`
1088
+ # writes. A named volume rather than the container filesystem, so the
1089
+ # ring survives every redeploy.
1044
1090
  - backups:/backups
1045
1091
  depends_on:
1046
1092
  postgres:
@@ -1131,6 +1177,25 @@ services:
1131
1177
  DATABASE_URL: postgres://community:$SERVICE_PASSWORD_POSTGRES@postgres:5432/community
1132
1178
  AUTH_SECRET: $SERVICE_BASE64_64_AUTH
1133
1179
  TICK_SECRET: $SERVICE_BASE64_64_TICK
1180
+ FILESTORE_DRIVER: local
1181
+ # So that "back up before migrating" (a board setting) can ship the
1182
+ # bundle it takes to the same off-site destination the web container
1183
+ # uses. Unset until the four required values are filled in on the
1184
+ # Coolify resource.
1185
+ BACKUP_S3_BUCKET: \${BACKUP_S3_BUCKET:-}
1186
+ BACKUP_S3_REGION: \${BACKUP_S3_REGION:-}
1187
+ BACKUP_S3_ACCESS_KEY_ID: \${BACKUP_S3_ACCESS_KEY_ID:-}
1188
+ BACKUP_S3_SECRET_ACCESS_KEY: \${BACKUP_S3_SECRET_ACCESS_KEY:-}
1189
+ BACKUP_S3_ENDPOINT: \${BACKUP_S3_ENDPOINT:-}
1190
+ BACKUP_S3_PREFIX: \${BACKUP_S3_PREFIX:-}
1191
+ BACKUP_WEBDAV_URL: \${BACKUP_WEBDAV_URL:-}
1192
+ BACKUP_WEBDAV_USERNAME: \${BACKUP_WEBDAV_USERNAME:-}
1193
+ BACKUP_WEBDAV_PASSWORD: \${BACKUP_WEBDAV_PASSWORD:-}
1194
+ volumes:
1195
+ # Both volumes, so that the bundle "back up before migrating" writes
1196
+ # carries the uploads and lands in the same ring as every other backup.
1197
+ - uploads:/app/.uploads
1198
+ - backups:/backups
1134
1199
  depends_on:
1135
1200
  postgres:
1136
1201
  condition: service_healthy
@@ -1185,11 +1250,15 @@ services:
1185
1250
  - BACKUP_S3_SECRET_ACCESS_KEY=\${BACKUP_S3_SECRET_ACCESS_KEY:-}
1186
1251
  - BACKUP_S3_ENDPOINT=\${BACKUP_S3_ENDPOINT:-}
1187
1252
  - BACKUP_S3_PREFIX=\${BACKUP_S3_PREFIX:-}
1253
+ - BACKUP_WEBDAV_URL=\${BACKUP_WEBDAV_URL:-}
1254
+ - BACKUP_WEBDAV_USERNAME=\${BACKUP_WEBDAV_USERNAME:-}
1255
+ - BACKUP_WEBDAV_PASSWORD=\${BACKUP_WEBDAV_PASSWORD:-}
1188
1256
  volumes:
1189
1257
  - uploads:/app/.uploads
1190
- # Where \`meith backup --dir /backups\` writes its ring of bundles. A
1191
- # named volume rather than the container filesystem, so the ring survives
1192
- # every redeploy.
1258
+ # The ring of backup bundles: what the admin panel's Backups screen
1259
+ # writes, lists and downloads, and what \`meith backup --dir /backups\`
1260
+ # writes. A named volume rather than the container filesystem, so the
1261
+ # ring survives every redeploy.
1193
1262
  - backups:/backups
1194
1263
  depends_on:
1195
1264
  postgres:
@@ -2760,7 +2829,7 @@ async function run(argv, version, updateOptions = {}) {
2760
2829
  }
2761
2830
 
2762
2831
  // src/bin.ts
2763
- var result = await run(process.argv.slice(2), "0.33.4");
2832
+ var result = await run(process.argv.slice(2), "0.34.0");
2764
2833
  for (const line of result.lines) {
2765
2834
  if (result.code === 0) console.log(line);
2766
2835
  else console.error(line);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-meith",
3
- "version": "0.33.4",
3
+ "version": "0.34.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.33.4')
4
+ const result = await run(process.argv.slice(2), '0.34.0')
5
5
  for (const line of result.lines) {
6
6
  if (result.code === 0) console.log(line)
7
7
  else console.error(line)
package/src/scaffold.ts CHANGED
@@ -160,7 +160,14 @@ const ENV_BACKUP_BLOCK = `# The off-site backup destination: an S3-compatible bu
160
160
  # BACKUP_S3_ACCESS_KEY_ID=
161
161
  # BACKUP_S3_SECRET_ACCESS_KEY=
162
162
  # BACKUP_S3_ENDPOINT=
163
- # BACKUP_S3_PREFIX=`
163
+ # BACKUP_S3_PREFIX=
164
+ #
165
+ # Or a WebDAV folder instead of a bucket — Nextcloud, ownCloud, a Hetzner
166
+ # Storage Box. The address of a folder that already exists; username and
167
+ # password together or not at all. One destination or the other, never both.
168
+ # BACKUP_WEBDAV_URL=
169
+ # BACKUP_WEBDAV_USERNAME=
170
+ # BACKUP_WEBDAV_PASSWORD=`
164
171
 
165
172
  function selfHostEnvExample(name: string): string {
166
173
  return `# ${name} — environment.
@@ -724,6 +731,14 @@ EXPOSE 3000
724
731
  ENV UPLOADS_DIR=/app/.uploads
725
732
  RUN mkdir -p /app/.uploads && chown node:node /app/.uploads
726
733
 
734
+ # The ring of backup bundles the admin panel's Backups screen writes, lists
735
+ # and prunes, and the postgres client tools \`meith backup\` and the panel's
736
+ # backups dump with. The compose file mounts the persistent "backups" volume
737
+ # over this path.
738
+ RUN apk add --no-cache postgresql18-client
739
+ ENV BACKUP_DIR=/backups
740
+ RUN mkdir -p /backups && chown node:node /backups
741
+
727
742
  # \`meith <command>\` on PATH runs this board's own operator CLI — the same one
728
743
  # node_modules/.bin/meith is — so a Coolify terminal or \`docker compose exec web
729
744
  # meith ...\` needs no path. It cd's to /board so the CLI finds this board's
@@ -819,6 +834,14 @@ EXPOSE 3000
819
834
  ENV UPLOADS_DIR=/app/.uploads
820
835
  RUN mkdir -p /app/.uploads && chown node:node /app/.uploads
821
836
 
837
+ # The ring of backup bundles the admin panel's Backups screen writes, lists
838
+ # and prunes, and the postgres client tools \`meith backup\` and the panel's
839
+ # backups dump with. The compose file mounts the persistent "backups" volume
840
+ # over this path.
841
+ RUN apk add --no-cache postgresql18-client
842
+ ENV BACKUP_DIR=/backups
843
+ RUN mkdir -p /backups && chown node:node /backups
844
+
822
845
  # \`meith <command>\` on PATH runs this board's own operator CLI — the same one
823
846
  # node_modules/.bin/meith is — so a Coolify terminal or \`docker compose exec web
824
847
  # meith ...\` needs no path. It cd's to /board so the CLI finds this board's
@@ -1030,6 +1053,25 @@ services:
1030
1053
  DATABASE_URL: postgres://community:$SERVICE_PASSWORD_POSTGRES@postgres:5432/community
1031
1054
  AUTH_SECRET: $SERVICE_BASE64_64_AUTH
1032
1055
  TICK_SECRET: $SERVICE_BASE64_64_TICK
1056
+ FILESTORE_DRIVER: local
1057
+ # So that "back up before migrating" (a board setting) can ship the
1058
+ # bundle it takes to the same off-site destination the web container
1059
+ # uses. Unset until the four required values are filled in on the
1060
+ # Coolify resource.
1061
+ BACKUP_S3_BUCKET: \${BACKUP_S3_BUCKET:-}
1062
+ BACKUP_S3_REGION: \${BACKUP_S3_REGION:-}
1063
+ BACKUP_S3_ACCESS_KEY_ID: \${BACKUP_S3_ACCESS_KEY_ID:-}
1064
+ BACKUP_S3_SECRET_ACCESS_KEY: \${BACKUP_S3_SECRET_ACCESS_KEY:-}
1065
+ BACKUP_S3_ENDPOINT: \${BACKUP_S3_ENDPOINT:-}
1066
+ BACKUP_S3_PREFIX: \${BACKUP_S3_PREFIX:-}
1067
+ BACKUP_WEBDAV_URL: \${BACKUP_WEBDAV_URL:-}
1068
+ BACKUP_WEBDAV_USERNAME: \${BACKUP_WEBDAV_USERNAME:-}
1069
+ BACKUP_WEBDAV_PASSWORD: \${BACKUP_WEBDAV_PASSWORD:-}
1070
+ volumes:
1071
+ # Both volumes, so that the bundle "back up before migrating" writes
1072
+ # carries the uploads and lands in the same ring as every other backup.
1073
+ - uploads:/app/.uploads
1074
+ - backups:/backups
1033
1075
  depends_on:
1034
1076
  postgres:
1035
1077
  condition: service_healthy
@@ -1084,11 +1126,15 @@ services:
1084
1126
  - BACKUP_S3_SECRET_ACCESS_KEY=\${BACKUP_S3_SECRET_ACCESS_KEY:-}
1085
1127
  - BACKUP_S3_ENDPOINT=\${BACKUP_S3_ENDPOINT:-}
1086
1128
  - BACKUP_S3_PREFIX=\${BACKUP_S3_PREFIX:-}
1129
+ - BACKUP_WEBDAV_URL=\${BACKUP_WEBDAV_URL:-}
1130
+ - BACKUP_WEBDAV_USERNAME=\${BACKUP_WEBDAV_USERNAME:-}
1131
+ - BACKUP_WEBDAV_PASSWORD=\${BACKUP_WEBDAV_PASSWORD:-}
1087
1132
  volumes:
1088
1133
  - uploads:/app/.uploads
1089
- # Where \`meith backup --dir /backups\` writes its ring of bundles. A
1090
- # named volume rather than the container filesystem, so the ring survives
1091
- # every redeploy.
1134
+ # The ring of backup bundles: what the admin panel's Backups screen
1135
+ # writes, lists and downloads, and what \`meith backup --dir /backups\`
1136
+ # writes. A named volume rather than the container filesystem, so the
1137
+ # ring survives every redeploy.
1092
1138
  - backups:/backups
1093
1139
  depends_on:
1094
1140
  postgres:
@@ -1180,6 +1226,25 @@ services:
1180
1226
  DATABASE_URL: postgres://community:$SERVICE_PASSWORD_POSTGRES@postgres:5432/community
1181
1227
  AUTH_SECRET: $SERVICE_BASE64_64_AUTH
1182
1228
  TICK_SECRET: $SERVICE_BASE64_64_TICK
1229
+ FILESTORE_DRIVER: local
1230
+ # So that "back up before migrating" (a board setting) can ship the
1231
+ # bundle it takes to the same off-site destination the web container
1232
+ # uses. Unset until the four required values are filled in on the
1233
+ # Coolify resource.
1234
+ BACKUP_S3_BUCKET: \${BACKUP_S3_BUCKET:-}
1235
+ BACKUP_S3_REGION: \${BACKUP_S3_REGION:-}
1236
+ BACKUP_S3_ACCESS_KEY_ID: \${BACKUP_S3_ACCESS_KEY_ID:-}
1237
+ BACKUP_S3_SECRET_ACCESS_KEY: \${BACKUP_S3_SECRET_ACCESS_KEY:-}
1238
+ BACKUP_S3_ENDPOINT: \${BACKUP_S3_ENDPOINT:-}
1239
+ BACKUP_S3_PREFIX: \${BACKUP_S3_PREFIX:-}
1240
+ BACKUP_WEBDAV_URL: \${BACKUP_WEBDAV_URL:-}
1241
+ BACKUP_WEBDAV_USERNAME: \${BACKUP_WEBDAV_USERNAME:-}
1242
+ BACKUP_WEBDAV_PASSWORD: \${BACKUP_WEBDAV_PASSWORD:-}
1243
+ volumes:
1244
+ # Both volumes, so that the bundle "back up before migrating" writes
1245
+ # carries the uploads and lands in the same ring as every other backup.
1246
+ - uploads:/app/.uploads
1247
+ - backups:/backups
1183
1248
  depends_on:
1184
1249
  postgres:
1185
1250
  condition: service_healthy
@@ -1234,11 +1299,15 @@ services:
1234
1299
  - BACKUP_S3_SECRET_ACCESS_KEY=\${BACKUP_S3_SECRET_ACCESS_KEY:-}
1235
1300
  - BACKUP_S3_ENDPOINT=\${BACKUP_S3_ENDPOINT:-}
1236
1301
  - BACKUP_S3_PREFIX=\${BACKUP_S3_PREFIX:-}
1302
+ - BACKUP_WEBDAV_URL=\${BACKUP_WEBDAV_URL:-}
1303
+ - BACKUP_WEBDAV_USERNAME=\${BACKUP_WEBDAV_USERNAME:-}
1304
+ - BACKUP_WEBDAV_PASSWORD=\${BACKUP_WEBDAV_PASSWORD:-}
1237
1305
  volumes:
1238
1306
  - uploads:/app/.uploads
1239
- # Where \`meith backup --dir /backups\` writes its ring of bundles. A
1240
- # named volume rather than the container filesystem, so the ring survives
1241
- # every redeploy.
1307
+ # The ring of backup bundles: what the admin panel's Backups screen
1308
+ # writes, lists and downloads, and what \`meith backup --dir /backups\`
1309
+ # writes. A named volume rather than the container filesystem, so the
1310
+ # ring survives every redeploy.
1242
1311
  - backups:/backups
1243
1312
  depends_on:
1244
1313
  postgres: