Add per-script and plugin versioning with changelog rules
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# Repository instructions
|
||||
|
||||
## Versioning and changelog
|
||||
|
||||
- Follow the component boundaries and version policy in
|
||||
[README.md](README.md#versioning). [versions.json](versions.json) is the
|
||||
authoritative source for current TWS component versions.
|
||||
- Each `.gsc` file has its own version in `versions.json`, keyed by its exact
|
||||
filename. Every completed edit to a game script must bump that script's
|
||||
version and add a matching entry to [CHANGELOG.md](CHANGELOG.md) in the same
|
||||
change. This includes refactors and comment-only edits to script source.
|
||||
Bump only scripts whose source changes; an unchanged script does not inherit
|
||||
a bump from its game, a shared helper, or its T5/T6 counterpart. Document
|
||||
required dependency versions when a shared helper or native API change affects
|
||||
compatibility.
|
||||
- Give each new script its own `1.0.0` entry. For a rename, carry forward and
|
||||
bump its version under the new filename, recording both filenames in the
|
||||
changelog. For removal, record the next version as the final removal entry in
|
||||
the changelog and remove the filename from the active manifest.
|
||||
- Every completed change to a plugin's source, pinned dependencies, or build
|
||||
behavior must bump that plugin's version and add a matching changelog entry.
|
||||
Changes to shared build/dependency tooling that affect both plugins require
|
||||
both versions to increase.
|
||||
- Bump each affected script or plugin once per logical change, not once per
|
||||
editing operation. Use the highest applicable bump: patch for fixes or
|
||||
internal changes, minor for compatible features, major for breaking changes.
|
||||
Reset lower version fields when increasing the minor or major version.
|
||||
- Documentation-only and test-only changes do not require a component version
|
||||
bump. A documentation or test edit accompanying a script/plugin change does
|
||||
not exempt that component from a bump. Ignored build outputs and dependency
|
||||
checkouts do not count as source changes.
|
||||
- Add entries newest first under the actual change date (`YYYY-MM-DD`), with a
|
||||
heading or table row identifying each affected script or plugin and its new
|
||||
version. Record what changed,
|
||||
affected source files, compatibility requirements, and deployment steps,
|
||||
including whether a map restart or full server-process restart is required.
|
||||
State explicitly when there is no new dependency requirement or deployment
|
||||
action. Preserve previous entries; extend the current entry while completing
|
||||
the same logical change.
|
||||
- Consider the matching T5/T6 implementation for every game-specific change.
|
||||
Adapt companion changes to that engine and bump each component actually
|
||||
changed. If the companion needs no change, briefly explain why in the
|
||||
changelog entry. Version numbers do not need to match across components.
|
||||
- Keep TWS component versions separate from upstream revision pins and the
|
||||
native loader's existing `plugin_version()` value. A TWS version bump alone
|
||||
must not rewrite either. Never invent historical releases or describe an
|
||||
unperformed build, test, or deployment as completed.
|
||||
|
||||
## Verification
|
||||
|
||||
- Before finishing, confirm that every affected component has a version bump
|
||||
and a changelog entry with the same version (or its initial/removal entry).
|
||||
Ensure every existing game script has exactly one filename entry in
|
||||
`versions.json`, with no stale entries for removed scripts. Check JSON validity,
|
||||
local documentation links, and `git diff --check` after metadata changes.
|
||||
- Run the checks relevant to the change using the root and component READMEs.
|
||||
Report checks performed and any remaining Windows/Plutonium validation.
|
||||
Documentation or version-metadata changes alone do not require game builds.
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
# Changelog
|
||||
|
||||
Changes are listed newest first, with an independent version for every individual
|
||||
T5/T6 script and each native plugin. Current versions are recorded in
|
||||
[versions.json](versions.json); see the [version policy](README.md#versioning).
|
||||
|
||||
## 2026-10-12
|
||||
|
||||
### Initial versioning baseline
|
||||
|
||||
Established independent version `1.0.0` entries for each of the 14 scripts and
|
||||
both plugins from source commit
|
||||
`b508b6739b185d5048e8a8f96ccb16e429f1d37a`. This records the existing source state;
|
||||
earlier changes remain in Git history without retroactively assigned versions.
|
||||
The baseline introduces `versions.json`, this changelog, the README links and
|
||||
version policy, and the maintenance rules in `AGENTS.md`. It changes no game
|
||||
script or plugin behavior and requires no deployment by itself.
|
||||
|
||||
The component entries below summarize the existing functionality and deployment
|
||||
requirements for servers adopting this baseline. Version assignment does not
|
||||
indicate that a Windows build, live-game validation, or deployment was performed.
|
||||
|
||||
### T5 script baselines
|
||||
|
||||
Each row is a separately versioned script under `t5/scripts/`.
|
||||
|
||||
| Script | Version | Existing functionality |
|
||||
| --- | --- | --- |
|
||||
| `tws_t5_afk.gsc` | `1.0.0` | AFK toggle, protection, and indicator |
|
||||
| `tws_t5_common.gsc` | `1.0.0` | Shared configuration, helpers, commands, and player dispatchers |
|
||||
| `tws_t5_hud.gsc` | `1.0.0` | Timers, zombie count, and health display |
|
||||
| `tws_t5_join.gsc` | `1.0.0` | Immediate join for newcomers |
|
||||
| `tws_t5_leaderboard.gsc` | `1.0.0` | Map record announcements and `.leaders` command |
|
||||
| `tws_t5_lock.gsc` | `1.0.0` | Lobby lock at the configured round milestone |
|
||||
| `tws_t5_telemetry.gsc` | `1.0.0` | Game reports, durable boundary retries, balance and cumulative score |
|
||||
|
||||
- Compatibility: these initial script versions use `tws_t5_common.gsc` `1.0.0`;
|
||||
lobby lock also needs `tws_t5_hud.gsc` `1.0.0`. Telemetry and leaderboard use
|
||||
TWS T5 plugin `1.0.0`. Telemetry additionally requires
|
||||
Electric Cherry's match/sequence deduplication and `score_total` support;
|
||||
follow the [receiver and plugin rollout order](README.md#telemetry-delivery-and-rollout-t5-and-t6).
|
||||
Disabling telemetry by dvar does not remove its native linking requirements.
|
||||
- Deployment: follow the [T5 installation/upgrade instructions](t5/scripts/README.md#install--upgrade),
|
||||
copy the desired scripts and their required dependencies to
|
||||
`storage/t5/scripts/sp/`, and restart the map.
|
||||
Installing or updating the required plugin needs a full server-process restart.
|
||||
|
||||
### T6 script baselines
|
||||
|
||||
Each row is a separately versioned script under `t6/scripts/`, adapted to T6 APIs
|
||||
and map variants.
|
||||
|
||||
| Script | Version | Existing functionality |
|
||||
| --- | --- | --- |
|
||||
| `tws_t6_afk.gsc` | `1.0.0` | AFK toggle, protection, and indicator |
|
||||
| `tws_t6_common.gsc` | `1.0.0` | Shared configuration, helpers, commands, and player dispatchers |
|
||||
| `tws_t6_hud.gsc` | `1.0.0` | Timers, zombie count, and health display |
|
||||
| `tws_t6_join.gsc` | `1.0.0` | Immediate join for newcomers |
|
||||
| `tws_t6_leaderboard.gsc` | `1.0.0` | Map record announcements and `.leaders` command |
|
||||
| `tws_t6_lock.gsc` | `1.0.0` | Lobby lock at the configured round milestone |
|
||||
| `tws_t6_telemetry.gsc` | `1.0.0` | Game reports, durable boundary retries, balance and cumulative score |
|
||||
|
||||
- Compatibility: these initial script versions use `tws_t6_common.gsc` `1.0.0`;
|
||||
lobby lock also needs `tws_t6_hud.gsc` `1.0.0`. Telemetry and leaderboard use
|
||||
TWS T6 plugin `1.0.0`. Telemetry additionally requires
|
||||
Electric Cherry's match/sequence deduplication and `score_total` support;
|
||||
follow the [receiver and plugin rollout order](README.md#telemetry-delivery-and-rollout-t5-and-t6).
|
||||
Disabling telemetry by dvar does not remove its native linking requirements.
|
||||
- Deployment: follow the [T6 installation instructions](t6/scripts/README.md#install),
|
||||
copy the desired scripts and their required dependencies to
|
||||
`storage/t6/scripts/zm/`, and restart the map.
|
||||
Installing or updating the required plugin needs a full server-process restart.
|
||||
|
||||
### T5 plugin — 1.0.0
|
||||
|
||||
- Baseline: the TWS-maintained plugin, including configurable HTTP deadlines,
|
||||
status/timing diagnostics, and durable telemetry storage and response helpers.
|
||||
- Source covered: `t5/plugins/tws-t5-gsc-utils/` and the existing shared plugin
|
||||
build/dependency tooling under `tools/`.
|
||||
- Compatibility: provides the native functions used by `tws_t5_telemetry.gsc`
|
||||
`1.0.0` and `tws_t5_leaderboard.gsc` `1.0.0`.
|
||||
Upstream source and dependency pins remain in the plugin's `upstream.json`.
|
||||
Upstream binary downloads do not include these TWS changes.
|
||||
- Deployment: [build the x86 DLL on Windows](README.md#building-plugins), install
|
||||
`tws-t5-gsc-utils.dll` in `Plutonium/plugins/`, remove the old upstream DLL if
|
||||
present, and restart the full server process before loading dependent scripts.
|
||||
|
||||
### T6 plugin — 1.0.0
|
||||
|
||||
- Baseline: the matching TWS T6 plugin with configurable HTTP deadlines,
|
||||
status/timing diagnostics, and durable telemetry storage and response helpers.
|
||||
- Source covered: `t6/plugins/tws-t6-gsc-utils/` and the existing shared plugin
|
||||
build/dependency tooling under `tools/`.
|
||||
- Compatibility: provides the native functions used by `tws_t6_telemetry.gsc`
|
||||
`1.0.0` and `tws_t6_leaderboard.gsc` `1.0.0`.
|
||||
Upstream source and dependency pins remain in the plugin's `upstream.json`.
|
||||
Upstream binary downloads do not include these TWS changes.
|
||||
- Deployment: [build the x86 DLL on Windows](README.md#building-plugins), install
|
||||
`tws-t6-gsc-utils.dll` in `Plutonium/plugins/`, remove the old upstream DLL if
|
||||
present, and restart the full server process before loading dependent scripts.
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Combined working repo for the TWS Plutonium Zombies scripts and native plugins across two games.
|
||||
|
||||
[Changelog](CHANGELOG.md) · [Current component versions](versions.json)
|
||||
|
||||
## Layout
|
||||
|
||||
- [t5/scripts/](t5/scripts/) — T5 GSC modules, [README](t5/scripts/README.md), and [notes](t5/scripts/NOTES.md).
|
||||
@@ -12,6 +14,40 @@ Combined working repo for the TWS Plutonium Zombies scripts and native plugins a
|
||||
The scripts still deploy to the game's existing `storage/t5/scripts/sp/` or
|
||||
`storage/t6/scripts/zm/` directories; the new source layout does not change GSC namespaces.
|
||||
|
||||
## Versioning
|
||||
|
||||
[versions.json](versions.json) records the current source version of each
|
||||
individual script and each native plugin. Every `.gsc` file has its own version,
|
||||
keyed by its exact filename. Changing one script bumps only that script's version;
|
||||
other scripts increase only when their own source changes.
|
||||
|
||||
| Component | Manifest key | Source |
|
||||
| --- | --- | --- |
|
||||
| Each T5 script | Exact filename, e.g. `tws_t5_afk.gsc` | Corresponding file in `t5/scripts/` |
|
||||
| Each T6 script | Exact filename, e.g. `tws_t6_afk.gsc` | Corresponding file in `t6/scripts/` |
|
||||
| T5 plugin | `t5-plugin` | `t5/plugins/tws-t5-gsc-utils/` |
|
||||
| T6 plugin | `t6-plugin` | `t6/plugins/tws-t6-gsc-utils/` |
|
||||
|
||||
Every completed script or plugin change includes a version bump for each
|
||||
affected component and an entry in [CHANGELOG.md](CHANGELOG.md). Each entry
|
||||
identifies each changed script or plugin and its new version, compatibility
|
||||
requirements, and deployment steps. Shared helpers such as `tws_t5_common.gsc`
|
||||
have their own versions; document required dependency versions when compatibility
|
||||
changes. A shared helper change alone does not bump its unchanged consumers.
|
||||
Changes to shared build/dependency tooling also bump the plugins they affect.
|
||||
|
||||
Versions use `MAJOR.MINOR.PATCH`: increase the patch for fixes and internal
|
||||
changes, the minor for compatible features, and the major for breaking changes
|
||||
to commands, configuration, native APIs, or data contracts. Reset lower fields
|
||||
when increasing the minor or major. Bump once per logical change; documentation-only
|
||||
and test-only changes are exempt. All 14 scripts and both plugins advance independently.
|
||||
|
||||
The initial `1.0.0` versions document the existing source baseline. These TWS
|
||||
versions are separate from upstream revisions in each plugin's `upstream.json`
|
||||
and the existing native loader `plugin_version()` value. Component versions
|
||||
identify source changes; consult the changelog for compatible script/plugin
|
||||
combinations and receiver requirements. Maintenance rules are in [AGENTS.md](AGENTS.md).
|
||||
|
||||
## Building plugins
|
||||
|
||||
Plugin source is vendored as regular tracked files so local modifications travel
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"tws_t5_afk.gsc": "1.0.0",
|
||||
"tws_t5_common.gsc": "1.0.0",
|
||||
"tws_t5_hud.gsc": "1.0.0",
|
||||
"tws_t5_join.gsc": "1.0.0",
|
||||
"tws_t5_leaderboard.gsc": "1.0.0",
|
||||
"tws_t5_lock.gsc": "1.0.0",
|
||||
"tws_t5_telemetry.gsc": "1.0.0",
|
||||
"tws_t6_afk.gsc": "1.0.0",
|
||||
"tws_t6_common.gsc": "1.0.0",
|
||||
"tws_t6_hud.gsc": "1.0.0",
|
||||
"tws_t6_join.gsc": "1.0.0",
|
||||
"tws_t6_leaderboard.gsc": "1.0.0",
|
||||
"tws_t6_lock.gsc": "1.0.0",
|
||||
"tws_t6_telemetry.gsc": "1.0.0",
|
||||
"t5-plugin": "1.0.0",
|
||||
"t6-plugin": "1.0.0"
|
||||
}
|
||||
Reference in New Issue
Block a user