Skip to content

Add Linux-hosted build, authoring tools, and dedicated-server workflow#126

Closed
LAP87 wants to merge 5 commits into
Okaetsu:mainfrom
LAP87:codex/linux-port
Closed

Add Linux-hosted build, authoring tools, and dedicated-server workflow#126
LAP87 wants to merge 5 commits into
Okaetsu:mainfrom
LAP87:codex/linux-port

Conversation

@LAP87

@LAP87 LAP87 commented Jul 25, 2026

Copy link
Copy Markdown

Summary

This adds a Linux-hosted PalSchema development workflow while keeping the
supported runtime artifact Win64 and keeping UE4SS, UEPseudo, Palworld data and
runtime-generated schemas outside distributed packages.

  • cross-compiles the existing Win64 UE4SS mod from Linux with clang-cl,
    lld-link, xwin, CMake and Ninja;
  • deploys and rolls back PalSchema for the Palworld client or Win64 Dedicated
    Server under Proton/Wine;
  • avoids the Wine startup stall by selecting the scanner's synchronous path
    only under Wine and uses a polling file watcher there;
  • adds a cross-platform JSON/JSONC CLI, schema registry, stdio LSP and
    VS Code-compatible extension;
  • documents Debian, Ubuntu, Fedora, openSUSE, Arch and CachyOS host setup.

Scope and ownership boundaries

  • Output remains PalSchema.dll; this is not a native ELF port.
  • Native server support in this PR means the Win64 Dedicated Server running
    under Wine or Proton.
  • UE4SS is installed and maintained separately by the user. It is not
    downloaded, copied into or redistributed by PalSchema.
  • Static schemas are redistributable. Palworld-derived
    enums.schema.json, raw.schema.json and raw support schemas remain local
    generated inputs.
  • Jobs requiring private submodules run only on trusted post-merge main
    pushes. Fork pull requests receive no private credentials.

Main additions

Linux-hosted Win64 build

  • pinned xwin SDK preparation with an isolated optional Rust toolchain;
  • CMake presets for Dev and Shipping;
  • PE/COFF checks for architecture, exports, UE4SS imports, mitigations,
    VERSIONINFO and package contents;
  • reproducible Shipping linker settings.

Wine/Proton operation

  • Wine detection through ntdll!wine_get_version;
  • synchronous signature scanning under Wine while native Windows retains the
    normal parallel path;
  • polling-based file watching under Wine;
  • locked, staged deployment with durable recovery and rollback;
  • fail-closed process checks before and after the atomic swap.

Authoring tools

  • palschema init, validate, validate --watch, schemas, doctor and
    print-config;
  • shared schema registry and validator used by both CLI and LSP;
  • diagnostics, completion, hover, symbols and formatting over stdio LSP;
  • packaged VSIX with multi-root workspace support;
  • explicit handling for locally generated enum/raw schema packs.

Verification

Current branch head:

  • public source gate passes on CachyOS;
  • 13 TypeScript unit tests, 14 CLI/LSP/integration tests and 3 extension
    lifecycle tests pass;
  • VSIX and npm packages build and pass content gates;
  • npm audit --audit-level=moderate reports no vulnerabilities;
  • Shipping cross-build completes with clang-cl 22.1.8;
  • the resulting DLL passes the PE contract verifier and packages successfully;
  • targeted regressions cover unowned SDK destinations, missing/empty procfs,
    process-start races and interrupted deployment recovery.

The isolated Win64 Dedicated Server workflow was exercised against Steam build
24181105 under Wine with repeated startup/shutdown and hot-reload cycles.
Those results are version-specific and do not claim native
PalServer-Linux-Shipping compatibility.

Review focus

  1. Wine-only scanner threshold restoration and polling watcher selection.
  2. xwin cache ownership and publication rules.
  3. atomic deployment/recovery and /proc race handling.
  4. schema-pack trust boundaries and LSP workspace scoping.
  5. private-submodule isolation and artifact contents.

@LAP87
LAP87 marked this pull request as ready for review July 25, 2026 20:55
@Okaetsu

Okaetsu commented Jul 26, 2026

Copy link
Copy Markdown
Owner

There's way too much going on in this PR, I can't accept this. I also don't accept massive AI PRs. Small ones are fine as long as you can explain what the code is doing with your own words.

Most of these commits make absolutely no sense. The schema changes look fine however.

@Okaetsu Okaetsu closed this Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants