218 Commits
Author SHA1 Message Date
西风逍遥游 137bae71ea Fix Android script log routing build guard 2026-10-11 08:08:32 +08:00
西风逍遥游 0589a5ae80 fix(android): route script output to logcat 2026-10-11 07:26:45 +08:00
西风逍遥游 0dff989de0 fix(vulkan): keep VMA on its compiled API contract 2026-10-11 06:37:09 +08:00
西风逍遥游 dfc9246764 fix(vulkan): negotiate instance API for feature queries 2026-10-11 06:02:44 +08:00
西风逍遥游 6be2a6ce84 fix(android): select libc++ runtime for target ABI 2026-10-11 05:26:38 +08:00
西风逍遥游 5b2a7fb0f6 fix(android): package the requested emulator ABI 2026-10-11 04:39:50 +08:00
西风逍遥游 28c294824c fix(android): disable OpenAL NEON for x86 builds 2026-10-11 04:10:03 +08:00
西风逍遥游 9bfda9017b ci: test Android APK natively on x86_64 emulator 2026-10-11 03:54:54 +08:00
西风逍遥游 12e697fbd5 fix(ci): run Gradle wrapper with bash 2026-10-11 03:04:56 +08:00
西风逍遥游 9655503413 fix(android): install required SDK runtime libraries 2026-10-11 01:37:57 +08:00
西风逍遥游 d61167a241 fix(ci): test-sign consumer APKs before launch 2026-10-11 01:25:36 +08:00
西风逍遥游 c6bd3123aa fix(ci): run APK gate through a checked-in script 2026-10-11 01:19:08 +08:00
西风逍遥游 360fccb2f0 fix(ci): run ARM64 APKs on API 35 emulator 2026-10-10 20:08:56 +08:00
西风逍遥游 f87fc85f33 fix(ci): opt into TCG for arm64 APK gate 2026-10-09 11:37:19 +08:00
西风逍遥游 b0ffb44f46 fix: ship silpom comparison shader as SPIR-V 2026-10-08 20:27:24 +08:00
西风逍遥游 44b02254c8 ci: extend macOS debug test budget 2026-09-21 20:11:36 +08:00
西风逍遥游 523e3e662a ci: run arm64 emulator without HVF 2026-09-21 13:57:24 +08:00
西风逍遥游 ffc7ade79e ci: budget full cold release matrix 2026-09-20 18:23:14 +08:00
西风逍遥游 8683501daa ci: harden cold native builds 2026-09-19 15:08:09 +08:00
西风逍遥游 2ea142be3c ci: allow release builds to reach their step budgets 2026-09-19 11:27:15 +08:00
西风逍遥游 b0abede501 ci(release): validate Android SDK from every consumer host 2026-09-19 01:32:46 +08:00
西风逍遥游 4ab841c047 ci(release): gate mobile SDK runtime usability 2026-09-18 20:42:42 +08:00
西风逍遥游 af76e3194f feat(hexmap): port the Catlike Coding hex map as a module and interactive example Adds src/modules/hexmap, an editable pointy-top hex grid with 5x5 chunk dirty tracking, per-chunk mesh generation (terrain fans, blend strips, terraces, cliffs, water, river channels, roads, city walls, decorations and a fog overlay), A* pathfinding, reference-counted fog of war, a unit registry with destination-reserving travel, a versioned save payload and a procedural map generator ported from the reference MapGenerator. Ships the interactive example as a new examples/hex-terrain-3d directory; the unrelated mesh.hexterrain procgen example in examples/hex-terrain is left byte-identical to dev. 2026-09-18 10:09:33 +08:00
西风逍遥游 31880f0021 feat(examples): gate examples in CI and make repository scripts UTF-8 on every host
`examples/<name>/` was a tested surface in name only. The source-quality job had
no examples check at all, and scripts/smoke_examples.sh accepted any process that
had not printed one of its error markers: a project that died during startup,
exited after a single frame, or crashed without a marker was reported as PASS.
Nothing stopped a malformed or unregistered example from reaching dev, which is
how 14 examples arrived without READMEs and 20 were never registered in the
overview table.

Source side
- scripts/check_examples.py classifies every directory under examples/ as either
  runnable (main.nut plus a config.nut that assigns the engine `config` table) or
  as a reviewed non-runnable sample listed in NON_RUNNABLE_EXAMPLES with a
  reason. Both kinds must own a README.md and appear in examples/README.md.
  Stale exemptions and overview links to missing directories fail as well.
- `make check/examples` and a new source-quality CI step run the gate.
- scripts/tests/test_check_examples.py covers it and pins each failure mode
  against fixtures.

Runtime side
- scripts/smoke_examples.sh now enforces liveness, not just marker absence: every
  runnable example must still be running after MIN_RUN_SECONDS (default 2s; CI
  passes 2s), and a process that dies inside that window fails whatever its exit
  code. A clean self-exit after the window passes with an explicit note instead
  of being silently accepted as a pass.
- The Linux CI step sets MIN_RUN_SECONDS=2 and keeps RUN_SECONDS=6, so the job's
  wall clock is unchanged (13.7 min of its 20 min budget on dev).

Windows / GBK
- scripts/utf8_stdio.py re-encodes stdout/stderr as UTF-8 and every scripts/*.py
  program calls it as the first statement of its __main__ block. On a Chinese
  Windows a redirected stream falls back to the ANSI code page (cp936), and
  printing a character that code page cannot encode (arrows, superscripts, bullet
  separators, emoji - all common in this repository) raised UnicodeEncodeError
  and turned a checker into a traceback.
- The mirror image is input: read_text() without encoding= decoded UTF-8
  repository text as cp936 and raised UnicodeDecodeError.
- scripts/tests/test_utf8_stdio.py enforces both conventions for every script and
  test module; text file I/O and child-process decoding now pass encoding="utf-8"
  explicitly.
- Unit-test invocations run with `python3 -X utf8` so the runner's own output
  never follows the host code page.

Violations the new gates found on top of dev, fixed here: 14 examples shipped
without a README (fluid3d, mesh-impact-lab, mesh-modifier-lab, spline-tube-lab on
the earlier dev tip, plus pcg-depth-of-field, pcg-detail-overwrite,
pcg-layer-culling, pcg-location-system, pcg-runtime-orchestration,
pcg-scene-player-culling, pcg-snow-wind, pcg-thunder-strike, pcg-ui-scaler and
pcg-underwater added by #397), 20 were missing from the overview table (those 14
plus archspace-editor, geometry-stroke-lab, interior-mapping, layered-animation,
triplanar-decal, terrain-stamping), and scripts/export_meshret_onnx.py had no
UTF-8 stdio guard.

Verified locally: `python -m ruff check scripts` (All checks passed);
scripts/check_test_manifest.py; scripts/check_quality_metadata.py;
scripts/check_architecture_contracts.py --base HEAD; scripts/check_nodiscard.py;
`make -n check/examples`; scripts/check_examples.py (125 examples: 118 runnable,
7 reviewed non-runnable); and `python -X utf8 -m unittest discover -s scripts/tests
-p "test_*.py"` (155 tests, OK). The runtime half of the contract needs a Linux
headless build, so it is verified by the CI examples smoke step rather than
locally.
2026-09-15 20:20:23 +08:00
西风逍遥游 fc6119c3f3 feat(procgen): add integrated terrain world generation pipeline 2026-09-15 11:34:02 +08:00
西风逍遥游andCursor Agent fc9863509b feat(animation): MeshRet neural SMR via animation_tensor (#396)
* feat(animation): add classical SMR skinned interaction retarget pass

Port the portable ideas from MeshRet/SMR (semantically consistent bone
sensors + dense interaction pairs) into an offline post-FK retarget
refine step that restores body-part proximity with two-bone IK, without
pulling in a neural runtime.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* feat(animation): MeshRet neural retarget via animation_tensor

Add L6 animation_tensor satellite that provides ISmrNeuralRetarget over
builtin tensor MeshRet and optional ONNX, with classical two-bone IK as
fallback when neural is disabled or unavailable.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* docs(animation): document AnimRetargetProfile getter bindings

Source quality's check_bindings --strict failed on six new getters
bound for SMR/MeshRet retarget that were missing from animation.md.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(animation): avoid new fallback-debt comment markers

Reword neural SMR Doxygen so classical IK is described as the active
path, keeping fallback-contract-inventory at baseline (budget 0).

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

* fix(ci): keep animation_tensor off web and skip Dawn LPM

animation_tensor in GROUP web pulled animation→model3d into the
Emscripten profile, which skips medialoader_model and then fails WASM
link. Restrict it to GROUP 3d.

Also force DAWN_BUILD_PROTOBUF/TINT fuzzers off so the Windows native
Dawn parity configure does not require a flaky libprotobuf-mutator
checkout.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-09-15 07:21:29 +08:00
西风逍遥游 42d9be4eed Merge remote-tracking branch 'origin/dev' into codex/test-suite-representative-tests
# Conflicts:
#	test/dap.cpp
2026-09-13 09:10:03 +08:00
西风逍遥游 155fafe0e0 Merge remote-tracking branch 'origin/dev' into codex/test-suite-representative-tests
# Conflicts:
#	Makefile
#	test/softbody.cpp
2026-09-12 12:32:04 +08:00
西风逍遥游 90831eb6b8 Merge branch 'dev' into cursor/hd2d-dopfix-look-211c 2026-09-12 11:52:36 +08:00
西风逍遥游 28c1fe20de Merge pull request #381 from EVEngine/codex/resource-mesh-pipeline
Add resource-backed mesh rendering and spatial instancing
2026-09-12 11:50:50 +08:00
西风逍遥游 2ebb92645a Merge pull request #378 from EVEngine/codex/building-textured-terrain
Improve building examples with textured terrain and isometric building art
2026-09-12 06:53:34 +08:00
西风逍遥游 2dba4d138f Merge branch 'dev' into cursor/map-fog-effect-e11a 2026-09-12 01:04:01 +08:00
西风逍遥游 2cc427f040 Fix starter asset generator Python lint 2026-09-12 01:02:26 +08:00
西风逍遥游 02148074c5 Merge dev and make building examples runnable without external assets 2026-09-12 00:12:02 +08:00
西风逍遥游 1c4cb3ed4d Add resource-backed mesh rendering and bounded asynchronous loading 2026-09-12 00:09:01 +08:00
Cursor Agentand西风逍遥游 c38654d504 Add MapFog SLG large-map war-fog overlay
Implement dual-scrolling cloud fog with RGBA mask bridge (R unlock,
G select blink, B dissolve) and a pre-pass shadow, plus example and
unit tests following the common SLG FoW presentation pattern.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-11 14:16:10 +00:00
Cursor Agentand西风逍遥游 e681ebde45 feat(hd2d): add HD2DURP-style DOF look and DopFix sprite depth
Port the signature HD-2D miniature presentation from HD2DURP: Gaussian
depth-of-field on Camera3D/final HDR resolve, Hd2dLook presets, and
Sprite3D cutout depth-write controls so characters stay sharp in focus.

Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
2026-09-11 14:13:54 +00:00
西风逍遥游 ef22dc9cf8 Merge remote-tracking branch 'origin/dev' into codex/test-suite-representative-tests
# Conflicts:
#	.github/workflows/ci.yml
2026-09-11 20:39:21 +08:00
西风逍遥游 7e7fbea543 fix(ci): tolerate Windows line endings and slow apt downloads 2026-09-11 19:51:42 +08:00
西风逍遥游 e46ca5f222 Merge remote-tracking branch 'origin/dev' into codex/softbody-model
# Conflicts:
#	.github/workflows/ci.yml
2026-09-11 19:37:29 +08:00
西风逍遥游 048ea8a617 Merge pull request #373 from EVEngine/codex/stylized-water
feat(graphics): configurable stylized water
2026-09-11 17:36:19 +08:00
西风逍遥游 d39e306fd7 Merge pull request #366 from EVEngine/codex/script-error-voxel-graphics
fix(runtime,voxel,graphics): script stacks, voxel pick, 3D present hitch
2026-09-11 17:36:08 +08:00
西风逍遥游 569169fc83 feat(physics): add modular volumetric soft bodies 2026-09-11 16:17:20 +08:00
西风逍遥游 7e45cdaebd feat(graphics): add configurable stylized water 2026-09-11 14:54:02 +08:00
西风逍遥游 859845bbb4 Merge branch 'dev' into codex/test-suite-representative-tests 2026-09-11 14:25:00 +08:00
西风逍遥游 5741795fe3 fix: validate representative tests across native GPU backends 2026-09-11 14:19:51 +08:00
西风逍遥游andCursor eb39d162b7 fix(runtime,voxel,graphics): script stacks, voxel pick, 3D present hitch
Surface throw-site file:line on caught Squirrel errors, skip empty deferred graphs that hitch orbit, and drive voxel place/break from a single Camera3D.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-11 01:23:32 +08:00
西风逍遥游 d7a9dab413 Merge pull request #362 from EVEngine/codex/tensor-onnx-gpu-tts
feat(tensor): add quantized ONNX inference with reusable Vulkan sessions
2026-09-11 01:08:16 +08:00
西风逍遥游 23b3dcf085 Merge remote-tracking branch 'origin/dev' into codex/test-suite-representative-tests
# Conflicts:
#	test/voxel_render.cpp
2026-09-10 21:47:11 +08:00
西风逍遥游 130e7cd3b1 fix(ci): distinguish multiply assignment from pointer declarations 2026-09-10 21:42:06 +08:00