Commit Graph

67 Commits

Author SHA1 Message Date
Ludovic Marie 601fbb533a Ship horizon-ctl in the release folders
release.yml builds horizon-ctl beside the client (checked for system-only
imports like it), packaging/package.sh copies it from beside the client binary
and refuses to package without it (the macOS folders made by hand go through
the same script), and package_native_client.py adds it to private archives.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:59:34 +02:00
Ludovic Marie 4ecb4c85e7 Launcher: use HORIZON_GITHUB_TOKEN for GitHub's API when given; CI passes its own
Shared CI runners hit GitHub's anonymous rate limit in the smoke test (launcher 0.1.2's
macOS build failed twice on it). Players never set the variable, so nothing changes for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:46:36 +02:00
Ludovic Marie 85851909d6 launcher CI: the game's Linux build failing its checks is a warning, not a launcher failure
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 17:38:41 +02:00
Ludovic Marie 929fa4ec5a Launcher 0.1.2: Discord link, auto-install on by default, menu style setting, smoke tests
- links.json on main gives the Discord and sponsor links (built-in fallback offline,
  empty hides the button); 'links' command and MCP tool.
- Install new versions automatically is on unless explicitly turned off (new settings
  key, so 0.1.1's written default does not count as a choice).
- Settings: Horizon / Classic menu style, the horizon.txt menuStyle line the game reads;
  'menu-style' command and MCP tool.
- launcher workflow: install latest into a temp home, check imports (Windows, Linux client)
  and that the client starts, on all three platforms; also runs on launcher-* branches.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 17:27:31 +02:00
Ludovic Marie 1a10d4efe8 Windows: launcher without VCRUNTIME140.dll, a clear message without Vulkan, import checks in CI
The Windows launcher was built without crt-static and imported VCRUNTIME140.dll,
which only the Visual C++ redistributable installs: players without it got a
missing-DLL dialog before anything started. The game itself links only system
DLLs (vulkan-1.dll is loaded at run time).

- launcher.yml links the C runtime on Windows.
- tools/check_imports.py reads PE import and delay-import tables (and ELF
  loader, needed libraries and run paths); release.yml and launcher.yml fail
  when a Windows binary imports a non-system DLL.
- release.yml builds Linux on Ubuntu 22.04: the NixOS-made Linux release asked
  for a /nix/store loader, so it ran nowhere but NixOS.
- No adapter: the game says the Vulkan driver is missing and what to install,
  and on Windows keeps the console open until Enter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 15:02:15 +02:00
Ludovic Marie 8cdec2c8d9 Tidy the repository now that parity is reached: launcher-first README, docs index, research leftovers removed
Removed (each unreferenced by code, workflows, tests or living docs; no harness
dependency record names any of them, and parity.py --list still finds all 281):
- 22 one-off write-ups of the Java-pack experiments in docs/: adaptive-terrain,
  client-graphics-smoke, compact-headers, core-performance, culling-empty,
  culling-rays, debounce-queue, dispatch-retry, foreground-first,
  graphics-api-comparison, heap-budget, mac-first-test, optimization-plan,
  playable-validation, quad-reuse, server-graphics-context, shader-world-smoke,
  terrain-measurements, terrain-position, terrain-read-wait, tick-membership,
  worker-pacing. Their findings are folded into one paragraph of java-packs.md.
- 24 benchmarks/ observation dumps only those write-ups linked (client graphics,
  culling, queues, heap, Mac Vulkan, shader worlds, software identity, and the
  unlinked rust-core, rust-worldgen-2026-10-05, rust-native-client and
  rust-cuboid-model-decoding runs), plus 12 unlinked files inside kept
  report folders. The scoped-parity reports the living docs cite stay.
- debug/: one server log from a chunk investigation.
- The manual macos-shader-research and macos-vulkan-research workflows.
- tools/logs/latest.log, an empty log committed by accident (now ignored).

Kept: research-lock.json (parity.py, packaging, the launcher and datafix read
it), the Java-pack how-tos (vulkan, collectors, profiling, process-memory,
tick-state) and tools/test_client_graphics.py (ci.yml runs it).

README: leads with what Horizon is and "Download the launcher" (the
launcher-v* releases; the launcher updates itself), then build from source
for developers. Direct game downloads and PLAY.txt steps for players are gone;
the launcher has its own section with two screenshots. The roadmap merges the
known differences, the final checks and the plans after parity, under the
"Roadmap" heading the launcher's What's next page reads. The parity table and
its 100%-of-what-the-harnesses-compare note are unchanged.

docs/README.md indexes what remains: build and run, parity (status and
workflow), world generation, world data and simulation, the old Java track.
Links to the removed pages and README anchors are fixed.

packaging/PLAY.txt now speaks to players who came through the launcher and
points anyone with a bare archive to it, keeping the manual steps short.

The launcher's README link points at main instead of the launcher branch.
.gitignore: tools/logs/ and .DS_Store. No code behaviour changes; the compiler
and clippy flag no unused code and the tree has no stale TODOs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:16:55 +02:00
Ludovic Marie ed05c1970f Launcher: release workflow for launcher-v tags (Linux, macOS, Windows, draft), README for updates, CLI and MCP; quieter CLI progress
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:28:57 +02:00
Ludovic Marie d7bcc04064 Launcher workflow: also run on pushes to the launcher branch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:50:59 +02:00
Ludovic Marie 7ff1b97f80 Launcher: tables in notes, the README roadmap, the server's EULA, and a macOS/Windows build workflow
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:50:49 +02:00
Ludovic Marie 002bd18170 Link the C runtime statically into the Windows build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:31:00 +02:00
Ludovic Marie 6fab5eb279 Merge branch 'main' into parity-base
# Conflicts:
#	README.md
#	crates/horizon-client/src/game.rs
2026-10-12 19:02:09 +02:00
Ludovic Marie 222345b5d1 Build Horizon on Windows and package playable folders
The control socket reports itself unavailable on Windows, which has no
Unix domain sockets, and horizon-ctl uses the same stream type. A release
workflow builds the Windows client by hand; packaging/package.sh assembles
the binary, the resource preparation tool and PLAY.txt, without any of
Minecraft's files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:58:25 +02:00
Ludovic Marie 6c90e42675 Install ALSA headers for the CI lint and test job
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:02:37 +02:00
Ludovic Marie 37898e856b Build from the user's own copy of the game instead of downloading it
Horizon no longer fetches anything of Minecraft from Mojang's servers. The
client jar, version JSON, libraries and assets come from the user's official
launcher install, and the server jar is one they downloaded themselves
(--server-jar or HORIZON_SERVER_JAR). Every file is checked against checksums
pinned in research-lock.json, and the prepared .local/ layout is byte-identical
to the old downloads, so the harnesses and the native client are unchanged.

CI keeps the offline checks on GitHub's runners; the vanilla comparisons and
the mod build need the game, so they move to a manual job on a self-hosted
runner that holds the maintainer's own copy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 02:00:18 +02:00
Ludovic Marie 8441c66bdb Run macOS only when started by hand
Everyday work is built and tested on Linux only. macOS and Windows jobs run only when started by hand (workflow_dispatch: gh workflow run <workflow> --ref <branch>), not on pull requests or pushes to main. Release workflows are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 12:24:41 +02:00
Ludovic Marie 08b8e71838 Drop Windows from scope and add a native client packager
Horizon now targets Linux and macOS only: remove the Windows CI runners and
wgpu's DX12 backend, and update the scope docs. The Ubuntu RTX 4080 desktop
becomes the first physical Linux target. tools/package_native_client.py bundles
a release build with its prepared resources and a launcher for playing on
another machine of the same platform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 10:48:58 +02:00
Ludovic Marie b9a8e381bb Implement below-zero upgrade data and resident chunk transformations 2026-10-06 15:55:41 +02:00
Ludovic Marie eed1879fae Model pinned chunk statuses and reuse their pre-light metadata 2026-10-06 15:40:26 +02:00
Ludovic Marie e755a5920a Implement proto-chunk block-entity storage and coordinate resolution 2026-10-06 14:59:17 +02:00
Ludovic Marie 53ff11164e Implement small speleothem patches and waterlogged points 2026-10-06 14:16:46 +02:00
Ludovic Marie e2200620ff Implement recursive chorus generation and connection refreshes 2026-10-06 14:12:29 +02:00
Ludovic Marie 736424e01c Implement bonus chest search, loot seeding and torches 2026-10-06 14:08:13 +02:00
Ludovic Marie b344304c62 Implement End gateway geometry and conditional exit updates 2026-10-06 14:03:31 +02:00
Ludovic Marie 1cf1322ae2 Implement proto-chunk ticks and world-generation tick routing 2026-10-06 13:39:19 +02:00
Ludovic Marie fd3416da36 Implement frozen top layers and snowy ground updates 2026-10-06 13:32:39 +02:00
Ludovic Marie 0c80bfa5f8 Implement biome freezing and snow eligibility 2026-10-06 13:28:59 +02:00
Ludovic Marie 6dc8183433 Implement Nether delta rims and shifted content placement 2026-10-06 13:21:42 +02:00
Ludovic Marie 11acaa1617 Implement bamboo stalks, leafy caps and podzol patches 2026-10-06 13:17:56 +02:00
Ludovic Marie 4cc0eaf6da Implement replacement blobs with native Manhattan traversal 2026-10-06 13:13:46 +02:00
Ludovic Marie f5a6904494 Implement End podium construction and destruction requests 2026-10-06 13:09:24 +02:00
Ludovic Marie d99a8d00bb Implement native spike geometry and discontinuous roots 2026-10-06 13:04:32 +02:00
Ludovic Marie 49f526116b Implement native blue-ice seeding and spreading 2026-10-06 12:59:34 +02:00
Ludovic Marie 4634364ed7 Implement underwater magma and preserve signed-zero codec rules 2026-10-06 12:51:12 +02:00
Ludovic Marie c8d07903ef Implement native vine attachment priority and placement 2026-10-06 12:38:59 +02:00
Ludovic Marie 6d5305f987 Implement spring cavities and scheduled fluid ticks 2026-10-06 12:36:10 +02:00
Ludovic Marie 7984238b3e Implement vanilla block-blob support search and placement 2026-10-06 12:29:30 +02:00
Ludovic Marie ea237d983f Implement disk replacement and chunk postprocessing marks 2026-10-06 12:25:49 +02:00
Ludovic Marie 801bec30d5 Implement native block-pile placement and support checks 2026-10-06 12:20:29 +02:00
Ludovic Marie 5a1044f3fc Implement vanilla neighbor-based feature spreading 2026-10-06 11:57:55 +02:00
Ludovic Marie 83b5ace0fc Implement vertical pillars and nested cap placement 2026-10-06 11:56:30 +02:00
Ludovic Marie ab67ec0888 Implement native block-column sampling and truncation 2026-10-06 11:55:45 +02:00
Ludovic Marie f41cd70060 Implement vanilla simple-block placement and feature composition
Add registry-bound double-plant and moss placement, independent world RNG, survival ordering and post-write tick scheduling. Integrate named providers and feature graphs. Both pinned JARs matched 9,613,872 trace lines across 492,554 fixtures; workspace tests and all-target Clippy passed.
2026-10-06 11:55:13 +02:00
Ludovic Marie cb19660fbe Build Horizon Rust parity foundations and differential validation
Add version-bound core, world data, geometry, generation and feature implementations with native client/server comparison tools and scoped evidence reports. Apply Horizon project branding.

Workspace tests, Clippy and 147 Python tests passed. Full 51-family survival and expanded provider comparisons are still running; complete gameplay parity and a playable Rust client remain unfinished. Private game artifacts and the isolated simple-block placement work are excluded.
2026-10-06 11:24:51 +02:00
Ludovic Marie 357cc90326 Capture shared client graphics in integrated-server reports 2026-10-04 14:09:19 +02:00
Ludovic Marie 99d6aae5e0 Verify actual cinematic shader activation in private world probes 2026-10-04 13:09:45 +02:00
Ludovic Marie 5f9f973295 Retain mixed overlay-aware Vulkan results and probe demo worlds 2026-10-04 12:22:10 +02:00
Ludovic Marie a5000edf11 Check recommended Mac profiles in demo worlds and retain separate Vulkan research 2026-10-04 11:26:47 +02:00
Ludovic Marie 3858ab38b5 Isolate vanilla and core Vulkan startup failures on macOS 2026-10-04 11:08:07 +02:00
Ludovic Marie d175741de3 Verify native macOS client startup and framebuffer readback 2026-10-04 10:34:50 +02:00
Ludovic Marie 02d7a5189d Capture sampled tick-manager changes without altering simulation 2026-10-04 08:43:00 +02:00