Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
2e75129
feat(runtime): add JP hierarchical NPCs and independent translated stage
nichinichisou0609 Oct 25, 2026
3c12e8f
fix(text): align Unicode whitespace across consumers
nichinichisou0609 Oct 25, 2026
b287c82
fix(runtime): preserve NPC navigation and source ownership
nichinichisou0609 Oct 25, 2026
baba229
fix(qa): select conversation tab for common talks
nichinichisou0609 Oct 25, 2026
915540b
docs(stage): record measured size and browser validation
nichinichisou0609 Oct 25, 2026
d443042
fix(runtime): preserve site ownership and source presentation
nichinichisou0609 Oct 26, 2026
7c99c64
fix(assets): honor immutable master source pins
nichinichisou0609 Oct 27, 2026
a3ea877
fix(fonts): include verified open font licenses in packages
nichinichisou0609 Oct 27, 2026
e415f89
fix(editor): restore roads weather and source UI behavior
nichinichisou0609 Oct 27, 2026
559f0c9
fix(ci): check rebased pushes without the previous tip
nichinichisou0609 Oct 27, 2026
15074ff
fix(render): backport the upstream empty mesh copy guard
nichinichisou0609 Oct 27, 2026
e63c834
feat(harvest): restore JP 7 bulk hammer and shared settlement
nichinichisou0609 Oct 27, 2026
b479a20
fix(harvest): respect field input ownership when charging
nichinichisou0609 Oct 27, 2026
d93226e
fix(wasm): remove the native plugin parser re-export
nichinichisou0609 Oct 27, 2026
9923482
perf(harvest): prepare tool notices only when queued
nichinichisou0609 Oct 27, 2026
b27fa03
fix(wasm): adapt both products to boxed render settings
nichinichisou0609 Oct 27, 2026
8ef9e22
test(server): assert settlement by fixture identity
nichinichisou0609 Oct 27, 2026
d37cf94
fix(runtime): initialize stage items and restore weather cells
nichinichisou0609 Oct 27, 2026
2364352
fix(harvest): resolve the player motion timeline namespace
nichinichisou0609 Oct 27, 2026
69a38f5
test(weather): use the current UI prefab schema
nichinichisou0609 Oct 27, 2026
616ea79
fix(harvest): shade the bulk hammer with its source material
nichinichisou0609 Oct 27, 2026
69676aa
fix(harvest): release bulk button after treasure delivery
nichinichisou0609 Oct 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Source fingerprints must identify the same bytes on every build platform.
* text=auto eol=lf

# Preserve the wrapper's upstream Windows bytes; it is not a Rust build input.
android/gradlew.bat -text

*.png -text
*.jpg -text
*.jpeg -text
*.ico -text
*.ttf -text
*.otf -text
*.woff -text
*.woff2 -text
*.wasm -text
*.bin -text
*.glb -text
*.zip -text
*.gz -text
*.br -text
*.ogg -text
*.wav -text
*.mp3 -text
*.ktx2 -text
*.spv -text
30 changes: 25 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ jobs:
VERSION: ${{ inputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
if: inputs.package
with:
node-version: '22'
- name: Install the Rust toolchain
shell: bash
run: |
Expand All @@ -82,7 +86,15 @@ jobs:
cache-targets: false
save-if: ${{ github.ref == 'refs/heads/master' }}
- name: Build
run: cargo build --release --locked -p moly-app -p moly-launcher -p moly-server-host --target ${{ matrix.target }}
run: cargo build --release --locked -p moly-app -p moly-stage -p moly-launcher -p moly-server-host --target ${{ matrix.target }}
- name: Test shared rules, transport, settlement and runtime
if: runner.os == 'Linux'
run: >-
cargo test --release --locked --lib
-p moly-law -p moly-protocol -p moly-layout -p moly-masters
-p moly-assets -p moly-server -p moly-world -p moly-features
--target ${{ matrix.target }}
-- --test-threads=1
- name: Compiler cache statistics
if: always()
run: sccache --show-stats
Expand Down Expand Up @@ -113,6 +125,7 @@ jobs:
cp LICENSE THIRD_PARTY_NOTICES.md "dist/$name/"
cp docs/release-package.md "dist/$name/README.md"
done
node web/ui-font-package.mjs --copy-license "dist/$game"
cd dist
for name in "$game" "$server"; do
if [[ "${{ matrix.archive }}" == zip ]]; then
Expand All @@ -128,11 +141,18 @@ jobs:
name: native-${{ matrix.target }}
path: dist/out/*
if-no-files-found: error
- uses: actions/upload-artifact@v4
if: inputs.package && runner.os == 'Windows'
with:
name: stage-system-audit-windows
path: target/${{ matrix.target }}/release/moly-stage.exe
if-no-files-found: error
browser:
strategy:
fail-fast: false
matrix:
renderer: [webgpu, webgl2]
product: [stage, game]
runs-on: ubuntu-22.04
timeout-minutes: 240
steps:
Expand All @@ -147,7 +167,7 @@ jobs:
- uses: mozilla-actions/sccache-action@v0.0.11
- uses: Swatinem/rust-cache@v2
with:
key: wasm32-${{ matrix.renderer }}
key: wasm32-${{ matrix.product }}-${{ matrix.renderer }}
cache-targets: false
cache-bin: true
save-if: ${{ github.ref == 'refs/heads/master' }}
Expand All @@ -159,16 +179,16 @@ jobs:
cargo install wasm-bindgen-cli --version "$version" --locked --force
fi
wasm-bindgen --version
- name: Build the ${{ matrix.renderer }} package
- name: Build the ${{ matrix.product }} ${{ matrix.renderer }} package
env:
CARGO_BUILD_JOBS: '4'
run: node web/build-wasm.mjs --renderer ${{ matrix.renderer }}
run: node web/build-wasm.mjs --product ${{ matrix.product }} --renderer ${{ matrix.renderer }} --out-dir web/pkg
- name: Compiler cache statistics
if: always()
run: sccache --show-stats
- uses: actions/upload-artifact@v4
if: inputs.package
with:
name: browser-${{ matrix.renderer }}
name: browser-${{ matrix.product }}-${{ matrix.renderer }}
path: web/pkg
if-no-files-found: error
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@ jobs:
run: |
if [[ -n "$PR_BASE_SHA" ]]; then
git diff --check "$PR_BASE_SHA...$PR_HEAD_SHA"
elif [[ -n "$PUSH_BASE_SHA" && ! "$PUSH_BASE_SHA" =~ ^0+$ ]]; then
elif [[ -n "$PUSH_BASE_SHA" && ! "$PUSH_BASE_SHA" =~ ^0+$ ]] && git cat-file -e "$PUSH_BASE_SHA^{commit}" 2>/dev/null; then
git diff --check "$PUSH_BASE_SHA" "$GITHUB_SHA"
else
# A rebased push may no longer expose its previous tip to checkout.
# The PR check still checks the full base-to-head diff.
git show --format= --check "$GITHUB_SHA"
fi
25 changes: 16 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,24 +77,31 @@ jobs:
env:
VERSION: ${{ needs.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- uses: actions/download-artifact@v4
with:
pattern: browser-*
path: pkg
pattern: browser-stage-*
path: stage/pkg
merge-multiple: true
- name: Check both renderers and the font are present
run: |
test -f pkg/webgpu/build.json
test -f pkg/webgl2/build.json
test "$(find pkg/fonts -name '*.ttf' | wc -l)" -eq 1
- uses: actions/download-artifact@v4
with:
pattern: browser-game-*
path: game/pkg
merge-multiple: true
- name: Verify both renderers' font and its license
run: node web/ui-font-package.mjs --verify stage/pkg game/pkg
- name: Package
run: |
mkdir -p dist
tar -czf "dist/moly-$VERSION-web.tar.gz" pkg
tar -czf "dist/moly-$VERSION-web-stage.tar.gz" -C stage pkg
tar -czf "dist/moly-$VERSION-web-game.tar.gz" -C game pkg
- uses: actions/upload-artifact@v4
with:
name: browser
path: dist/moly-${{ env.VERSION }}-web.tar.gz
path: dist/moly-${{ env.VERSION }}-web-*.tar.gz
if-no-files-found: error

release:
Expand Down
73 changes: 52 additions & 21 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ members = [
"crates/base/moly-law",
"crates/base/moly-store",
"crates/base/moly-plugin",
"crates/base/moly-text",
"crates/engine/moly-assets",
"crates/engine/moly-perf",
"crates/net/moly-protocol",
Expand All @@ -20,16 +21,19 @@ members = [
"crates/game/moly-masters",
"crates/game/moly-game",
"crates/app/moly-app",
"crates/app/moly-stage",
"crates/app/moly-android",
"crates/app/moly-launcher",
"crates/app/moly-server-host",
]
exclude = ["crates/vendor/cpal"]
exclude = ["crates/vendor/cpal", "crates/vendor/bevy_render"]

# CPAL 0.15.3's WebAudio backend retains expired buffer deadlines after a
# main-thread stall. Keep the small transport fix in the fingerprinted sources.
[patch.crates-io]
cpal = { path = "crates/vendor/cpal" }
# Backport Bevy #24960: empty meshes must skip copies as well as allocation.
bevy_render = { path = "crates/vendor/bevy_render" }

[workspace.package]
edition = "2021"
Expand Down
Loading
Loading