September 13, 2026
Neo Angband: ModForge v0.1.3
Fixed
- A player-authored patch path could pollute
Object.prototype. A dotted field-op path such as__proto__.pollutedwalked the demonstration patch composer’s ordinary property lookup, which resolves an inheritedObject.prototypeproperty the same as an own one. The path segments__proto__,prototype, andconstructorare now rejected outright, and the raw record-file parser requires an operation’spathto be a string before it reaches that composer. - The development preview server’s path containment used a string prefix.
file.startsWith(ROOT)accepts a prefix-matching sibling directory (a request for a repository namedneo-angband-mod-forge-secret, for example), not only a path actually inside the repository. Containment is now checked with a path-awarerelative()comparison, and a malformed percent-encoded request path now returns 400 instead of throwing.
Added a repository-specific SECURITY.md alongside the core policy, covering
the boundaries this repository owns: draft persistence, path validation, ZIP
construction, DOM rendering, session-test refusal, and the preview server.