Skip to content

Commit 616d1de

Browse files
committed
feat: close verified milestone gaps and match Forge versions
1 parent 2824f7a commit 616d1de

45 files changed

Lines changed: 1170 additions & 255 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/build.yml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ jobs:
108108
- name: Summarize remaining release-readiness gates
109109
shell: bash
110110
run: python3 scripts/release_readiness.py --format markdown >> "$GITHUB_STEP_SUMMARY"
111+
- name: Enforce final acceptance before Stable 1.0 and later
112+
run: python3 scripts/release_readiness.py --enforce-production
111113
- name: Upload test evidence
112114
if: always()
113115
uses: actions/upload-artifact@v7
@@ -159,6 +161,12 @@ jobs:
159161
if: runner.os == 'Windows'
160162
shell: bash
161163
run: python scripts/verify_windows_icon.py --exe launcher-desktop/build/compose/binaries/main/app/SyntaxLauncher/SyntaxLauncher.exe
164+
- name: Verify Mojang HTTPS with the packaged runtime
165+
shell: bash
166+
run: |
167+
image=launcher-desktop/build/compose/binaries/main/app/SyntaxLauncher
168+
if [[ "$RUNNER_OS" == macOS ]]; then image="$image.app"; fi
169+
python scripts/verify_native_network.py --image "$image" --platform "${{ matrix.artifact }}"
162170
- name: Install Linux packaging tools
163171
if: runner.os == 'Linux'
164172
run: sudo apt-get update && sudo apt-get install -y rpm fakeroot desktop-file-utils xvfb

‎README.md‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@ Publisher and support: **SyntaxDevTeam / WieszczY**, [[email protected]](mail
1010
1111
SyntaxLauncher is a modern Minecraft launcher from SyntaxDevTeam, written primarily in Kotlin and developed incrementally from a minimal vanilla launcher into a modular launcher with premium authentication, isolated instances, mod loaders, Modrinth integration, modpacks and diagnostics.
1212

13-
The project has implemented a v0.2 Instance Manager, reached **bounded v0.8 Forge/Quilt and v0.9 graphics acceptance**, and completed **v0.10 Modrinth modpack installation** within the documented scope. Official Forge/NeoForge installer smoke tests and three-platform CI packaging pass; the maintainer confirmed private Forge startup and Forge/Quilt mod workflows. Forge remains restricted to Minecraft 1.21.1 / 52.1.20. v0.9 now includes built-in mods/textures/shaders/OptiFine installation and installed-pack controls within the documented compatibility matrix; the maintainer confirmed private v0.9 gameplay acceptance; the broader native/platform matrix remains open. Modrinth modpacks now install into newly prepared games from the built-in catalog. Minecraft Services reconsideration after the first denial, v0.3 real-account acceptance and documented clean-machine Vanilla startup acceptance remain pending. The Kotlin/Compose launcher now connects the offline account, Mojang metadata, verified game preparation, automatic Java runtime installation, metadata-driven LaunchPlan and MinecraftProcessManager to an actual desktop Play workflow. A real clean-machine Minecraft launch is not yet verified.
13+
The project has implemented a v0.2 Instance Manager, reached **bounded v0.8 Forge/Quilt and v0.9 graphics acceptance**, and completed **v0.10 Modrinth modpack installation** within the documented scope. Official Forge/NeoForge installer smoke tests and three-platform CI packaging pass; the maintainer confirmed private Forge startup and Forge/Quilt mod workflows. Forge now discovers modern V2 builds matching the selected Minecraft version; official reference installation tests also cover 1.21.11, 26.2 and 26.3. v0.9 now includes built-in mods/textures/shaders/OptiFine installation and installed-pack controls within the documented compatibility matrix; the maintainer confirmed private v0.9 gameplay acceptance; the broader native/platform matrix remains open. Modrinth modpacks now install into newly prepared games from the built-in catalog. Minecraft Services reconsideration after the first denial, v0.3 real-account acceptance and documented clean-machine Vanilla startup acceptance remain pending. The Kotlin/Compose launcher now connects the offline account, Mojang metadata, verified game preparation, automatic Java runtime installation, metadata-driven LaunchPlan and MinecraftProcessManager to an actual desktop Play workflow. A real clean-machine Minecraft launch is not yet verified.
1414

1515
## v0.11 / v0.12 — diagnostics, repair and release preparation
1616

1717
Home → **Game health and repair** scans the selected game's managed files, explains common failures with confidence labels and repairs game files/Java without starting Minecraft or deleting worlds/mods/settings. Copy safe report exports a structured local summary without raw logs, credentials or private paths. Settings now includes a bounded launcher-log viewer, actual data locations and update-channel controls. Launcher logs rotate, sensitive message fields are redacted, downloads check free space and the common JVM dependency graph is locked.
1818

1919
Microsoft account acceptance is **deferred while awaiting Mojang AppID approval** (maintainer instruction, 23 October 2026); existing code and explicit offline profiles remain. Implementation work on diagnostics/hardening is separate from final clean-machine, hosted updater, signing/notarization and native gameplay/DPI acceptance. See [v0.11 verification](docs/TESTING_V0.11.md), [v0.12 final gates](docs/TESTING_V0.12.md) and [installation/backup/removal](docs/INSTALLATION.md).
2020

21+
## Sequential milestone closure — 24 October 2026
22+
23+
[Closure evidence](docs/MILESTONE_CLOSURE.md) reconciles stale implementation tasks and records new inheritance/legacy asset handling, local integrity receipts, optional Modrinth dependencies and matching Forge discovery. [Support matrix](docs/SUPPORT_MATRIX.md) distinguishes native packaging from gameplay: the maintainer confirmed Fabric startup and world saving on Linux and Windows 10 for Minecraft 1.21.11, 26.2 and 26.3; exact Fabric versions were not supplied. [Signing prerequisites](docs/SIGNING.md) remain external. Stable 1.x publication is now blocked by unfinished final gates; this work does not change the product version.
24+
2125
## Windows executable branding
2226

2327
Stable 0.9.2 configured the application icon only for Linux, leaving the Windows portable executable with the default Compose/Kotlin icon. The subsequent installer preparation configures the repository ICO for the Windows application image too. The published DEV 188.1 portable EXE has all six icon images byte-identical to that ICO. Every new Windows build checks the embedded PE icon before publication. Extract a complete new portable archive to replace an older bootstrap EXE; automatic launcher updates keep the original bootstrap file.
@@ -121,7 +125,7 @@ Choose **Your setup → Launcher updates → Stable / SNAPSHOT / DEV** and resta
121125

122126
## v0.8 — Forge and Quilt (accepted within the documented matrix)
123127

124-
Forge modern installer V2 shares the staged processor engine with NeoForge. The supported Forge pair is **Minecraft 1.21.1 / Forge 52.1.20**; historical V1 and unverified V2 pairs are rejected, including when selected by an existing profile. The maintainer confirmed private Forge startup and Forge/Quilt mod installation/startup on 21 October 2026. No OS list, exact Quilt/mod versions or logs were supplied, so this is not an all-platform or all-version certification. The existing in-app Forge test warning remains as a conservative scope reminder.
128+
Forge modern installer V2 shares the staged processor engine with NeoForge. Discovery matches exact official Minecraft coordinates, orders builds numerically and validates the selected installer target. Reference installations cover **1.21.1 / 52.1.20, 1.21.11 / 61.2.4, 26.2 / 65.1.5 and 26.3 / 66.1.0**, using metadata-selected Java. Historical V1 remains unavailable. The maintainer confirmed private Forge startup and Forge/Quilt mod installation/startup on 21 October 2026. No OS list, exact Quilt/mod versions or logs were supplied, so this is not an all-platform or all-version certification. The existing in-app Forge test warning remains as a conservative scope reminder.
125129

126130
All five modes use the same preparation, Java, launch-plan and process pipeline. The new deterministic coordinator matrix exercises the real adapters against local synthetic metadata and Forge-family processor fixtures; official installer smoke tests and Windows/Linux/macOS packaging also passed in hosted CI. Java requirements come from Mojang metadata; missing requirements fail before downloads. Legacy arguments stay in the shared planner. Full TOML/version-range solving, historical Forge expansion and the broader native/gameplay matrix remain open. See [the v0.8 evidence and support matrix](docs/TESTING_V0.8.md).
127131

@@ -460,7 +464,7 @@ Loader support is intentionally staged:
460464

461465
- Fabric — v0.4
462466
- NeoForge — v0.7
463-
- Forge — v0.8 (official SHA-1-verified V2 installation passed for 1.21.1/52.1.20; in-game startup not yet accepted)
467+
- Forge — v0.8 (official SHA-1-verified V2 installation passed for 1.21.1/52.1.20; private 1.21.1 startup accepted; newer pairs have installer evidence)
464468
- Quilt — v0.8 (official Quilt Meta v3 profile and instance selection; actual game acceptance pending)
465469

466470
Local mod management arrives in v0.5, followed by Modrinth integration and dependency resolution in v0.6.

‎docs/ARCHITECTURE.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,3 +602,7 @@ Desktop describeProfile reads bounded folder names and mod inventory off the UI
602602
## Native installer boundary
603603

604604
Native installation is build/release infrastructure (`scripts/package_installers.py`, `packaging/`), independent of Minecraft/account core. Native payloads are derived from the same verified Compose image as portable/update assets. MSI owns only its user application directory, explicit HKCU installer component values and menu shortcuts; Linux packages own only application/menu integration. No installer action enumerates or removes game/account/settings directories. The updater writes newer images only into per-user update storage, leaving package-owned payloads immutable. Native numeric package metadata is derived from canonical `launcherVersion`; macOS alone retains the pre-1.0 compatibility major mapping.
605+
606+
## Closure additions — 24 October 2026
607+
608+
Version resolution merges only checksum/identity-verified parents from the official catalog, with cycle/depth guards before DTO parsing. Preparation materializes virtual assets and map-to-resources without overwriting differing user resources. Unchecksummed managed libraries use source/size-bound observed digest receipts; they detect local corruption without substituting for upstream authenticity. Modrinth optional branches are explicit, required-only remains the normal catalog path, and declared managed-origin conflicts are rechecked under the instance mutation lock. Official Forge discovery is scoped by exact Minecraft coordinate; metadata selects managed Java for real V2 processor smoke tests. See [evidence](MILESTONE_CLOSURE.md).

‎docs/DEVELOPMENT.md‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ Home render regressions must scroll both the compact page and its independent se
371371

372372
## Simple modded-game setup
373373

374-
`ModLoaderRegistry.compatibleGame` performs read-only compatibility discovery for quick setup and the instance creation/settings forms. It preserves a compatible current game; otherwise it intersects provider-supported games with the official Mojang catalog ordered by descending release time, then verifies the newest candidate through the provider. Fabric/Quilt query their game indexes; NeoForge filters using its existing Maven compatibility mapping and Forge retains its verified V2 support matrix. Quilt loader-discovery HTTP 404 means no compatible versions; profile 404 and all other HTTP/network errors remain failures. A 20-second UI deadline and composition cancellation bound discovery. A fallback selects the first (newest upstream) loader entry, including previews, and explains the draft version adjustment in EN/PL/DE; unchanged games retain their selected compatible loader or prefer stable. No game/loader versions are hardcoded by fallback. The older bounded `desktop/ModdedGameSetup.kt` helper remains available to callers without registry discovery.
374+
`ModLoaderRegistry.compatibleGame` performs read-only compatibility discovery for quick setup and the instance creation/settings forms. It preserves a compatible current game; otherwise it intersects provider-supported games with the official Mojang catalog ordered by descending release time, then verifies the newest candidate through the provider. Fabric/Quilt query their game indexes; NeoForge filters using its existing Maven compatibility mapping and Forge matches exact official Minecraft coordinates for modern V2 builds. Quilt loader-discovery HTTP 404 means no compatible versions; profile 404 and all other HTTP/network errors remain failures. A 20-second UI deadline and composition cancellation bound discovery. A fallback selects the first (newest upstream) loader entry, including previews, and explains the draft version adjustment in EN/PL/DE; unchanged games retain their selected compatible loader or prefer stable. No game/loader versions are hardcoded by fallback. The older bounded `desktop/ModdedGameSetup.kt` helper remains available to callers without registry discovery.
375375

376376
`QuickModdedGameDialog` keeps suggestions and optional advanced drafts in memory. An explicit Minecraft selection in quick setup disables automatic fallback until the next loader selection. Instance creation/settings apply the requested automatic compatibility adjustment to drafts; Save/Create remains explicit. Only confirmation calls the existing instance repository; duplicate confirmation is guarded and close/cancel is disabled while saving. Successful creation selects the new profile and opens Local Mods with Modrinth discovery initially visible. No legacy/Vanilla data is copied or modified and existing schemas remain unchanged. Home mode changes reuse saved Fabric/Quilt profiles and restore the previous Vanilla selection within the session. Existing advanced manager and normal mod-management entry points remain available. Tests cover read-only discovery, mode switching, persisted active choice, cancellation/retry, duplicate clicks, profile/world preservation and compact EN/PL/DE setup renders.
377377

@@ -419,3 +419,11 @@ After `:launcher-desktop:createDistributable`, run `python3 scripts/package_inst
419419
CI runs `packaging/smoke-{linux,macos}.sh` or `packaging/smoke-windows.ps1` on disposable native runners. Do not run system-package lifecycle smoke scripts on a personal machine: their intended environment is the disposable CI runner. DEB and AppImage launch under Xvfb with isolated XDG locations; RPM installs/removes with real dependency resolution in Fedora 44; MSI checks complete payload hashes, repairs a removed launcher and checks Start menu/removal/data preservation; DMG verifies, mounts read-only and tests application copy/removal. Native focus/gameplay, signing/notarization and prior-version upgrades remain separate acceptance. `python3 -m unittest discover -s scripts -p 'test_*.py'` checks package identity/version bounds, XML payload/registry/menu behavior, executable AppDir arguments/symlinks, and fail-closed publication for missing/corrupt installers.
420420

421421
All five installers must be available before `scripts/verify_installers.py --directory <assets> --write` writes the installer checksum inventory. Preview publication uses `--installers` to verify it before creating any tag/release. Existing portable-only publication callers remain compatible; current CI requires installers.
422+
423+
## Packaged network and production gates
424+
425+
`python3 scripts/verify_native_network.py --image launcher-desktop/build/compose/binaries/main/app/SyntaxLauncher --platform linux-x64` starts the actual image's runtime, fetches public Mojang catalog and checksum-verified metadata, and requires a fresh private completion receipt. It bypasses player/account/updater/UI initialization; the receipt also works for Windows GUI executables without redirected stdout. CI runs the matching platform form before packaging.
426+
427+
`SYNTAXLAUNCHER_FORGE_LIVE_SMOKE=1 ./gradlew :launcher-core:test --tests '*ForgeOfficialSmokeTest' --rerun-tasks` uses official game/client/Forge artifacts and Mojang-managed Java for four reference pairs. Optionally set `SYNTAXLAUNCHER_FORGE_SMOKE_TARGETS` to comma-separated `Minecraft:Forge` entries. This is installation acceptance, not graphical game startup.
428+
429+
CI runs `python3 scripts/release_readiness.py --enforce-production`: plain Stable 1.x or later requires a fully closed v1.0 checklist. Pre-1.0 and prerelease builds remain testable. See [signing prerequisites](SIGNING.md) before enabling production signing.

0 commit comments

Comments
 (0)