Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/unsupported_gml_api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ body:
attributes:
label: Versions
description: GM2Godot commit or release, GameMaker version, Godot version, and target platform.
placeholder: "GM2Godot 0.7.63, GameMaker LTS 2026, Godot 4.7.1, Windows"
placeholder: "GM2Godot 0.7.64, GameMaker LTS 2026, Godot 4.7.1, Windows"
validations:
required: true
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 0.7.64 - 2026-09-03

- Documented `particles/` and `particlesystems/` in the complete generated-project tree and converter-managed output-root list.
- Bound the marked canonical Wiki list to the production `MANAGED_OUTPUT_DIRECTORIES` order with an executable documentation-health check so future ownership changes cannot silently drift from user guidance.
- Kept GameMaker LTS 2026 conversion behavior and exact Godot 4.7.1 output unchanged while preparing the reviewed Wiki source for publication.

## 0.7.63 - 2026-09-03

- Normalized only CRLF and lone-CR line endings when the privileged dependency-submission validator compares native lock artifacts with canonical Git blob bytes.
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ Version 0.7.62 makes `requirements-bootstrap.txt` the only reviewed source for t

Version 0.7.63 makes the privileged dependency-submission validator compare native lock artifacts with canonical Git blob bytes after normalizing only CRLF and lone-CR line endings. Exact native bytes remain bound to their receipt hashes, while every non-newline content, provenance, pin, or ordering difference still fails closed. This restores verified Linux, macOS, and Windows dependency-graph submission without changing GameMaker LTS 2026 conversion behavior or exact Godot 4.7.1 output.

Version 0.7.64 makes the canonical generated-project documentation enumerate every converter-managed output root in exact production order, including `particles/` and `particlesystems/`. An executable documentation-health check binds the marked list to `MANAGED_OUTPUT_DIRECTORIES`, so future ownership changes cannot silently drift from Wiki guidance. This documentation-only release leaves GameMaker LTS 2026 conversion behavior and exact Godot 4.7.1 output unchanged.

## What GM2Godot Is and Isn't

**GM2Godot is:**
Expand All @@ -104,7 +106,7 @@ The full compatibility roadmap lives in [`todo-list/`](todo-list/README.md). It

## Releases

Current source version: `0.7.63`.
Current source version: `0.7.64`.

Downloadable releases include Windows (`.exe`), macOS (`.dmg` with `.app`), and Linux binaries. You can also run from source on Windows, macOS, and Linux.
The packaged Linux artifact is validated on Ubuntu 24.04 x86_64. Its glibc 2.39 requirement is necessary but does not make other distributions a validated target; they must also supply compatible system, OpenGL/EGL, and X11 libraries. The reviewed Linux package manifest installs Ubuntu's `libegl1` and `libgl1` providers for QtGui together with the required XCB client libraries. The release job rejects unresolved-library warnings, extracts the final ZIP, and proves that its GUI reaches the event loop through the real `qxcb` platform under Xvfb before upload.
Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/Compatibility-and-Limitations.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Compatibility and Limitations

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/Contributing-and-Testing.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing and Testing

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/Diagnostics-and-Troubleshooting.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Diagnostics and Troubleshooting

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down
22 changes: 20 additions & 2 deletions docs/wiki/Generated-Project-and-Runtime.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Generated Project and Runtime

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down Expand Up @@ -32,6 +32,8 @@ GodotProject/
├── included_files/
├── notes/
├── objects/
├── particles/
├── particlesystems/
├── paths/
├── rooms/
├── scripts/
Expand All @@ -44,8 +46,24 @@ GodotProject/

GM2Godot treats these directories as managed output roots:

<!-- managed-output-directories:start -->
- `addons/gm2godot_extensions/`
- `fonts/`, `gm2godot/`, `included_files/`, `notes/`, `objects/`, `paths/`, `rooms/`, `scripts/`, `sequences/`, `shaders/`, `sounds/`, `sprites/`, and `tilesets/`
- `fonts/`
- `gm2godot/`
- `included_files/`
- `notes/`
- `objects/`
- `particles/`
- `particlesystems/`
- `paths/`
- `rooms/`
- `scripts/`
- `sequences/`
- `shaders/`
- `sounds/`
- `sprites/`
- `tilesets/`
<!-- managed-output-directories:end -->

The top-level `default_bus_layout.tres`, `icon.ico`, and `icon.png` are managed files. `project.godot` is jointly managed: GM2Godot can update the generated `GM*` autoload entries and, when a room is generated, set `run/main_scene` from the first GameMaker `RoomOrderNodes` entry. Existing unrelated project settings and unrelated autoloads are preserved.

Expand Down
4 changes: 2 additions & 2 deletions docs/wiki/Home.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# GM2Godot Documentation

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand All @@ -21,7 +21,7 @@ Maintainers should also read [Release and Wiki Maintenance](Maintainer-Release-a

This documentation set describes:

- GM2Godot 0.7.63;
- GM2Godot 0.7.64;
- GameMaker LTS 2026 source projects in the GMS2 runtime family; and
- Godot 4.7.1 output and validation, pinned in CI as `4.7.1.stable.official.a13da4feb`.

Expand Down
6 changes: 3 additions & 3 deletions docs/wiki/Installation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down Expand Up @@ -46,7 +46,7 @@ On Windows, run `Get-FileHash -Algorithm SHA256 .\GM2Godot-windows.zip` in Power

The packaged builds are produced as windowed applications. For the CLI commands in this Wiki, use a source installation.

After launch, confirm that the title bar or **Help → About GM2Godot** shows version `0.7.63`. Click the version in the bottom information bar to browse the ten newest release changelogs; **Show more** appends the next ten.
After launch, confirm that the title bar or **Help → About GM2Godot** shows version `0.7.64`. Click the version in the bottom information bar to browse the ten newest release changelogs; **Show more** appends the next ten.

## Run from source

Expand Down Expand Up @@ -148,6 +148,6 @@ python main.py --version
python main.py list-converters
```

The first command should print `GM2Godot 0.7.63`; the second should list the conversion groups and the exact converter keys accepted by `--only`. The same CLI is also available through `python -m src.cli`.
The first command should print `GM2Godot 0.7.64`; the second should list the conversion groups and the exact converter keys accepted by `--only`. The same CLI is also available through `python -m src.cli`.

Continue with [Quick Start Conversion](Quick-Start-Conversion). If launch or dependency setup fails, see [Diagnostics and Troubleshooting](Diagnostics-and-Troubleshooting).
2 changes: 1 addition & 1 deletion docs/wiki/Maintainer-Release-and-Wiki.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Release and Wiki Maintenance

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down
2 changes: 1 addition & 1 deletion docs/wiki/Quick-Start-Conversion.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Quick Start Conversion

> **Applies to:** GM2Godot 0.7.63 · GameMaker LTS 2026 · Godot 4.7.1
> **Applies to:** GM2Godot 0.7.64 · GameMaker LTS 2026 · Godot 4.7.1
>
> **Last reviewed:** 2026-09-03

Expand Down
2 changes: 1 addition & 1 deletion src/version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION = "0.7.63"
VERSION = "0.7.64"


def get_version():
Expand Down
20 changes: 20 additions & 0 deletions tests/test_documentation_health.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import re
import unittest

from src.conversion.project_godot import MANAGED_OUTPUT_DIRECTORIES
from src.version import get_version


Expand Down Expand Up @@ -138,6 +139,25 @@ def test_wiki_sidebar_and_local_page_links_resolve(self) -> None:
self.assertIn(target_filename, WIKI_PAGES | {"_Sidebar.md"})
self.assertTrue((WIKI_SOURCE_DIR / target_filename).is_file())

def test_wiki_managed_output_roots_match_production(self) -> None:
generated_project = (
WIKI_SOURCE_DIR / "Generated-Project-and-Runtime.md"
).read_text(encoding="utf-8")
start_marker = "<!-- managed-output-directories:start -->"
end_marker = "<!-- managed-output-directories:end -->"
before, separator, remainder = generated_project.partition(start_marker)
self.assertTrue(separator, "Managed-output directory start marker is missing")
managed_roots, separator, after = remainder.partition(end_marker)
self.assertTrue(separator, "Managed-output directory end marker is missing")
self.assertNotIn(start_marker, before + after)
self.assertNotIn(end_marker, before + after)

expected_roots = "\n" + "\n".join(
f"- `{Path(directory).as_posix()}/`"
for directory in MANAGED_OUTPUT_DIRECTORIES
) + "\n"
self.assertEqual(managed_roots, expected_roots)

def test_user_documentation_links_and_guidance_are_current(self) -> None:
readme = (PROJECT_ROOT / "README.md").read_text(encoding="utf-8")
contributing = (PROJECT_ROOT / "CONTRIBUTING.md").read_text(
Expand Down
4 changes: 2 additions & 2 deletions tests/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@


class TestVersion(unittest.TestCase):
def test_release_version_is_0_7_63(self) -> None:
self.assertEqual(get_version(), "0.7.63")
def test_release_version_is_0_7_64(self) -> None:
self.assertEqual(get_version(), "0.7.64")

def test_release_surfaces_match_source_version(self) -> None:
version_source = (PROJECT_ROOT / "src" / "version.py").read_text(
Expand Down