@bitmagic/cli 0.1.83-dev.6 → 0.1.83
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 +49 -7
- package/dist/bug-report/dev-view.d.ts +10 -0
- package/dist/bug-report/dev-view.js +35 -0
- package/dist/bug-report/dev-view.js.map +1 -0
- package/dist/bug-report/send.d.ts +54 -0
- package/dist/bug-report/send.js +143 -0
- package/dist/bug-report/send.js.map +1 -0
- package/dist/cli.d.ts +29 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts +4 -0
- package/dist/commands/build.js +20 -3
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/pages.d.ts +25 -0
- package/dist/commands/pages.js +87 -0
- package/dist/commands/pages.js.map +1 -0
- package/dist/commands/report-bug.d.ts +42 -0
- package/dist/commands/report-bug.js +98 -0
- package/dist/commands/report-bug.js.map +1 -0
- package/dist/commands/upgrade.d.ts +9 -2
- package/dist/commands/upgrade.js +27 -6
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/editor/bug-report-panel.d.ts +23 -0
- package/dist/editor/bug-report-panel.js +191 -0
- package/dist/editor/bug-report-panel.js.map +1 -0
- package/dist/editor/hud-replay-page.d.ts +9 -0
- package/dist/editor/hud-replay-page.js +11 -1
- package/dist/editor/hud-replay-page.js.map +1 -1
- package/dist/editor/server.js +54 -1
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +11 -0
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/project/context.d.ts +7 -0
- package/dist/project/context.js.map +1 -1
- package/dist/publish/bundle.d.ts +43 -0
- package/dist/publish/bundle.js +133 -29
- package/dist/publish/bundle.js.map +1 -1
- package/dist/publish/source-zip.d.ts +6 -0
- package/dist/publish/source-zip.js +1 -1
- package/dist/publish/source-zip.js.map +1 -1
- package/dist/scaffold/engine-capabilities.d.ts +4 -0
- package/dist/scaffold/engine-capabilities.js.map +1 -1
- package/dist/scaffold/game-migration.d.ts +25 -63
- package/dist/scaffold/game-migration.js +30 -439
- package/dist/scaffold/game-migration.js.map +1 -1
- package/dist/scaffold/github-pages.d.ts +83 -0
- package/dist/scaffold/github-pages.js +200 -0
- package/dist/scaffold/github-pages.js.map +1 -0
- package/dist/scaffold/import-codemod.d.ts +4 -3
- package/dist/scaffold/import-codemod.js +16 -34
- package/dist/scaffold/import-codemod.js.map +1 -1
- package/dist/scaffold/project-files.d.ts +11 -0
- package/dist/scaffold/project-files.js +21 -8
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/skill-files.js +34 -3
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/vendor/hud-theme/engine/hud/fonts.js +6 -4
- package/package.json +6 -6
- package/dist/scaffold/legacy-game-baselines.d.ts +0 -14
- package/dist/scaffold/legacy-game-baselines.js +0 -218
- package/dist/scaffold/legacy-game-baselines.js.map +0 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { CliError } from '../errors.js';
|
|
2
|
+
import { spawnPathCommandSync } from '../project/spawn-bin.js';
|
|
3
|
+
import { hasEngineCapability } from './engine-capabilities.js';
|
|
4
|
+
/**
|
|
5
|
+
* The GitHub Pages target for a standalone project (engine OSS audit W5.6 §2.6, decision H-h):
|
|
6
|
+
* `bitmagic pages init` writes the workflow below, and the workflow runs `bitmagic build --pages`
|
|
7
|
+
* on every push to the default branch and deploys `.bitmagic/pages/` with GitHub's own Pages
|
|
8
|
+
* actions.
|
|
9
|
+
*
|
|
10
|
+
* What `build --pages` makes is a STATIC page: it boots through `bitmagic/boot-static.js`, which
|
|
11
|
+
* registers no platform services, so a `*.github.io` page never calls api-server, game-server or
|
|
12
|
+
* GTM. Only the engine's own files still come from Bitmagic: the Bitmagic CDN, until the open
|
|
13
|
+
* engine's asset site exists (`pagesHosting` in `bitmagic.json` switches that).
|
|
14
|
+
*/
|
|
15
|
+
/** Where `bitmagic pages init` writes the workflow, relative to the project root. */
|
|
16
|
+
export const PAGES_WORKFLOW_PATH = '.github/workflows/bitmagic-pages.yml';
|
|
17
|
+
/** The directory `bitmagic build --pages` writes and the workflow uploads, relative to the root. */
|
|
18
|
+
export const PAGES_OUTPUT_DIR = '.bitmagic/pages';
|
|
19
|
+
/** The engine capability a vendored engine advertises once it carries `bitmagic/boot-static.ts`. */
|
|
20
|
+
export const STATIC_PAGE_CAPABILITY = 'staticPage';
|
|
21
|
+
/** The `bm:platform` id the static page declares and `bitmagic/register-static.ts` registers. */
|
|
22
|
+
export const BITMAGIC_STATIC_PLATFORM_ID = 'bitmagic-static';
|
|
23
|
+
/**
|
|
24
|
+
* Refuses an engine without the static page, before anything is written or built. The page boots
|
|
25
|
+
* `bitmagic/boot-static.js`; on an engine that has none, the build would compile clean and then
|
|
26
|
+
* fail in Vite on an unresolved entry, naming a file the creator never wrote.
|
|
27
|
+
*/
|
|
28
|
+
export function requireStaticPageEngine(capabilities) {
|
|
29
|
+
if (hasEngineCapability(capabilities, STATIC_PAGE_CAPABILITY))
|
|
30
|
+
return;
|
|
31
|
+
throw new CliError('This project\'s engine predates the GitHub Pages target: it has no static page '
|
|
32
|
+
+ '(`staticPage` in engine/engine/engine-manifest.json). Run `bitmagic upgrade` to update the '
|
|
33
|
+
+ 'engine (your game code is not touched), then try again.', 1);
|
|
34
|
+
}
|
|
35
|
+
/** The values `pagesHosting` in `bitmagic.json` takes, besides a root URL. */
|
|
36
|
+
export const PAGES_HOSTING_PRESETS = ['bitmagic-cdn', 'github-pages'];
|
|
37
|
+
/** The default: the engine's files from the Bitmagic CDN, which is where they all are today. */
|
|
38
|
+
export const DEFAULT_PAGES_HOSTING = 'bitmagic-cdn';
|
|
39
|
+
/**
|
|
40
|
+
* The `<meta name="bm:asset-host">` content the static page carries for `bitmagic.json`'s
|
|
41
|
+
* `pagesHosting`, or null for none.
|
|
42
|
+
*
|
|
43
|
+
* - absent, or `"bitmagic-cdn"`: no meta. The static platform registers the Bitmagic CDN preset,
|
|
44
|
+
* and a page with no meta takes the platform's hosting (`resolveHosting` in the engine's
|
|
45
|
+
* `runtime/hosting.ts`).
|
|
46
|
+
* - `"github-pages"`: the meta `github-pages`, the open engine's own asset site. That site does
|
|
47
|
+
* not exist yet, so a page built this way loads no engine assets until it does.
|
|
48
|
+
* - a root URL (`https://…`, `http://…`, or a page-relative `./…`, `../…` or `/…` path): the meta
|
|
49
|
+
* names that root, which the engine reads as a self-hosted copy of the engine's files.
|
|
50
|
+
*
|
|
51
|
+
* Anything else is refused: the engine would read an unknown name as an unregistered provider and
|
|
52
|
+
* silently fall back to the platform's hosting, which is the opposite of what the creator asked.
|
|
53
|
+
*/
|
|
54
|
+
export function pagesAssetHostMeta(pagesHosting) {
|
|
55
|
+
if (pagesHosting === undefined || pagesHosting === DEFAULT_PAGES_HOSTING)
|
|
56
|
+
return null;
|
|
57
|
+
if (pagesHosting === 'github-pages')
|
|
58
|
+
return 'github-pages';
|
|
59
|
+
if (typeof pagesHosting === 'string' && /^(https?:\/\/[^\s"<>]+|\.{0,2}\/[^\s"<>]*)$/.test(pagesHosting)) {
|
|
60
|
+
return pagesHosting;
|
|
61
|
+
}
|
|
62
|
+
throw new CliError(`bitmagic.json's "pagesHosting" is ${JSON.stringify(pagesHosting)}, which is not one of `
|
|
63
|
+
+ `${PAGES_HOSTING_PRESETS.map((p) => `"${p}"`).join(', ')} or a root URL (https://… or ./…). `
|
|
64
|
+
+ 'Remove the field to keep the default, the Bitmagic CDN.', 1);
|
|
65
|
+
}
|
|
66
|
+
/** A branch name the workflow can carry unquoted in a YAML flow sequence. */
|
|
67
|
+
const PLAIN_BRANCH = /^[A-Za-z0-9][A-Za-z0-9._/-]*$/;
|
|
68
|
+
/**
|
|
69
|
+
* The install steps for the project's lockfile, indented to sit in the build job's `steps:`.
|
|
70
|
+
*
|
|
71
|
+
* pnpm needs its own setup action (a scaffolded package.json has no `packageManager` field, so the
|
|
72
|
+
* major version is named here) and must come before setup-node's cache. The frozen-lockfile
|
|
73
|
+
* installs are deliberate: CI must build what was committed, not re-resolve it.
|
|
74
|
+
*/
|
|
75
|
+
function installSteps(manager) {
|
|
76
|
+
if (manager === 'pnpm') {
|
|
77
|
+
return ` - uses: pnpm/action-setup@v5
|
|
78
|
+
with:
|
|
79
|
+
version: 10
|
|
80
|
+
- uses: actions/setup-node@v6
|
|
81
|
+
with:
|
|
82
|
+
node-version: 24
|
|
83
|
+
cache: pnpm
|
|
84
|
+
- run: pnpm install --frozen-lockfile`;
|
|
85
|
+
}
|
|
86
|
+
if (manager === 'yarn') {
|
|
87
|
+
return ` - uses: actions/setup-node@v6
|
|
88
|
+
with:
|
|
89
|
+
node-version: 24
|
|
90
|
+
cache: yarn
|
|
91
|
+
- run: yarn install --frozen-lockfile`;
|
|
92
|
+
}
|
|
93
|
+
return ` - uses: actions/setup-node@v6
|
|
94
|
+
with:
|
|
95
|
+
node-version: 24
|
|
96
|
+
cache: npm
|
|
97
|
+
- run: npm ci`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `.github/workflows/bitmagic-pages.yml`.
|
|
101
|
+
*
|
|
102
|
+
* Action majors follow this repository's own workflows (`actions/checkout@v6`,
|
|
103
|
+
* `actions/setup-node@v6`, `pnpm/action-setup@v5`); the two Pages actions, which the repository
|
|
104
|
+
* does not otherwise use, are pinned to their current majors. Checkout fetches LFS objects,
|
|
105
|
+
* because a project may keep large models there and the bundle inlines nothing it cannot read.
|
|
106
|
+
*/
|
|
107
|
+
export function renderGithubPagesWorkflow(options) {
|
|
108
|
+
if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/.test(options.cliVersion)) {
|
|
109
|
+
throw new CliError(`Cannot pin the workflow to this CLI's version (${JSON.stringify(options.cliVersion)}). `
|
|
110
|
+
+ 'Reinstall the CLI with `bitmagic self-update` and run `bitmagic pages init` again.', 1);
|
|
111
|
+
}
|
|
112
|
+
if (!PLAIN_BRANCH.test(options.branch)) {
|
|
113
|
+
throw new CliError(`Cannot deploy from the branch ${JSON.stringify(options.branch)}: name a plain branch with --branch.`, 1);
|
|
114
|
+
}
|
|
115
|
+
return `# Builds this Bitmagic game and deploys it to GitHub Pages on every push to ${options.branch}.
|
|
116
|
+
# Written by \`bitmagic pages init\`; run it again to refresh this file.
|
|
117
|
+
#
|
|
118
|
+
# One-time setup: Settings -> Pages -> Build and deployment -> Source: GitHub Actions.
|
|
119
|
+
#
|
|
120
|
+
# The page is static: no Bitmagic sign-in, cloud saves, leaderboards, multiplayer or runtime AI.
|
|
121
|
+
# The engine's own files load from the Bitmagic CDN (\`pagesHosting\` in bitmagic.json).
|
|
122
|
+
name: Deploy to GitHub Pages
|
|
123
|
+
|
|
124
|
+
on:
|
|
125
|
+
push:
|
|
126
|
+
branches: [${options.branch}]
|
|
127
|
+
workflow_dispatch:
|
|
128
|
+
|
|
129
|
+
permissions:
|
|
130
|
+
contents: read
|
|
131
|
+
pages: write
|
|
132
|
+
id-token: write
|
|
133
|
+
|
|
134
|
+
concurrency:
|
|
135
|
+
group: pages
|
|
136
|
+
cancel-in-progress: false
|
|
137
|
+
|
|
138
|
+
jobs:
|
|
139
|
+
build:
|
|
140
|
+
runs-on: ubuntu-latest
|
|
141
|
+
steps:
|
|
142
|
+
- uses: actions/checkout@v6
|
|
143
|
+
with:
|
|
144
|
+
lfs: true
|
|
145
|
+
${installSteps(options.packageManager)}
|
|
146
|
+
- run: npx --yes @bitmagic/cli@${options.cliVersion} build --pages
|
|
147
|
+
- uses: actions/upload-pages-artifact@v5
|
|
148
|
+
with:
|
|
149
|
+
path: ${PAGES_OUTPUT_DIR}/
|
|
150
|
+
|
|
151
|
+
deploy:
|
|
152
|
+
needs: build
|
|
153
|
+
runs-on: ubuntu-latest
|
|
154
|
+
environment:
|
|
155
|
+
name: github-pages
|
|
156
|
+
url: \${{ steps.deployment.outputs.page_url }}
|
|
157
|
+
steps:
|
|
158
|
+
- id: deployment
|
|
159
|
+
uses: actions/deploy-pages@v5
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* What `bitmagic pages init` prints after writing the workflow: the one step only the creator can
|
|
164
|
+
* take, the limits GitHub sets, and the terms note. Lines, so `--json` can carry them as an array.
|
|
165
|
+
*/
|
|
166
|
+
export function pagesSetupNotes() {
|
|
167
|
+
return [
|
|
168
|
+
'One manual step: on GitHub, open the repository\'s Settings -> Pages -> Build and deployment, '
|
|
169
|
+
+ 'and set Source to "GitHub Actions". Then push to the default branch (or run the workflow from '
|
|
170
|
+
+ 'the Actions tab) and the game deploys.',
|
|
171
|
+
'The page is static: no Bitmagic sign-in, cloud saves, leaderboards, multiplayer or runtime AI. '
|
|
172
|
+
+ 'The engine\'s own files (characters, animations) load from the Bitmagic CDN.',
|
|
173
|
+
'GitHub Pages limits: 1 GB per site, and a soft bandwidth limit of 100 GB per month.',
|
|
174
|
+
'GitHub Pages is not meant to run a commercial business. A game run mainly as one fits the '
|
|
175
|
+
+ 'Bitmagic CDN (`bitmagic publish`) or another host better. Your game\'s licence terms are in '
|
|
176
|
+
+ 'engine/LICENSE.md.',
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* The repository's default branch, for the workflow's push trigger: the remote's `HEAD` when the
|
|
181
|
+
* clone knows it, else the branch checked out now, else `main` (GitHub's default for a new
|
|
182
|
+
* repository). `bitmagic pages init --branch` overrides it.
|
|
183
|
+
*/
|
|
184
|
+
export function detectDefaultBranch(root) {
|
|
185
|
+
const git = (args) => {
|
|
186
|
+
const result = spawnPathCommandSync('git', ['-C', root, ...args], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
187
|
+
if (result.error !== undefined || result.status !== 0)
|
|
188
|
+
return null;
|
|
189
|
+
const out = String(result.stdout).trim();
|
|
190
|
+
return out.length > 0 ? out : null;
|
|
191
|
+
};
|
|
192
|
+
const remoteHead = git(['symbolic-ref', '--short', 'refs/remotes/origin/HEAD']);
|
|
193
|
+
if (remoteHead !== null && remoteHead.startsWith('origin/'))
|
|
194
|
+
return remoteHead.slice('origin/'.length);
|
|
195
|
+
const current = git(['symbolic-ref', '--short', 'HEAD']);
|
|
196
|
+
if (current !== null)
|
|
197
|
+
return current;
|
|
198
|
+
return 'main';
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=github-pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-pages.js","sourceRoot":"","sources":["../../src/scaffold/github-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,10 @@ export interface ImportCodemodOptions {
|
|
|
38
38
|
* alias-or-relative style and extension. Specifiers that point anywhere else — a package, the
|
|
39
39
|
* creator's own files — are never touched, and a second run finds nothing to do.
|
|
40
40
|
*
|
|
41
|
-
* The
|
|
42
|
-
*
|
|
43
|
-
* engine
|
|
41
|
+
* The per-file rewrite is `@bitmagic/asset-core/engine-specifiers`' `rewriteMovedImports`, which
|
|
42
|
+
* the Creator agent's migration runs too; its scan and spelling are the ones
|
|
43
|
+
* `game/scripts/engine-move.mjs` runs inside the engine repo, so a creator's import ends up exactly
|
|
44
|
+
* where the engine's own imports of the same module did.
|
|
44
45
|
*/
|
|
45
46
|
export declare function runImportCodemod(options: ImportCodemodOptions): ImportCodemodResult;
|
|
46
47
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
|
-
import { SPECIFIER_KINDS,
|
|
4
|
+
import { SPECIFIER_KINDS, movedImports, parseMovedModules, rewriteMovedImports, } from '@bitmagic/asset-core/engine-specifiers';
|
|
5
5
|
import { ALIASES } from './aliases.js';
|
|
6
6
|
/**
|
|
7
7
|
* Where the vendored engine lists its moved modules: `engine/compat/aliases.ts` in the engine's
|
|
@@ -40,9 +40,10 @@ function listSourceFiles(dir, out = []) {
|
|
|
40
40
|
* alias-or-relative style and extension. Specifiers that point anywhere else — a package, the
|
|
41
41
|
* creator's own files — are never touched, and a second run finds nothing to do.
|
|
42
42
|
*
|
|
43
|
-
* The
|
|
44
|
-
*
|
|
45
|
-
* engine
|
|
43
|
+
* The per-file rewrite is `@bitmagic/asset-core/engine-specifiers`' `rewriteMovedImports`, which
|
|
44
|
+
* the Creator agent's migration runs too; its scan and spelling are the ones
|
|
45
|
+
* `game/scripts/engine-move.mjs` runs inside the engine repo, so a creator's import ends up exactly
|
|
46
|
+
* where the engine's own imports of the same module did.
|
|
46
47
|
*/
|
|
47
48
|
export function runImportCodemod(options) {
|
|
48
49
|
const { root, ts } = options;
|
|
@@ -60,43 +61,24 @@ export function runImportCodemod(options) {
|
|
|
60
61
|
if (!fs.existsSync(aliasesFile))
|
|
61
62
|
return result;
|
|
62
63
|
result.moveListFound = true;
|
|
63
|
-
const
|
|
64
|
-
result.movedModules =
|
|
65
|
-
|
|
64
|
+
const aliasesText = fs.readFileSync(aliasesFile, 'utf-8');
|
|
65
|
+
result.movedModules = parseMovedModules(aliasesText).length;
|
|
66
|
+
const moved = movedImports(aliasesText, path.join(root, 'engine'), engineAliasRoots(), (abs) => fs.existsSync(abs));
|
|
67
|
+
if (moved === null)
|
|
66
68
|
return result;
|
|
67
|
-
// Keyed by the old path WITH .ts, as `resolveSourceSpecifier` reports it; a shim removed from a
|
|
68
|
-
// later engine still resolves here, so the rewrite does not depend on the old file existing.
|
|
69
|
-
const movedTo = new Map(moves.map((m) => [`${stemOf(m.from)}.ts`, m.to]));
|
|
70
|
-
const srcRoot = path.join(root, 'engine');
|
|
71
|
-
const resolveOptions = {
|
|
72
|
-
srcRoot,
|
|
73
|
-
aliasRoots: engineAliasRoots(),
|
|
74
|
-
exists: (abs) => movedTo.has(toPosix(path.relative(srcRoot, abs))) || fs.existsSync(abs),
|
|
75
|
-
};
|
|
76
69
|
for (const file of listSourceFiles(path.join(root, 'src'))) {
|
|
77
|
-
const
|
|
78
|
-
const scan = findModuleSpecifiers(ts, file, text);
|
|
70
|
+
const rewrite = rewriteMovedImports(ts, file, fs.readFileSync(file, 'utf-8'), moved);
|
|
79
71
|
const relFile = toPosix(path.relative(root, file));
|
|
80
|
-
for (const call of
|
|
72
|
+
for (const call of rewrite.computedDynamic)
|
|
81
73
|
result.computedDynamic.push(`${relFile}: ${call}`);
|
|
82
|
-
|
|
83
|
-
for (const found of scan.specifiers) {
|
|
84
|
-
const resolved = resolveSourceSpecifier(found.value, file, resolveOptions);
|
|
85
|
-
const newRel = resolved ? movedTo.get(resolved.rel) : undefined;
|
|
86
|
-
if (!resolved || newRel === undefined)
|
|
87
|
-
continue;
|
|
88
|
-
const next = formatSpecifier(found.value, { newRel, viaIndex: resolved.viaIndex, targetMoves: true }, file, srcRoot);
|
|
89
|
-
if (next === found.value)
|
|
90
|
-
continue;
|
|
91
|
-
specifiers[found.kind]++;
|
|
92
|
-
result.total++;
|
|
93
|
-
edits.push({ start: found.start, end: found.end, text: `${found.quote}${next}${found.quote}` });
|
|
94
|
-
}
|
|
95
|
-
if (edits.length === 0)
|
|
74
|
+
if (rewrite.total === 0)
|
|
96
75
|
continue;
|
|
76
|
+
for (const kind of SPECIFIER_KINDS)
|
|
77
|
+
specifiers[kind] += rewrite.specifiers[kind] ?? 0;
|
|
78
|
+
result.total += rewrite.total;
|
|
97
79
|
result.filesChanged.push(relFile);
|
|
98
80
|
if (write)
|
|
99
|
-
fs.writeFileSync(file,
|
|
81
|
+
fs.writeFileSync(file, rewrite.text);
|
|
100
82
|
}
|
|
101
83
|
return result;
|
|
102
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-codemod.js","sourceRoot":"","sources":["../../src/scaffold/import-codemod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"import-codemod.js","sourceRoot":"","sources":["../../src/scaffold/import-codemod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iCAAiC,CAAC;AAyBvE,wGAAwG;AACxG,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnE,SAAS,eAAe,CAAC,GAAW,EAAE,MAAgB,EAAE;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC/C,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA6B;IAC5D,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAkC,CAAC;IAC3G,MAAM,MAAM,GAAwB;QAClC,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE;QAChB,UAAU;QACV,KAAK,EAAE,CAAC;QACR,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpH,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,mBAAmB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,eAAe;YAAE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC;YAAE,SAAS;QAClC,KAAK,MAAM,IAAI,IAAI,eAAe;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAc,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAChG,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -63,6 +63,17 @@ export interface IndexHtmlOptions {
|
|
|
63
63
|
* directory to load.
|
|
64
64
|
*/
|
|
65
65
|
capabilities: EngineCapabilities;
|
|
66
|
+
/**
|
|
67
|
+
* Render the STATIC page `bitmagic build --pages` bundles for GitHub Pages instead of the
|
|
68
|
+
* project's own page: it boots through `bitmagic/boot-static.js` (no platform services, the
|
|
69
|
+
* engine's files on the Bitmagic CDN) and declares `<meta name="bm:platform"
|
|
70
|
+
* content="bitmagic-static">`, plus `<meta name="bm:asset-host">` when `assetHost` is a string
|
|
71
|
+
* (`pagesAssetHostMeta` in `github-pages.ts`). Only for an engine that advertises `staticPage`.
|
|
72
|
+
* Absent, the page is byte for byte the one every project is scaffolded with.
|
|
73
|
+
*/
|
|
74
|
+
staticPage?: {
|
|
75
|
+
assetHost: string | null;
|
|
76
|
+
};
|
|
66
77
|
}
|
|
67
78
|
/** The `bm:platform` value a page carries when it boots through the Bitmagic platform package. */
|
|
68
79
|
export declare const BITMAGIC_PLATFORM_ID = "bitmagic";
|
|
@@ -2,6 +2,7 @@ import { FAVICON_LINK_ID } from '@bitmagic/asset-core/favicon';
|
|
|
2
2
|
import { describeArtStyle } from '@bitmagic/asset-core/art-style';
|
|
3
3
|
import { tsconfigPaths, importMapEntries, viteAliasEntries } from './aliases.js';
|
|
4
4
|
import { hasEngineCapability } from './engine-capabilities.js';
|
|
5
|
+
import { BITMAGIC_STATIC_PLATFORM_ID } from './github-pages.js';
|
|
5
6
|
import { currentPortLane } from '../port-lane.js';
|
|
6
7
|
import { AGENTS_MD_REFERENCE_SECTION, GAME_DESIGN_REFERENCE_HINT, GENERATE_SKILL_REFERENCE_SECTION, PLANNING_SKILL_REFERENCE_STEP1, PLANNING_SKILL_REFERENCE_STEP4, } from './reference-guidance.js';
|
|
7
8
|
import { ALWAYS_AGENTS, PRIMARY_SKILLS_DIR, joinWithAnd, skillDirsFor, } from './agent-targets.js';
|
|
@@ -273,14 +274,25 @@ export function renderIndexHtml(options) {
|
|
|
273
274
|
const imports = { ...CDN_IMPORTS, ...aliasImports };
|
|
274
275
|
// Derived from the same alias model as the import map above, not a hardcoded literal, so the
|
|
275
276
|
// two cannot drift: the entry point is an alias's import-map target plus its filename.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
277
|
+
// The bm:platform meta goes only on a page that registers the platform: the engine logs an
|
|
278
|
+
// error when a page declares a platform that never registered, so an older engine's page must
|
|
279
|
+
// not carry it.
|
|
280
|
+
const staticPage = options.staticPage;
|
|
281
|
+
let engineEntryPoint;
|
|
282
|
+
let platformMeta;
|
|
283
|
+
if (staticPage !== undefined) {
|
|
284
|
+
engineEntryPoint = `${aliasImports['bitmagic/']}boot-static.js`;
|
|
285
|
+
platformMeta = `\n <meta name="bm:platform" content="${BITMAGIC_STATIC_PLATFORM_ID}">`
|
|
286
|
+
+ (staticPage.assetHost === null ? '' : `\n <meta name="bm:asset-host" content="${staticPage.assetHost}">`);
|
|
287
|
+
}
|
|
288
|
+
else if (platformEntry) {
|
|
289
|
+
engineEntryPoint = `${aliasImports['bitmagic/']}boot.js`;
|
|
290
|
+
platformMeta = `\n <meta name="bm:platform" content="${BITMAGIC_PLATFORM_ID}">`;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
engineEntryPoint = `${aliasImports['engine/']}GameTemplate.js`;
|
|
294
|
+
platformMeta = '';
|
|
295
|
+
}
|
|
284
296
|
// The #game-container div below is required, not decorative: GameTemplate.ts
|
|
285
297
|
// does document.getElementById('game-container') as HTMLElement, and GameEngine.ts
|
|
286
298
|
// appendChild()s into it. The "as HTMLElement" cast erases the null a missing div would
|
|
@@ -1449,6 +1461,7 @@ tier 2.
|
|
|
1449
1461
|
| Using an uploaded animation as the player's run/idle | \`locomotion-assignment.md\` |
|
|
1450
1462
|
| Vehicles and driving | \`vehicle-system.md\`, \`vehicle-ai.md\` |
|
|
1451
1463
|
| A non-humanoid player — spacecraft, vehicle-only, custom controller | \`custom-player.md\` |
|
|
1464
|
+
| \`src/work/Game.ts\` is still a whole \`class VoxelGame implements GameModule\` (or \`GenreGameInterface\`), or a load logs \`[deprecated]\` for \`setSpawner\` / \`setPlayerLoader\` | \`migrating-game-to-voxelgamebase.md\` |
|
|
1452
1465
|
| Hiding / showing the player — i-frames, ghost mode, flicker | \`player-visibility.md\` |
|
|
1453
1466
|
| Spawning entities | \`spawning-system.md\` |
|
|
1454
1467
|
| Markers | \`markers-system.md\` |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,7 +112,7 @@ are lost on the next upgrade.
|
|
|
112
112
|
| \`publishing-a-game/\` | shipping the game to bitmagic.ai — the verify gate, public vs private, thumbnails, category tags, and every way \`bitmagic publish\` can refuse |
|
|
113
113
|
| \`publishing-to-roblox/\` | bringing this game into Roblox Studio, preserving original assets, safely updating an existing port, verifying it, and saving through MCP when supported; the creator publishes from Studio |
|
|
114
114
|
| \`deciding-with-a-model/\` | the game wants NPCs that JUDGE rather than follow a rule — a guard deciding whether to raise the alarm, a referee, a trader weighing an offer, "NPCs that actually think" — or you are about to add any per-tick AI call and need to know what it costs |
|
|
115
|
-
| \`working-with-the-creator/\` | they are editing alongside you — gizmo drags into \`world.json\`, a pasted frame from their game, \`.bitmagic/edit/events.jsonl\`, their phone |
|
|
115
|
+
| \`working-with-the-creator/\` | they are editing alongside you — gizmo drags into \`world.json\`, a pasted frame from their game, \`.bitmagic/edit/events.jsonl\`, their phone, reporting a Bitmagic bug |
|
|
116
116
|
| \`converting-unity-levels/\` | a creator wants a Unity scene or game ported, replicated or "brought over" — reusing its prefabs, FBX models and colliders — or a converted level has pieces rotated, mis-scaled, walls that do not collide, an empty corner |
|
|
117
117
|
| \`building-levels-in-blender/\` | a hand-designed low-poly world — an interior, a station, a stylised set, "not voxels", "in Blender" — for a frontier model (Claude Opus/Fable, GPT-6 class) with Blender 4.2+, any other model forges instead; built from a Python script into one GLB the engine's MeshLevel loads, and the \`artStyle: "low-poly"\` switch in game.json that makes the cover, asset and judge defaults follow; or such a level has walls you fall through, doors that do not open, z-fighting, an empty world after publish. Its first section says when the path is yours |
|
|
118
118
|
| \`importing-metahumans/\` | a creator wants an Epic MetaHuman, an Unreal character, a "photoreal" or "highest fidelity" character brought in as the playable high-res player — the GLB preparation (\`bitmagic tools install metahuman\`), the retarget / helper-joint / hair fixes, materials, lip-sync — or such a character has floating hair, crossed arms, split legs, a torn shirt, tinted skin, black eyes, slumped shoulders |
|
|
@@ -361,7 +361,7 @@ export function renderTrailerCraftReference() {
|
|
|
361
361
|
export function renderPublishingSkill() {
|
|
362
362
|
return `---
|
|
363
363
|
name: publishing-a-game
|
|
364
|
-
description: Use when publishing this Bitmagic game to bitmagic.ai, making it public, coming soon or private, building the bundle, choosing category tags or a thumbnail, sharing the game's link or QR code, or when \`bitmagic publish\` refuses or exits non-zero (verify stale, not logged in, exit 7 and the rest).
|
|
364
|
+
description: Use when publishing this Bitmagic game to bitmagic.ai, making it public, coming soon or private, building the bundle, choosing category tags or a thumbnail, sharing the game's link or QR code, deploying it to GitHub Pages, or when \`bitmagic publish\` refuses or exits non-zero (verify stale, not logged in, exit 7 and the rest).
|
|
365
365
|
---
|
|
366
366
|
|
|
367
367
|
# Publishing this game
|
|
@@ -495,6 +495,23 @@ Publish prints how many it left out, their total size, and the archive's own siz
|
|
|
495
495
|
When a newer engine exists, \`bitmagic dev\` and \`bitmagic publish\` say so and suggest
|
|
496
496
|
\`bitmagic upgrade\`. Upgrade while you are developing, when rebuilding is cheap, rather than being
|
|
497
497
|
blocked at the moment you ship.
|
|
498
|
+
|
|
499
|
+
## GitHub Pages instead
|
|
500
|
+
|
|
501
|
+
Only when the creator asks to host the game on GitHub Pages:
|
|
502
|
+
|
|
503
|
+
\`\`\`
|
|
504
|
+
bitmagic pages init # writes .github/workflows/bitmagic-pages.yml; commit it
|
|
505
|
+
bitmagic build --pages # what the workflow runs: .bitmagic/pages/index.html
|
|
506
|
+
\`\`\`
|
|
507
|
+
|
|
508
|
+
Tell the creator the one step only they can take: **Settings → Pages → Source: GitHub Actions**
|
|
509
|
+
on the repository. Then every push to the default branch deploys. The page is static — no sign-in,
|
|
510
|
+
cloud saves, leaderboards, multiplayer or runtime AI — so do not offer it for a game that uses them.
|
|
511
|
+
The engine's files still load from the Bitmagic CDN (\`pagesHosting\` in \`bitmagic.json\`). Pages
|
|
512
|
+
allows 1 GB per site and 100 GB of bandwidth a month, and is not meant for a commercial business;
|
|
513
|
+
\`bitmagic publish\` fits such a game better. An engine too old for it is refused: run
|
|
514
|
+
\`bitmagic upgrade\`.
|
|
498
515
|
`;
|
|
499
516
|
}
|
|
500
517
|
/**
|
|
@@ -510,7 +527,7 @@ blocked at the moment you ship.
|
|
|
510
527
|
export function renderCreatorCollaborationSkill() {
|
|
511
528
|
return `---
|
|
512
529
|
name: working-with-the-creator
|
|
513
|
-
description: Use when the creator is watching or editing the game alongside you — they moved or added objects in the Editor tab, pasted a screenshot of the running game, asked to try it on their phone, or pressed "Generate high-quality version";
|
|
530
|
+
description: Use when the creator is watching or editing the game alongside you — they moved or added objects in the Editor tab, pasted a screenshot of the running game, asked to try it on their phone, or pressed "Generate high-quality version"; whenever you need to read \`.bitmagic/edit/events.jsonl\` or \`.bitmagic/jobs/\` to find out what they did; and when they want to report a bug in Bitmagic itself (\`bitmagic report-bug\`).
|
|
514
531
|
---
|
|
515
532
|
|
|
516
533
|
# Working alongside the creator
|
|
@@ -574,6 +591,20 @@ That generates the mesh, voxelizes it to the asset's recorded \`fitBox\`, and up
|
|
|
574
591
|
same asset id, so every placed instance upgrades at once. They asked for it, so run it — just never
|
|
575
592
|
twice for the same request. If it fails after the mesh was generated, the error and the JSON result
|
|
576
593
|
carry the mesh URL: retry with \`--glb-url <url>\` to skip the step that already succeeded.
|
|
594
|
+
|
|
595
|
+
## Reporting a bug in Bitmagic itself
|
|
596
|
+
|
|
597
|
+
When the engine, the CLI or the dev view misbehaves — not this game's own code — the creator can
|
|
598
|
+
tell the Bitmagic team from the dev view's **⋯ → Report bug…**, or you can for them:
|
|
599
|
+
|
|
600
|
+
\`\`\`
|
|
601
|
+
bitmagic report-bug --message "what you did, what you expected, what happened instead" --json
|
|
602
|
+
\`\`\`
|
|
603
|
+
|
|
604
|
+
It sends a ZIP of the project source (no \`engine/\`, binary assets or credential-shaped files;
|
|
605
|
+
\`--no-source\` leaves it out), the errors the last \`bitmagic verify\` saw, and the versions. Add
|
|
606
|
+
\`--screenshot <png>\` when you have one. **Only when they ask, or agree when you suggest it** —
|
|
607
|
+
never file one on your own: it carries their code and lands in front of a person.
|
|
577
608
|
`;
|
|
578
609
|
}
|
|
579
610
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCZ,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8LR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO
|
|
1
|
+
{"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCZ,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8LR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFR,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgER,CAAC;AACF,CAAC"}
|
|
@@ -144,10 +144,12 @@ function fontWeights(entry, weights) {
|
|
|
144
144
|
/**
|
|
145
145
|
* The stylesheet URL that loads `key` in `weights`. Pure: it reads only the font catalogue.
|
|
146
146
|
*
|
|
147
|
-
* - `base === null` (
|
|
148
|
-
*
|
|
149
|
-
* - `base` a URL ending in `/` (
|
|
150
|
-
*
|
|
147
|
+
* - `base === null` (the Bitmagic CDN's `fontBaseUrl`): the Google Fonts CSS2 URL, byte-identical
|
|
148
|
+
* to {@link buildGoogleFontsUrl}.
|
|
149
|
+
* - `base` a URL ending in `/` (a self-hosted provider's `fontBaseUrl`, `<root>fonts/`, decision
|
|
150
|
+
* D24): `<base><key>.css`. `scripts/mirror-engine-assets.mjs` writes that stylesheet from the
|
|
151
|
+
* Google one for every catalogue weight, with its font files beside it, so `weights` only shapes
|
|
152
|
+
* the Google URL. The theme manager passes the hosting's `fontBaseUrl` (game/docs/hosting.md).
|
|
151
153
|
*/
|
|
152
154
|
export function buildFontCssUrl(key, weights, base) {
|
|
153
155
|
if (base !== null) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.83
|
|
3
|
+
"version": "0.1.83",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Bitmagic Oy",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"resedit": "3.0.2",
|
|
27
27
|
"tar": "^7.4.3",
|
|
28
28
|
"ws": "^8.21.3",
|
|
29
|
-
"@bitmagic/asset-core": "0.2.38
|
|
30
|
-
"@bitmagic/
|
|
31
|
-
"@bitmagic/
|
|
29
|
+
"@bitmagic/asset-core": "0.2.38",
|
|
30
|
+
"@bitmagic/world-forger": "0.1.43",
|
|
31
|
+
"@bitmagic/animation-forger": "0.1.38"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@eslint/js": "^9.38.0",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"jest": "^29.7.0",
|
|
46
46
|
"ts-jest": "^29.4.12",
|
|
47
47
|
"typescript": "^6.0.3",
|
|
48
|
-
"@bitmagic/
|
|
49
|
-
"@bitmagic/
|
|
48
|
+
"@bitmagic/hud-theme": "0.1.0",
|
|
49
|
+
"@bitmagic/engine-protocol": "0.1.0"
|
|
50
50
|
},
|
|
51
51
|
"jest": {
|
|
52
52
|
"preset": "ts-jest/presets/default-esm",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GENERATED by cli/scripts/gen-legacy-game-baselines.mjs from the git history of the baseline
|
|
3
|
-
* Game.ts (62 versions before VoxelGameBase) — do not edit by hand. Token fingerprints of
|
|
4
|
-
* every member, and of each segmented method's statements with the gaps a VoxelGameBase hook runs
|
|
5
|
-
* at: what `bitmagic upgrade --migrate-game` treats as the default (see game-migration.ts).
|
|
6
|
-
*/
|
|
7
|
-
/** A segmented method body of one released baseline Game.ts. */
|
|
8
|
-
export interface LegacyBody {
|
|
9
|
-
statements: string[];
|
|
10
|
-
catchClause?: string;
|
|
11
|
-
anchors: Record<string, number>;
|
|
12
|
-
}
|
|
13
|
-
export declare const LEGACY_GAME_MEMBERS: Record<string, string[] | undefined>;
|
|
14
|
-
export declare const LEGACY_GAME_BODIES: Record<'constructor' | 'load' | 'update' | 'dispose', LegacyBody[]>;
|