@bitmagic/cli 0.1.64-dev.12 → 0.1.64-dev.14

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.
@@ -51,6 +51,7 @@
51
51
  import { decodeForgeMapHeights, renderForgeMapRgba, } from '@bitmagic/world-forger/pipeline/forge-map-render.js';
52
52
  import { FORGE_MAP_PALETTE } from '@bitmagic/world-forger/pipeline/layout-map.js';
53
53
  import { ASSET_DETAIL_CSS, ASSET_DETAIL_HTML } from './asset-detail-panel.js';
54
+ import { GAME_INFO_PANEL_CSS, GAME_INFO_PANEL_HTML } from './game-info-panel.js';
54
55
  import { PUBLISH_PANEL_CSS, PUBLISH_PANEL_HTML } from './publish-panel.js';
55
56
  import { RECORDING_PANEL_CSS, RECORDING_PANEL_HTML, RECORDING_RESOLUTIONS } from './recording-panel.js';
56
57
  import { RECORDINGS_DIR } from '../trailer/paths.js';
@@ -131,12 +132,9 @@ ${BITMAGIC_CONTROLS_CSS}
131
132
  /* The wordmark speaks in the brand's headline voice: uppercase, bold, tracked. */
132
133
  #bar .wordmark { font-size: 14px; font-weight: 700; text-transform: uppercase;
133
134
  letter-spacing: 1.6px; }
134
- #bar .id { color: var(--bm-text-dim); font-family: var(--bm-font-mono); font-size: 12px; }
135
- /* Who this is: the build's badge, then the game by name, then its id and environment dimmed. */
136
- #bar .game-name { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
137
- max-width: 22vw; }
138
- #bar .env { color: var(--bm-text-dim); font-family: var(--bm-font-mono); font-size: 12px;
139
- white-space: nowrap; }
135
+ /* Who this is: the build's badge, then the game by name. The id and the environment used to sit
136
+ beside it as two more dimmed slots; they are inside #game-info-toggle's dialog now (see
137
+ game-info-panel.ts), which is what gave this bar room for the controls to its right. */
140
138
  #bar .spacer { flex: 1; }
141
139
  #tabs { display: flex; gap: 4px; background: var(--bm-surface-alt); border-radius: 9999px;
142
140
  padding: 3px; }
@@ -251,6 +249,7 @@ ${BITMAGIC_CONTROLS_CSS}
251
249
  #hq-note code { display: block; margin-top: 6px; color: var(--bm-aqua);
252
250
  font-family: var(--bm-font-mono); word-break: break-all; }
253
251
  ${ASSET_DETAIL_CSS}
252
+ ${GAME_INFO_PANEL_CSS}
254
253
  ${PUBLISH_PANEL_CSS}
255
254
  ${RECORDING_PANEL_CSS}
256
255
  ${MOTION_PANEL_CSS}
@@ -261,9 +260,7 @@ ${BOOT_LOADER_CSS}
261
260
  <div id="bar">
262
261
  <span class="wordmark">bitmagic dev</span>
263
262
  <span id="cli-line" class="bm-badge${devLine ? ' bm-badge--warning' : ''}" title="${escapeAttr(lineTitle)}">${devLine ? 'DEV BUILD' : 'RELEASE'}</span>
264
- <span id="game-name" class="game-name" title="gameName in src/work/game.json">${escapeAttr(options.gameName)}</span>
265
- <span class="id" title="Game id, from bitmagic.json">${escapeAttr(options.gameId)}</span>
266
- <span id="env" class="env" title="The api-server this project talks to">env ${escapeAttr(options.environment)}</span>
263
+ <button id="game-info-toggle" type="button" title="This game: id, environment, genre, art style, reference and cover art"><span class="name">${escapeAttr(options.gameName)}</span><span class="chevron" aria-hidden="true">\u25BE</span></button>
267
264
  <div id="tabs">
268
265
  <button class="tab bm-pill active" type="button" data-tab="game">Game</button>
269
266
  <button class="tab bm-pill" type="button" data-tab="editor">Editor</button>
@@ -332,6 +329,7 @@ ${BOOT_LOADER_HTML}
332
329
  </div>
333
330
  </div>
334
331
  </div>
332
+ ${GAME_INFO_PANEL_HTML}
335
333
  ${PUBLISH_PANEL_HTML}
336
334
  ${RECORDING_PANEL_HTML}
337
335
  ${MOTION_PANEL_HTML}
@@ -371,6 +369,16 @@ ${ASSET_DETAIL_HTML}
371
369
  var publishManage = document.getElementById('publish-manage');
372
370
  var publishQr = document.getElementById('publish-qr');
373
371
  var publishClose = document.getElementById('publish-close');
372
+ var infoToggle = document.getElementById('game-info-toggle');
373
+ var infoOverlay = document.getElementById('info-overlay');
374
+ var infoClose = document.getElementById('info-close');
375
+ var infoError = document.getElementById('info-error');
376
+ var infoReferenceFrame = document.getElementById('info-reference-frame');
377
+ var infoReferenceImg = document.getElementById('info-reference-img');
378
+ var infoReferenceCaption = document.getElementById('info-reference-caption');
379
+ var infoCoverFrame = document.getElementById('info-cover-frame');
380
+ var infoCoverImg = document.getElementById('info-cover-img');
381
+ var infoCoverCaption = document.getElementById('info-cover-caption');
374
382
  /** The last publish the poll saw, or null until this project has had one. */
375
383
  var lastPublish = null;
376
384
  var recordToggle = document.getElementById('record');
@@ -1207,6 +1215,130 @@ ${ASSET_DETAIL_HTML}
1207
1215
  moreButton.focus();
1208
1216
  }
1209
1217
 
1218
+ /**
1219
+ * The Game-info dialog \u2014 what this project is, and what it is meant to look like.
1220
+ *
1221
+ * The bar used to spell the game's name, id and environment out side by side, which was three
1222
+ * of its slots for one fact. They live here now, next to the things a creator could not see at
1223
+ * all from this window: the genre and physics the engine boots with, the art style every
1224
+ * generation inherits, and the two pictures. the reference show command draws it in a
1225
+ * terminal, which is not where the creator is looking.
1226
+ *
1227
+ * Fetched on every open rather than polled: nothing here changes while the creator watches, and
1228
+ * a project whose cover is generated in another terminal is right again the next time the
1229
+ * dialog opens \u2014 without a request a second for a card nobody has open.
1230
+ */
1231
+ async function openInfo() {
1232
+ infoOverlay.classList.add('show');
1233
+ infoClose.focus();
1234
+ var info = null;
1235
+ var failure = '';
1236
+ try {
1237
+ var response = await fetch('/api/game-info');
1238
+ var payload = await response.json();
1239
+ if (payload && payload.info) info = payload.info;
1240
+ else failure = (payload && payload.error) || 'The dev server could not read this project.';
1241
+ } catch (error) {
1242
+ failure = 'The dev server is not answering \u2014 is bitmagic dev still running?';
1243
+ }
1244
+ infoError.textContent = failure;
1245
+ infoError.classList.toggle('show', failure !== '');
1246
+ fillInfo(info);
1247
+ }
1248
+
1249
+ /** Every field, or an em dash where the sidecar had nothing \u2014 never a stale value. */
1250
+ function fillInfo(info) {
1251
+ var facts = info || {};
1252
+ setFact('info-title', facts.gameName || 'This game');
1253
+ setFact('info-game-id', facts.gameId);
1254
+ setFact('info-environment', facts.environment);
1255
+ setFact('info-genre', facts.genre);
1256
+ // Absent on the genres that declare none, which is a fact rather than a gap.
1257
+ setFact('info-physics', facts.physicsMode || (info ? 'none declared' : ''));
1258
+ // Worth saying which of the two it is: an undeclared voxel project and one that chose voxel
1259
+ // behave identically until someone edits game.json expecting a value to already be there.
1260
+ setFact('info-art-style', facts.artStyle
1261
+ ? facts.artStyle + (facts.artStyleDeclared ? '' : ' (game.json declares none)')
1262
+ : '');
1263
+ setFact('info-platform', facts.primaryPlatform || (info ? 'desktop (declares none)' : ''));
1264
+ setFact('info-engine', facts.engineVersion);
1265
+ fillArt(infoReferenceFrame, infoReferenceImg, infoReferenceCaption, 'reference', facts.reference);
1266
+ fillArt(infoCoverFrame, infoCoverImg, infoCoverCaption, 'cover', facts.cover);
1267
+ }
1268
+
1269
+ function setFact(id, value) {
1270
+ document.getElementById(id).textContent = value || '\u2014';
1271
+ }
1272
+
1273
+ /**
1274
+ * One picture: the local bytes when the sidecar has them, the public URL when it does not.
1275
+ *
1276
+ * Local first because that copy is the one that is always reachable \u2014 a reference whose
1277
+ * re-host failed carries an Asset Forger URL that expires, and a cover's URL lives on whichever
1278
+ * environment generated it. The href is only ever set from an http(s) URL: these records are
1279
+ * files a creator can hand-edit, and this page would otherwise run whatever a scheme in one of
1280
+ * them said to.
1281
+ */
1282
+ function fillArt(frame, img, caption, kind, image) {
1283
+ caption.textContent = '';
1284
+ img.removeAttribute('src');
1285
+ frame.classList.remove('has-image');
1286
+ if (!image) return;
1287
+ // Prefix tests rather than a regex: a slash inside one would have to be double-escaped to
1288
+ // survive this literal, and that is the exact trap shell-page.test.ts exists to catch.
1289
+ var url = image.url || '';
1290
+ var remote = url.indexOf('https://') === 0 || url.indexOf('http://') === 0 ? url : '';
1291
+ // Cache-busted on the stamp: bitmagic cover rewrites .bitmagic/cover.webp in place, so the
1292
+ // path alone would show a creator the art they just replaced.
1293
+ var src = image.local
1294
+ ? '/api/game-info/image?kind=' + kind + '&v=' + encodeURIComponent(image.at)
1295
+ : remote;
1296
+ if (src) {
1297
+ // The local copy can go missing between the read and the request (a .bitmagic wiped while
1298
+ // this ran), and the recorded URL can have expired. Falling back once, and then back to the
1299
+ // "not yet" copy, means the card never sits there as an empty square with no explanation.
1300
+ var triedRemote = src === remote;
1301
+ img.onerror = function () {
1302
+ if (!triedRemote && remote) {
1303
+ triedRemote = true;
1304
+ img.src = remote;
1305
+ return;
1306
+ }
1307
+ frame.classList.remove('has-image');
1308
+ };
1309
+ img.src = src;
1310
+ frame.classList.add('has-image');
1311
+ }
1312
+ var label = image.candidateId || (kind === 'cover' ? 'Cover image' : 'Reference image');
1313
+ if (remote) {
1314
+ var link = document.createElement('a');
1315
+ link.href = remote;
1316
+ link.target = '_blank';
1317
+ link.rel = 'noopener noreferrer';
1318
+ link.textContent = label;
1319
+ caption.appendChild(link);
1320
+ } else {
1321
+ caption.appendChild(document.createTextNode(label));
1322
+ }
1323
+ caption.appendChild(document.createTextNode(describeAge(image.at)));
1324
+ // The one thing on this card worth interrupting for: the URL every generator inherits is
1325
+ // about to stop resolving.
1326
+ if (image.hosted === false) {
1327
+ var stale = document.createElement('span');
1328
+ stale.className = 'stale';
1329
+ stale.textContent = ' \u2014 not re-hosted, so this URL may expire. Re-run bitmagic reference accept.';
1330
+ caption.appendChild(stale);
1331
+ }
1332
+ }
1333
+
1334
+ function closeInfo() {
1335
+ infoOverlay.classList.remove('show');
1336
+ // Drop the bytes rather than keep two pictures decoded behind a closed dialog for the session.
1337
+ infoReferenceImg.removeAttribute('src');
1338
+ infoCoverImg.removeAttribute('src');
1339
+ infoToggle.focus();
1340
+ }
1341
+
1210
1342
  /**
1211
1343
  * The Record panel — the Creator's Dev Tools recording settings, worn by this lane.
1212
1344
  *
@@ -2253,6 +2385,7 @@ ${ASSET_DETAIL_HTML}
2253
2385
  if (closeRecordingPanel()) return;
2254
2386
  if (closeMotionPanel()) return;
2255
2387
  if (publishOverlay.classList.contains('show')) { closePublish(); return; }
2388
+ if (infoOverlay.classList.contains('show')) { closeInfo(); return; }
2256
2389
  hqOverlay.classList.remove('show');
2257
2390
  });
2258
2391
 
@@ -2585,6 +2718,11 @@ ${ASSET_DETAIL_HTML}
2585
2718
  if (!event.target.closest || !event.target.closest('.bm-menu-wrap')) closeMore();
2586
2719
  });
2587
2720
 
2721
+ infoToggle.addEventListener('click', function () { void openInfo(); });
2722
+ infoClose.addEventListener('click', closeInfo);
2723
+ infoOverlay.addEventListener('click', function (event) {
2724
+ if (event.target === infoOverlay) closeInfo();
2725
+ });
2588
2726
  publishToggle.addEventListener('click', openPublish);
2589
2727
  publishClose.addEventListener('click', closePublish);
2590
2728
  // Click the backdrop to dismiss, like every other dialog on this page.
@@ -1 +1 @@
1
- {"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"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;;;;;;0BAQF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAg3BvC,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+0C1C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmChB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"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EAAE;;;;;;;;0BAQF,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAs/BvC,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAq1C1C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmChB,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/cli",
3
- "version": "0.1.64-dev.12",
3
+ "version": "0.1.64-dev.14",
4
4
  "description": "Build Bitmagic games from your own agent tool",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Bitmagic Oy",
@@ -25,9 +25,9 @@
25
25
  "playwright-core": "^1.59.1",
26
26
  "tar": "^7.4.3",
27
27
  "ws": "^8.21.3",
28
- "@bitmagic/animation-forger": "0.1.19-dev.12",
29
- "@bitmagic/world-forger": "0.1.24-dev.12",
30
- "@bitmagic/asset-core": "0.2.19-dev.12"
28
+ "@bitmagic/animation-forger": "0.1.19-dev.14",
29
+ "@bitmagic/asset-core": "0.2.19-dev.14",
30
+ "@bitmagic/world-forger": "0.1.24-dev.14"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@eslint/js": "^9.38.0",