feedback2 WE: the English title is the official Stronghold Protocol: Alliance (EN activity_table act2autochess) — README, server banner, package name; was Covenant (#38)

This commit is contained in:
sganggs committed 2026-10-03 23:01:49 +08:00
1 parent 945c9f3ee8
commit 380af1ba80
5 files changed
+22 -7

No files matched your search

+2 -2
View File
@@ -1,4 +1,4 @@
# 卫戍协议:盟约 · Stronghold Protocol: Covenant # 卫戍协议:盟约 · Stronghold Protocol: Alliance
《明日方舟》季节性自走棋塔防玩法「卫戍协议:盟约」的**非官方同人复刻**:浏览器即开即玩,单人或 1–4 人联机合作。 《明日方舟》季节性自走棋塔防玩法「卫戍协议:盟约」的**非官方同人复刻**:浏览器即开即玩,单人或 1–4 人联机合作。
@@ -230,7 +230,7 @@ RENDER_E2E=1 node --test 'test/render/*.browser.test.js' # 渲染测试,部
## English ## English
An **unofficial, non-commercial fan remake** of Arknights' seasonal auto-chess tower-defense mode *Stronghold Protocol: Covenant*, played in the browser: solo, or 1–4 player co-op (AI teammates can fill seats). Combat is simulated in each player's browser, so a low-power PC can host. An **unofficial, non-commercial fan remake** of Arknights' seasonal auto-chess tower-defense mode *Stronghold Protocol: Alliance*, played in the browser: solo, or 1–4 player co-op (AI teammates can fill seats). Combat is simulated in each player's browser, so a low-power PC can host.
- **Run:** download the all-in-one bundle from [Releases](../../releases/latest), install Node.js 22 or 24, then double-click `scripts\start-windows.bat` (Windows) or run `./scripts/start.sh` (macOS / Linux) and open <http://localhost:3000>. From source: `npm install && npm run setup && npm start` (setup downloads ~250 MB of art from public mirrors; the official 3D board needs a local Arknights client to extract, otherwise the 2D board is used). - **Run:** download the all-in-one bundle from [Releases](../../releases/latest), install Node.js 22 or 24, then double-click `scripts\start-windows.bat` (Windows) or run `./scripts/start.sh` (macOS / Linux) and open <http://localhost:3000>. From source: `npm install && npm run setup && npm start` (setup downloads ~250 MB of art from public mirrors; the official 3D board needs a local Arknights client to extract, otherwise the 2D board is used).
- **Play with friends:** create a co-op room and share the 4-letter key or the `?room=KEY` link. On a LAN, use the address printed at start; otherwise use a virtual-LAN tool, a tunnel or a VPS — see [docs/DEPLOY.md](docs/DEPLOY.md). - **Play with friends:** create a co-op room and share the 4-letter key or the `?room=KEY` link. On a LAN, use the address printed at start; otherwise use a virtual-LAN tool, a tunnel or a VPS — see [docs/DEPLOY.md](docs/DEPLOY.md).
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "stronghold-protocol-covenant", "name": "stronghold-protocol-alliance",
"version": "0.1.1", "version": "0.1.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "stronghold-protocol-covenant", "name": "stronghold-protocol-alliance",
"version": "0.1.1", "version": "0.1.1",
"hasInstallScript": true, "hasInstallScript": true,
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "stronghold-protocol-covenant", "name": "stronghold-protocol-alliance",
"version": "0.1.1", "version": "0.1.1",
"private": true, "private": true,
"description": "明日方舟「卫戍协议:盟约」非官方同人联机网页复刻(1–4 人合作,Node.js 服务器 + 浏览器客户端)", "description": "明日方舟「卫戍协议:盟约」非官方同人联机网页复刻(1–4 人合作,Node.js 服务器 + 浏览器客户端)",
+1 -1
View File
@@ -639,7 +639,7 @@ async function main() {
else console.error('[boot] failed to start', e); else console.error('[boot] failed to start', e);
process.exit(1); process.exit(1);
} }
console.log(`\n 卫戍协议:盟约 · Stronghold Protocol: Covenant v${APP_VERSION}`); console.log(`\n 卫戍协议:盟约 · Stronghold Protocol: Alliance v${APP_VERSION}`);
console.log(` Local: ${srv.url}`); console.log(` Local: ${srv.url}`);
if (srv.host === '0.0.0.0' || srv.host === '::') { if (srv.host === '0.0.0.0' || srv.host === '::') {
for (const u of lanUrls(srv.port)) console.log(` LAN: ${u}`); for (const u of lanUrls(srv.port)) console.log(` LAN: ${u}`);
+16 -1
View File
@@ -37,10 +37,25 @@ test('the release version is what players see', () => {
assert.match(read('public/js/screens/title.js'), /v\$\{APP_VERSION\}/, 'title screen footer'); assert.match(read('public/js/screens/title.js'), /v\$\{APP_VERSION\}/, 'title screen footer');
assert.ok(!/PROTOCOL v1/.test(read('public/js/screens/title.js')), 'no protocol number posing as a version'); assert.ok(!/PROTOCOL v1/.test(read('public/js/screens/title.js')), 'no protocol number posing as a version');
const server = read('server/index.js'); const server = read('server/index.js');
assert.match(server, /Stronghold Protocol: Covenant v\$\{APP_VERSION\}/, 'boot banner'); assert.match(server, /Stronghold Protocol: Alliance v\$\{APP_VERSION\}/, 'boot banner');
assert.match(server, /app: APP_VERSION/, '/healthz'); assert.match(server, /app: APP_VERSION/, '/healthz');
}); });
test('the English title is the official one: Stronghold Protocol: Alliance (GitHub issues #38 / #42)', () => {
// EN client data, activity_table basicInfo.act2autochess.name = "Stronghold Protocol: Alliance" (CN 卫戍协议:盟约);
// the project used to call it "Covenant". The Chinese title stays 卫戍协议:盟约; the repository keeps its name.
const readme = read('README.md');
assert.match(readme.split('\n')[0], /^# 卫戍协议:盟约 · Stronghold Protocol: Alliance$/, 'README title');
assert.match(readme, /mode \*Stronghold Protocol: Alliance\*/, 'README English summary');
assert.match(read('server/index.js'), /卫戍协议:盟约 · Stronghold Protocol: Alliance v/, 'boot banner');
assert.equal(pkg.name, 'stronghold-protocol-alliance');
assert.equal(lock.name, pkg.name);
assert.equal(lock.packages[''].name, pkg.name);
for (const f of ['README.md', 'server/index.js', 'package.json', 'package-lock.json', 'NOTICE.md', 'public/index.html', 'docs/DEPLOY.md']) {
assert.ok(!/covenant/i.test(read(f)), `${f}: no "Covenant" title left`);
}
});
test('GPL-3.0-or-later: LICENSE, package metadata and notices', () => { test('GPL-3.0-or-later: LICENSE, package metadata and notices', () => {
const license = read('LICENSE'); const license = read('LICENSE');
assert.match(license.slice(0, 200), /GNU GENERAL PUBLIC LICENSE\s+Version 3, 29 June 2007/); assert.match(license.slice(0, 200), /GNU GENERAL PUBLIC LICENSE\s+Version 3, 29 June 2007/);