feedback6: version 0.2.1 — package.json / package-lock.json / APP_VERSION (DEV_BUILD turns false: the title-screen dev tag, the boot warning and the package guard go)

- CHANGELOG 0.2.1 (2026-10-07): the streams' lines collected (新功能: the update package and MANIFEST.json; 规则(按官方):
  联防 on the round's battlefield, 突袭 onto a teammate's half, full potential, the replace dialog for consumables,
  the 外勤医疗 Touch, 凋亡, 贾维's 拉普兰德, the 频次 器物 / leader summons; 界面: the collapse arrow, 自选 picks in the bond
  lists, flyers, enemy animations, the Touch card, Esc in the 自选 picker; 联机与大厅: battle messages while a battle
  loads; 工具与开发: the update build, .gitignore), one intro paragraph.
- README: the dev warning under the title removed, the release badge, 「当前版本 0.2.1」; DESIGN's version line names
  0.2.1 (§26) as the state described; §26's intro says when the dev line shipped.
- Tests: version, docs-consistency, docs-paths, package, i18n-packs, update-package, update-boot 80 / 80.
This commit is contained in:
sganggs committed 2026-10-07 19:35:30 +08:00
1 parent 1b75bb9229
commit 97152828c3
7 files changed
+46 -13

No files matched your search

+38
View File
@@ -1,5 +1,43 @@
# 更新记录
## 0.2.1 — 2026-10-07
0.2.0 之后的快速更新:联防改回在本回合的战场上进行(0.2.0 的联防地图没有任何地形,影响游玩),突袭在战场两边都有人时可以跳到队友的半场,干员按满潜能计算,并修复了 GitHub 上反馈的问题、移植了多位贡献者的 PR。从这个版本起,Releases 里除了完整包和精简包,还有只含改动文件的更新包,可以直接覆盖到用 0.2.0 整合包装好的文件夹上。规则对照官方数据和 PRTS 核对,详见 DESIGN §26([docs/history/0.2.1.md](docs/history/0.2.1.md))。
### 新功能
- **更新包** `Stronghold-Protocol-v0.2.1-update.zip`:只含比 0.2.0 改动过的文件,用来把用 0.2.0 完整包或精简包装好的文件夹升级到 0.2.1,不用重新下载整个包。停止服务器,把 zip 里 `Stronghold-Protocol` 文件夹的内容合并到安装文件夹、覆盖同名文件,再照常启动:启动时先按 `MANIFEST.json` 核对全部程序文件、删除新版本不再使用的旧文件(自己改过的文件不会删),然后正常运行;如果文件夹不是 0.2.0 的整合包(例如 0.1.x,或程序文件被改过),会提示下载完整包,服务器不启动。更新包不联网、不会自动更新,和完整包一样从 Releases 手动下载;用法见 README「方式一」和 [docs/DEPLOY.md](docs/DEPLOY.md) 第 1.5 节(维护者决定 0.2.1 起每个版本都提供)。
- 三种整合包都带上 `MANIFEST.json`(每个程序文件的大小和校验值),`npm run doctor` 多了一行「文件校验」,随时显示程序文件是否与这个版本一致。
### 规则(按官方)
- 联防阶段改回在本回合的战场上进行:地形、水池、箱子和装置都和官方一样保留,两名支援者分站左右两个半场(0.1.x 的做法)。0.2.0 改用的空马路其实是所有波次模板关卡共用的占位地图,现已撤回;0.2.0 的其他联防修正(突袭和乌尔比安不跳到没人的另一半、悬赏归属、联防音乐、结算框)都保留(GitHub #244,感谢 @alien-zzy、@RushFTK)。
- 突袭成员可以跳到队友的半场了,但只限两边都有人的战场:两人支援的联防,以及最终攻势、隐秘核心里同组两人的领袖战场。只有一人支援的联防和独自一人的领袖战场仍只跳自己那一半,也仍然不会落到手牌和临时整备区那两排;乌尔比安三技能的【移动】仍只落在自己的半场(维护者 2026-10-07 的决定,放宽 0.2.0「只跳到自己棋盘范围内」的规则)。
- 干员按满潜能计算(官方数值):所有干员——精锐和自选干员也一样——都带上全部潜能加成:部署费用、再部署时间、攻击力 / 生命 / 防御 / 法抗 / 攻速,以及「天赋效果增强」(模组天赋同样);召唤物的天赋也按召唤者的满潜能取值(如夕的“小自在”、凯尔希的 Mon3tr、望的棋子多 1 枚),但不继承召唤者的属性加成;补位和自选里的原型干员(预备干员、郁金香等)官方数据没有潜能,数值不变。例如一阶刺玫从攻击 413、费用 17 变为攻击 435、费用 15(与官方赛事视频一致),砾的再部署时间从 18 秒变为 16 秒,至简从 80 秒变为 70 秒;干员调配的局内数值和详情卡同步显示新数值(GitHub #252、PR #255,感谢 @SpiritedAwayCN)。
- 干员两个装备栏都满时,给他装备盟约之币、博士投影这类装备即销毁的道具,也会弹出「替换装备」窗口:先销毁你选中的那件,再触发道具效果,干员留下一个空栏位(官方规则:装备达到上限再佩戴会改为替换)。此前普通博士投影不弹窗、直接销毁最早装上的那件装备,盟约之币等则两件装备都保留;博士投影装给精锐干员仍会被拒绝,此时什么都不销毁。人机使用加资金这类对谁都一样的道具时,优先装给有空栏位的干员(GitHub #263,PR #264,感谢 @SpiritedAwayCN)。
- 策略「Touch」(外勤医疗)场上的 Touch:技能范围里(比平时的攻击范围往前远两格)有受伤的友军就会开三技能恳切福音,不用再等伤员走进原来的攻击范围,和补位的 Touch 一样(维护者 2026-10-05「开技能后范围变大就按大范围判断」的规则;GitHub #260,PR #278,感谢 @CurlyZhu、@IceCodeNew)。
- 凋亡:干员凋亡爆发期间每秒损失的 1 点技力连同已经存好的充能一起扣,不再只扣正在充的那一格——技力满的技能扣了一秒就不再就绪,可充能的技能充能次数跟着往下掉;正在持续中的技能照旧不受影响(PR #262,感谢 @siruimei07)。
- 拉普兰德:贾维策略在第 6 次刷新送来的拉普兰德(或因此合成的精锐)不会在送来的这次刷新里就叠【叙拉古】层数,她的「本回合首次主动刷新」是下一次手动刷新;合成的精锐仍算新的一只(PR #196,感谢 @SpiritedAwayCN)。
- 「频次」器物(瑞印、卷轴、铜镜、镇纸、茶器、矛头、灯盘)的所需击打次数随难度和回合的敌人生命加成变化:吃「攻坚装备」系列的加成、不吃「补给线 / 补给线II」(官方数据的排除名单正是这 14 种器物),例如单人标准的青铜镜从 30 次变为 23 次,同盟终极第 6 轮为 62 次、第 14 轮为 129 次;领袖在战斗中召唤的妖怪、刺胄之弹、“裂管之音”/“断弦之音”、不祥幻影也吃当回合的敌人生命 / 攻击 / 移速加成(刺胄之弹、余音的击打次数随之变化),领袖本体的生命池仍不受影响(PR #272,感谢 @CXUtk)。
### 界面
- 局内盟约栏的收起按钮改成半透明的小箭头,不再是带边框的「收起」按钮(维护者反馈)。
- 盟约详情的成员列表会列出你的自选干员了:还没买到(或调度中心等级不够、商店里还刷不出来)时和没有的成员一样显示为灰色,买到后照常亮起,带「自选」标记,点开是这名干员的详情卡;本局禁用了它全部盟约的自选干员显示红色 ✕。观看队友时点他场上的自选干员,打开的是这名干员的详情卡,不再是空的「甄选干员」(维护者反馈)。
- 飞行敌人飞过高台或禁区方块时不再一高一低像走楼梯:按官方,飞行高度从路面算起、固定离地约 1.3 格,影子仍落在下面的格子上;站在高台上的干员照旧站在台上(GitHub #277,感谢 @FrogThai)。
- 敌人动画补全:巨大的丑东西和自在重生时播放自己的重生动画(巨大的丑东西之后变成逃跑的大祭司),巨大的丑东西被晕眩时播放自己的晕眩动画,猎狗pro和深池侦察犬改用跑步动画移动(PR #275,感谢 @xcdoge)。
- 策略「Touch」(外勤医疗)场上的 Touch 和预备干员-医疗,详情卡显示为「干员」和职业「医疗」,列出特性、技能(技力、持续时间)和天赋,不再标成召唤物、只有基础属性;恳切福音下面注明实际是生命值低于一半才提高治疗量(PRTS 修正了原文的「不高于」,模拟也是这样算的);补位 Touch 的三技能同样有这行说明(GitHub #260,PR #278,感谢 @CurlyZhu、@IceCodeNew)。
- 「干员调配 → 自选编队」的选择干员窗口里按 Esc 只关闭这个窗口(和「取消」一样),不再连同整个调配页面一起关闭、回到大厅(GitHub #284,PR #286 的思路,感谢 @Xinglan233)。
### 联机与大厅
- 浏览器还在加载战斗模块、或正在静默追赶战场进度(重连、观战)时,服务器发来的接管和强制结束不再丢失:战斗建好后按收到的顺序生效——被接管的不再上报,被强制结束的立即结束并上报结果;准备期间重复收到同一场战斗的开始消息只建一场,切到别的战场也不会丢掉自己负责上报的战斗,进入下一回合整备时还在准备的战斗会一并清掉,不再在后台继续运行和上报(PR #266,感谢 @siruimei07)。
### 工具与开发
- 打包工具新增更新包:`npm run package -- --update --from <之前每个 0.2.x 版本的完整包> --out <目录>`,只收改动过的文件和要删除的旧文件清单(docs/DEPLOY.md 第 7 节)。
- .gitignore 忽略本地 npm 缓存目录 .npm-cache/(GitHub #258,感谢 @qfmc7040)。
## 0.2.0 — 2026-10-07
0.2.0 是一个大版本:加入了补位、自选编队、多语言(English、日本語、한국어、繁體中文)和自定义快捷键,按官方数据和 PRTS 修正了一批规则,并修复了社区和 GitHub 上反馈的问题;同时为了便于维护和接受贡献,把代码里最大的几个文件拆开了(拆分不改变玩法,有一套固定种子的「黄金结果」逐项核对)。0.1.4 的全部修复都已移植到新的代码结构。规则对照官方数据和 PRTS 核对;查不到出处的标了推断,详见 DESIGN §25([docs/history/0.2.0.md](docs/history/0.2.0.md))。有意和官方不同的几条单独写在「有意与官方不同的调整」里。
+2 -7
View File
@@ -1,13 +1,8 @@
# 卫戍协议:盟约 · Stronghold Protocol: Alliance
> [!WARNING]
> **开发版(dev 分支):不稳定,请勿用于公开服务器。** 这里是 0.2.1 的开发中代码,规则、数据和存档格式随时会变,可能有未发现的问题。想玩或开服请使用 [Releases](../../releases/latest) 页面的正式版整合包,或 `master` 分支。反馈问题时请注明「dev」和版本号(标题页底部、启动横幅和 `/healthz` 都会显示 `0.2.1-dev`)。开发版与正式版在同一地址下共用浏览器里保存的设置和登录信息,来回切换后如果界面异常,清除这个网站的数据即可。开发版不提供整合包。
>
> *Development branch: unstable — do not run it as a public server. Rules, data and saved settings may change at any time. Play or host the latest release (or the `master` branch) instead; when you report a bug from this branch, say "dev" and the version shown on the title screen. It shares the browser's saved settings with a release served at the same address — clear the site's data if the interface misbehaves after switching. No release zips are built from this branch.*
《明日方舟》季节性自走棋塔防玩法「卫戍协议:盟约」的**非官方同人复刻**:浏览器即开即玩,单人或 1–4 人联机合作。
![version](https://img.shields.io/badge/version-0.2.1--dev-orange)
![version](https://img.shields.io/badge/version-0.2.1-2ea44f)
![license](https://img.shields.io/badge/code%20license-GPL--3.0--or--later-blue)
![node](https://img.shields.io/badge/node-22%20%7C%2024-339933)
@@ -42,7 +37,7 @@ English summary: [below](#english).
- **独立模拟**(单人)与**同盟模拟**(1–4 人**合作**,没有 PvP;空位可以加 AI 队友)。
- 服务器是一个 Node.js 程序,**战斗在各玩家的浏览器里模拟**(和官方一样),服务器只管经济与回合,一台低功耗小主机就能开服。
- 本分支是 0.2.1 开发版(未发布);最新正式版是 0.2.0,见 [CHANGELOG.md](CHANGELOG.md)。仍有少数规则按推断实现,与官方不一致的地方欢迎在 Issue 里反馈。
- 当前版本 0.2.1:联防改回在本回合的战场上进行,干员按满潜能计算,并修复了 0.2.0 发布后玩家和 GitHub 上反馈的问题;从这个版本起提供只含改动文件的更新包,详见 [CHANGELOG.md](CHANGELOG.md)。仍有少数规则按推断实现,与官方不一致的地方欢迎在 Issue 里反馈。
## 功能一览
+1 -1
View File
@@ -4,7 +4,7 @@ This is the **single source of truth** for every implementer. Research lives in
Language: player-facing text is **Simplified Chinese** by default, with an English switch since 0.2.0 (§25.2, docs/I18N.md: UI strings through `t('中文')`, game texts from the official Chinese data or the official EN client's). Code, comments and identifiers are English.
Versions: the first public release was **0.1.0** (2026-10-02, the state of §0–§20.15); the releases after it add the player feedback and GitHub reports — 0.1.1 §21, 0.1.2 §22, 0.1.3 §23, 0.1.4 §24 — and **0.2.0** (2026-10-07; `CHANGELOG.md`) the maintainability refactor, two languages, 补位, 自选编队 and their fidelity work — §25. The 0.2.1 dev line (`package.json`, `shared/constants.js APP_VERSION`: `0.2.1-dev`) adds §26 and is the state described by this document. The labels v1 / v2 / v2.1–v2.5.2 in §0, §14–§20 and in the BALANCE / SIM comparisons name the design generations and the private playtest builds that came before it; they are kept as history.
Versions: the first public release was **0.1.0** (2026-10-02, the state of §0–§20.15); the releases after it add the player feedback and GitHub reports — 0.1.1 §21, 0.1.2 §22, 0.1.3 §23, 0.1.4 §24 — and **0.2.0** (2026-10-07; `CHANGELOG.md`) the maintainability refactor, two languages, 补位, 自选编队 and their fidelity work — §25 — and **0.2.1** (2026-10-07; `package.json`, `shared/constants.js APP_VERSION`) the 联防 battlefield restored, full potential and the GitHub fixes after it — §26 — and is the state described by this document. The labels v1 / v2 / v2.1–v2.5.2 in §0, §14–§20 and in the BALANCE / SIM comparisons name the design generations and the private playtest builds that came before it; they are kept as history.
---
+1 -1
View File
@@ -4,7 +4,7 @@ Part of [DESIGN.md](../DESIGN.md) (the index; section numbers are global).
## 26. 0.2.1 — after the 0.2.0 release
0.2.1 is built on `feedback6`, branched from the 0.2.0 release (tag v0.2.0) and marked `0.2.1-dev` until it ships. Its
0.2.1 is built on `feedback6`, branched from the 0.2.0 release (tag v0.2.0) and marked `0.2.1-dev` until it shipped (2026-10-07). Its
workstreams branch off it as `fb6-*`, each merged after review with its golden scenarios named. Each rule was checked
against the official data and PRTS; anything no source backs is marked [ASSUMED]. Where each is handled: the 突袭
landing on a teammate's half of a shared field → §26.1; 联防 back on the round's battlefield → §26.2; the 自选 picks in
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "stronghold-protocol-alliance",
"version": "0.2.1-dev",
"version": "0.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "stronghold-protocol-alliance",
"version": "0.2.1-dev",
"version": "0.2.1",
"hasInstallScript": true,
"license": "GPL-3.0-or-later",
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "stronghold-protocol-alliance",
"version": "0.2.1-dev",
"version": "0.2.1",
"private": true,
"description": "明日方舟「卫戍协议:盟约」非官方同人联机网页复刻(1–4 人合作,Node.js 服务器 + 浏览器客户端)",
"license": "GPL-3.0-or-later",
+1 -1
View File
@@ -5,7 +5,7 @@ import { N_ } from './i18n.js';
export const PROTOCOL_VERSION = 1;
/** Release version shown to players (title screen, server banner, /healthz). Kept equal to package.json "version"
* (test/version.test.js); PROTOCOL_VERSION above is the separate wire-format number. */
export const APP_VERSION = '0.2.1-dev';
export const APP_VERSION = '0.2.1';
/** A development build (the public `dev` branch): the title screen, the boot banner and the README say so, and
* tools/package.mjs refuses to build a release zip from it without --allow-dev. */
export const DEV_BUILD = /-dev$/.test(APP_VERSION);