Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
1aacf16
refactor(F1): dynamic native binding and session root reset
KrisCris Aug 28, 2026
0523f83
refactor(F2a): PalRecord, PalRepository and PlayerRepository
KrisCris Aug 28, 2026
736ba2f
refactor(F2b): storage adapters and native two-parent Pal binding
KrisCris Aug 28, 2026
2632a8e
refactor(naming): rename storage adapter symbols and modules
KrisCris Aug 28, 2026
28ae738
refactor(F3): created tracking moves to PalRepository
KrisCris Aug 28, 2026
04e5538
refactor(naming): PalStorageAdapter -> PalAdapter
KrisCris Aug 29, 2026
b9c94be
refactor(F3b): rosters derive from the repository
KrisCris Aug 29, 2026
7e759be
refactor(F4): container indexes and World slot validation
KrisCris Aug 29, 2026
4196d15
refactor(F5): the open() failure regression, and an identity-test audit
KrisCris Aug 29, 2026
7bca221
refactor(S1a): session, players, rosters and Pal detail as REST resou…
KrisCris Aug 29, 2026
13737ae
refactor(S1b): app config, save-path browsing, releases and guild res…
KrisCris Aug 29, 2026
cfcefb2
refactor(S1c-a): api resource clients, stores/session, and one root i…
KrisCris Aug 29, 2026
dc956ab
refactor(S1c-b): one Pal cache, roster keys, and the players/rosters/…
KrisCris Aug 29, 2026
132539d
refactor(S1d): app and research stores, and ten RPC routes deleted
KrisCris Aug 29, 2026
89b65df
refactor(S1e): the five static catalogs, and stores/catalogs
KrisCris Aug 29, 2026
e052b5f
refactor(S1f): the player PATCH and inventory sub-resources
KrisCris Aug 29, 2026
dbfa21f
refactor(S2a): the Pal PATCH allowlist, skills, maximization and one …
KrisCris Aug 29, 2026
6a3d44c
refactor(S2b): move the Pal editor onto the write resources, delete /…
KrisCris Aug 29, 2026
a735090
refactor(S3a): the strict native recognizer, the converter, and nativ…
KrisCris Aug 30, 2026
9135d04
refactor(S3b): the create/duplicate/delete/template REST surface, and…
KrisCris Aug 30, 2026
9db9ca6
refactor(S3c): delete the old RPC create/template routes and the thir…
KrisCris Aug 30, 2026
0555d54
refactor(S4a): the transfer capability, three executors and rebind_an…
KrisCris Aug 30, 2026
f67386a
refactor(S4b): the move and conflict dialogs onto the storage resources
KrisCris Aug 30, 2026
dd0a71a
refactor(S4c): delete the old transfer/move chain and the session sna…
KrisCris Aug 30, 2026
8e00221
refactor(S5a): the save path writes straight to the target it backed up
KrisCris Aug 30, 2026
193257b
refactor(S5b): the frontend saves through the session resource
KrisCris Sep 3, 2026
89c1c63
refactor(C1): sweep the dead code and give SaveManager the API's rost…
KrisCris Sep 3, 2026
aeb1aa4
fix(C3): unauthenticated REST calls answer 401 again, not a 500 with …
KrisCris Sep 3, 2026
c518d56
refactor: delete the imports and translation keys nothing reads
KrisCris Sep 3, 2026
702a69b
fix: an empty session reads as empty, and the item picker opens on top
KrisCris Sep 3, 2026
d241bb5
fix: the CORS preflight allows PUT, so Reload Save works cross-origin
KrisCris Sep 3, 2026
4b2d3ad
refactor(R1): the storage directory answers what a storage is, not Sa…
KrisCris Sep 3, 2026
aabe086
refactor(R2): the DPS locker is its own index, and normalizing is a m…
KrisCris Sep 3, 2026
4398a0e
refactor(R3): every Pal mutation is one module
KrisCris Sep 3, 2026
b9db335
refactor(R4): a roster is a question asked of the records, not the se…
KrisCris Sep 3, 2026
a1b901b
refactor(R5): SaveManager reads as a load/save facade
KrisCris Sep 3, 2026
00502b3
refactor: GVAS shapes are built by PalObjects, not written out by hand
KrisCris Sep 4, 2026
c2fdd88
test: cover the dynamic item entry, and pin what the item editor does…
KrisCris Sep 4, 2026
ba77f34
feat: a worn weapon or piece of armor can be restored to full durability
KrisCris Sep 4, 2026
5bea473
feat: restoring an item refills its magazine as well as its durability
KrisCris Sep 4, 2026
0d466fc
chore: re-extract item and lab research data for game build 24575825
KrisCris Sep 4, 2026
c7965a0
docs: comments say what the code decides, not which document said so
KrisCris Sep 4, 2026
89d9d87
docs: say what each core module is for, at the top of it
KrisCris Sep 5, 2026
6ed07ed
refactor: import from the module that defines it, not through core
KrisCris Sep 5, 2026
4c83ac8
refactor: make core names say what they hold
KrisCris Sep 5, 2026
758583a
feat: keep settings, templates and logs in the platform's user data d…
KrisCris Sep 5, 2026
76807e3
fix: put the backend's error code and traceback back on the error screen
KrisCris Sep 5, 2026
ab6c85f
refactor: keep components/modules for primitives that are not about Pals
KrisCris Sep 5, 2026
8db9565
refactor: messages and the backend connection become their own stores
KrisCris Sep 5, 2026
7e6890e
refactor: templates and lab research report their own failures
KrisCris Sep 5, 2026
9a894cd
refactor: the editor's ceilings become constants, not store state
KrisCris Sep 5, 2026
bfd515d
refactor: the player edits move to the store that owns the player
KrisCris Sep 5, 2026
af0779c
refactor: the pure Pal and skill helpers leave the store
KrisCris Sep 5, 2026
e90f856
refactor: editing a Pal moves to the store that holds the Pal
KrisCris Sep 5, 2026
ba4963b
refactor: creating, deleting and moving a Pal move to one place
KrisCris Sep 5, 2026
f15223c
refactor: the shell stops re-exporting the message queue and the conn…
KrisCris Sep 5, 2026
dd98689
refactor: interface text comes from the store that holds the locale
KrisCris Sep 5, 2026
644cbb4
refactor: the store is named for what it does
KrisCris Sep 5, 2026
54a248c
refactor: the resale warning says what it is
KrisCris Sep 5, 2026
7f755ff
chore: the editor runs from the source tree instead of being installed
KrisCris Sep 6, 2026
5ecfa4b
chore: the build scripts call PyInstaller through the venv interpreter
KrisCris Sep 6, 2026
b70bdc3
fix: the Windows build no longer overwrites the AppImage spec
KrisCris Sep 6, 2026
e491d11
docs: the README covers Pal storage, base camp research and item repair
KrisCris Sep 6, 2026
67c78ed
fix: a Pal whose save already repeats a skill can be edited again
KrisCris Sep 6, 2026
cb3b5b3
feat: a reopened dropdown shows the option it is set to
KrisCris Sep 6, 2026
2b3b531
refactor: a lab research edit logs which research it moved
KrisCris Sep 6, 2026
f9bdc1f
refactor: replacing mastered skills logs the change once
KrisCris Sep 6, 2026
25f0e06
fix: cheat options let a Pal equip more than three active skills
KrisCris Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/assets/readme-features-basecamp-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/readme-features-basecamp-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-general-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-general-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-inventory-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-inventory-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-pal-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-pal-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-player-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-player-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/readme-features-storage-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/readme-features-storage-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-templates-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-features-templates-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-pal-editor-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-pal-editor-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-quick-start-en.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .github/assets/readme-quick-start-zh.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,6 @@ config.json
.worktrees/
*.lock
tmp/
.playwright-cli
.playwright-cli
# PyInstaller writes this next to the build scripts; the AppImage spec is appimage.spec.
/palworld-pal-editor.spec
35 changes: 30 additions & 5 deletions README.cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@


<p align="center">
功能丰富的《幻兽帕鲁》存档修改器,支持玩家、帕鲁、科技、背包等内容,并可通过桌面 GUI、WebUI、CLI 或 Docker 运行。
功能丰富的《幻兽帕鲁》存档修改器,支持玩家、帕鲁、帕鲁存放、基地、科技、背包等内容,并可通过桌面 GUI、WebUI、CLI 或 Docker 运行。
</p>

![Palworld Pal Editor](.github/assets/readme-pal-editor-zh.webp)
Expand All @@ -39,6 +39,8 @@
- [功能](#功能)
- [通用](#通用)
- [帕鲁](#帕鲁)
- [帕鲁存放与转移](#帕鲁存放与转移)
- [基地与公会研究](#基地与公会研究)
- [模板与批量操作](#模板与批量操作)
- [玩家](#玩家)
- [物品栏](#物品栏)
Expand All @@ -54,7 +56,7 @@

**由 \_connlost 用 ❤️ 开发的《幻兽帕鲁》帕鲁修改器。**

Palworld Pal Editor 是一个功能丰富的存档修改器,支持修改玩家、帕鲁、科技、背包等存档内容,并可通过桌面 GUI、WebUI、CLI 或 Docker 容器运行。
Palworld Pal Editor 是一个功能丰富的存档修改器,支持修改玩家、帕鲁、帕鲁存放、基地研究、科技、背包等存档内容,并可通过桌面 GUI、WebUI、CLI 或 Docker 容器运行。

> [!NOTE]
> Steam 存档根目录:`%LOCALAPPDATA%\Pal\Saved\SaveGames`
Expand Down Expand Up @@ -92,12 +94,12 @@ Palworld Pal Editor 完整支持 Deutsch、English、Español、Español (Méxic
![帕鲁列表与筛选](.github/assets/readme-features-general-zh.webp)

- [x] 列出玩家及其帕鲁
- [x] 修改基地帕鲁
- [x] 搜索帕鲁
- [x] 对帕鲁排序
- [x] 筛选帕鲁
- [x] 显示不在常规容器中的帕鲁
- [x] 通过作弊模式启用通常不可用的选项
- [x] 在作弊模式下显示技能与帕鲁的内部名称

### 帕鲁

Expand All @@ -121,12 +123,32 @@ Palworld Pal Editor 完整支持 Deutsch、English、Español、Español (Méxic
- [x] 修改工作适应性
- [x] 修改装备的主动技能
- [x] 修改学会的主动技能
- [x] 修改被动技能
- [x] 修改被动技能,并区分帕鲁被动、普通被动与伙伴技能
- [x] 治愈和复活帕鲁
- [x] 治愈所有帕鲁
- [x] 在合法范围内最大化帕鲁属性
- [x] 删除帕鲁

### 帕鲁存放与转移

![帕鲁存放与转移](.github/assets/readme-features-storage-zh.webp)

- [x] 浏览存档中的所有容器:队伍、帕鲁终端、基地、观赏笼、帕鲁次元仓库与跨界帕鲁终端
- [x] 将帕鲁移动到任意玩家、基地或存放处的容器
- [x] 修改和复制存放在帕鲁次元仓库或跨界帕鲁终端中的帕鲁
- [x] 处理跨界帕鲁终端中已被占用的槽位:覆盖原有帕鲁,或直接跳转到该帕鲁
- [x] 在指定的目标容器中直接创建帕鲁

### 基地与公会研究

![公会帕鲁工作研究所](.github/assets/readme-features-basecamp-zh.webp)

- [x] 修改基地中工作的帕鲁
- [x] 修改公会的帕鲁工作研究所
- [x] 完成单项研究、整个类别,或一次完成全部研究
- [x] 在包含多个公会的存档中切换公会
- [x] 研究名称、效果与所需材料均取自游戏数据

### 模板与批量操作

![模板与批量操作](.github/assets/readme-features-templates-zh.webp)
Expand Down Expand Up @@ -185,6 +207,7 @@ Palworld Pal Editor 完整支持 Deutsch、English、Español、Español (Méxic
- [x] 修改帕鲁球模块
- [x] 修改装备的食物
- [x] 修改物品数量
- [x] 将磨损的物品恢复到满耐久与满弹药
- [x] 清空物品栏槽位

## 安装与运行
Expand Down Expand Up @@ -230,6 +253,8 @@ palworld-pal-editor.exe --mode web --port 58080 --password "请设置强密码"

使用独立部署的前端时,请通过入口页面右上角的服务器菜单选择后端。

WebUI 是一个渐进式网页应用(PWA):浏览器可以将它安装到桌面或主屏幕,界面与帕鲁图片也会在多次运行之间保留缓存。

## 命令行参数

```text
Expand All @@ -242,7 +267,7 @@ palworld-pal-editor.exe --mode web --port 58080 --password "请设置强密码"
--nocli 在 GUI/WebUI 模式中禁用交互式 CLI
```

运行 `palworld-pal-editor.exe --help` 可查看当前参数。命令行参数会覆盖 `config.json`;通常不需要手动编辑该文件。
运行 `palworld-pal-editor.exe --help` 可查看当前参数。命令行参数会覆盖 `config.json`;通常不需要手动编辑该文件。设置、已保存的模板与日志存放在系统的用户数据目录中。

## 视频教程

Expand Down
35 changes: 30 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@


<p align="center">
A feature-rich Palworld save editor for players, Pals, Technology, inventories, and more — available as a desktop GUI, WebUI, CLI, and Docker container.
A feature-rich Palworld save editor for players, Pals, Pal storage, base camps, Technology, inventories, and more — available as a desktop GUI, WebUI, CLI, and Docker container.
</p>

![Palworld Pal Editor](.github/assets/readme-pal-editor-en.webp)
Expand All @@ -39,6 +39,8 @@
- [Features](#features)
- [General](#general)
- [Pals](#pals)
- [Pal storage and transfers](#pal-storage-and-transfers)
- [Base camp and guild research](#base-camp-and-guild-research)
- [Templates and bulk operations](#templates-and-bulk-operations)
- [Players](#players)
- [Inventory](#inventory)
Expand All @@ -54,7 +56,7 @@

**A Palworld Pal Editor developed by \_connlost with ❤️.**

Palworld Pal Editor is a feature-rich save editor that supports player, Pal, Technology, inventory, and other save modifications. Run it as a desktop GUI, WebUI, CLI, or Docker container.
Palworld Pal Editor is a feature-rich save editor that supports player, Pal, Pal storage, base-camp research, Technology, inventory, and other save modifications. Run it as a desktop GUI, WebUI, CLI, or Docker container.

> [!NOTE]
> Steam save root: `%LOCALAPPDATA%\Pal\Saved\SaveGames`
Expand Down Expand Up @@ -92,12 +94,12 @@ For most users, the pre-built desktop application is recommended. It does not re
![Pal lists and filters](.github/assets/readme-features-general-en.webp)

- [x] List players and their Pals
- [x] Edit base-camp Pals
- [x] Search Pals
- [x] Sort Pals
- [x] Filter Pals
- [x] Show Pals outside their normal containers
- [x] Enable normally unavailable options through cheat mode
- [x] Show skill and Pal internal names in cheat mode

### Pals

Expand All @@ -121,12 +123,32 @@ For most users, the pre-built desktop application is recommended. It does not re
- [x] Edit work suitability
- [x] Edit equipped active skills
- [x] Edit learned active skills
- [x] Edit passive skills
- [x] Edit passive skills, listed separately as Pal, regular, and Partner skills
- [x] Heal and revive Pals
- [x] Heal all Pals
- [x] Maximize Pal progression within legal limits
- [x] Delete Pals

### Pal storage and transfers

![Pal storage and transfers](.github/assets/readme-features-storage-en.webp)

- [x] Browse every container a save has: party, Palbox, base camp, viewing cage, Dimensional Pal Storage, and Global Pal Storage
- [x] Move a Pal to any container of any player, base camp, or storage
- [x] Edit and clone Pals that live in Dimensional Pal Storage or Global Pal Storage
- [x] Resolve a Global Pal Storage slot that is already taken, by overwriting it or by jumping to the Pal holding it
- [x] Create a Pal directly in a chosen destination container

### Base camp and guild research

![Guild laboratory research](.github/assets/readme-features-basecamp-en.webp)

- [x] Edit the base camp's worker Pals
- [x] Edit the guild's Pal Labor Research Laboratory
- [x] Complete a single research node, a whole category, or every category at once
- [x] Switch between guilds in a save that holds more than one
- [x] Read research names, effects, and material costs from the game's own data

### Templates and bulk operations

![Templates and bulk operations](.github/assets/readme-features-templates-en.webp)
Expand Down Expand Up @@ -185,6 +207,7 @@ For most users, the pre-built desktop application is recommended. It does not re
- [x] Edit Pal Sphere modules
- [x] Edit equipped food
- [x] Edit item quantities
- [x] Restore a worn item to full durability and a full magazine
- [x] Clear inventory slots

## Installation and Running
Expand Down Expand Up @@ -230,6 +253,8 @@ palworld-pal-editor.exe --mode web --port 58080 --password "choose-a-strong-pass

When using a separately hosted frontend, choose the backend from the server menu at the top-right of the entry page.

The WebUI is a progressive web app: a browser can install it to the desktop or home screen, and it keeps its interface and Pal images cached between runs.

## Command-line Options

```text
Expand All @@ -242,7 +267,7 @@ When using a separately hosted frontend, choose the backend from the server menu
--nocli Disable the interactive CLI in GUI/WebUI mode
```

Run `palworld-pal-editor.exe --help` for the current list. Command-line values override `config.json`; the application manages that file automatically.
Run `palworld-pal-editor.exe --help` for the current list. Command-line values override `config.json`; the application manages that file automatically. Settings, saved templates, and logs are kept in the platform's user data directory.

## Guides

Expand Down
File renamed without changes.
11 changes: 7 additions & 4 deletions build_appimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,23 @@ fi
echo "🐍 Using $PYTHON_CMD (version $PYTHON_VERSION)"

# Set up Python venv and install the Linux GUI backend only for this artifact.
# Nothing is activated: naming the interpreter is what says which environment a
# command runs in, and an activation that fails would leave the rest of this
# script quietly building against system Python.
rm -rf venv
$PYTHON_CMD -m venv venv
source venv/bin/activate
VENV_PYTHON="./venv/bin/python"

python -m pip install -r requirements.txt
python -m pip install "pywebview[pyside6]==4.4.1"
"$VENV_PYTHON" -m pip install -r requirements.txt
"$VENV_PYTHON" -m pip install "pywebview[pyside6]==4.4.1"

# Clean previous build
rm -rf "$DISTDIR"
mkdir -p "$DISTDIR"

# Build with PyInstaller
echo "📦 Building with PyInstaller..."
pyinstaller --clean --noconfirm palworld-pal-editor.spec
"$VENV_PYTHON" -m PyInstaller --clean --noconfirm appimage.spec

PYINSTALLER_BINARY="$DISTDIR/$APPNAME"

Expand Down
12 changes: 7 additions & 5 deletions build_executable.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,17 @@ if ($majorVersion -lt 3 -or ($majorVersion -eq 3 -and $minorVersion -lt 10)) {

Write-Host "Using $($PYTHON_CMD) (version $($majorVersion).$($minorVersion))"

# Create and activate virtual environment
# Create the virtual environment. Nothing is activated: naming the interpreter
# is what says which environment a command runs in, and an activation that fails
# would leave the rest of this script quietly building against system Python.
& $PYTHON_CMD -m venv venv
. .\venv\Scripts\Activate.ps1
$VENV_PYTHON = ".\venv\Scripts\python.exe"

# Install dependencies
pip install -r requirements.txt
& $VENV_PYTHON -m pip install -r requirements.txt

pip install pyinstaller
& $VENV_PYTHON -m pip install pyinstaller

Remove-Item ".\dist" -Recurse -Force

pyinstaller --onefile -i "./icon.ico" --add-data="src/palworld_pal_editor/assets/data;assets/data" --add-data="src/palworld_pal_editor/assets/icons;assets/icons" --add-data="src/palworld_pal_editor/webui;webui" .\src\palworld_pal_editor\__main__.py --name palworld-pal-editor --log-level=INFO --hidden-import="pkg_resources.extern"
& $VENV_PYTHON -m PyInstaller --onefile -i "./icon.ico" --add-data="src/palworld_pal_editor/assets/data;assets/data" --add-data="src/palworld_pal_editor/assets/icons;assets/icons" --add-data="src/palworld_pal_editor/webui;webui" .\src\palworld_pal_editor\__main__.py --name palworld-pal-editor --log-level=INFO --hidden-import="pkg_resources.extern"
15 changes: 8 additions & 7 deletions build_executable.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,18 @@ fi

echo "Using ${PYTHON_CMD} (version ${PYTHON_VERSION})"

# Create a virtual environment named 'venv' (skip if already created)
# Create a virtual environment named 'venv' (skip if already created). Nothing
# is activated: naming the interpreter is what says which environment a command
# runs in, and an activation that fails would leave the rest of this script
# quietly building against system Python.
${PYTHON_CMD} -m venv venv

# Activate the virtual environment
source venv/bin/activate
VENV_PYTHON="./venv/bin/python"

# Install packages from requirements.txt
pip install -r requirements.txt
"${VENV_PYTHON}" -m pip install -r requirements.txt

pip install pyinstaller
"${VENV_PYTHON}" -m pip install pyinstaller

rm -r ./dist

pyinstaller --onefile -i "./icon.ico" --add-data="src/palworld_pal_editor/assets/data:assets/data" --add-data="src/palworld_pal_editor/assets/icons:assets/icons" --add-data="src/palworld_pal_editor/webui:webui" ./src/palworld_pal_editor/__main__.py --name palworld-pal-editor --hidden-import="pkg_resources.extern"
"${VENV_PYTHON}" -m PyInstaller --onefile -i "./icon.ico" --add-data="src/palworld_pal_editor/assets/data:assets/data" --add-data="src/palworld_pal_editor/assets/icons:assets/icons" --add-data="src/palworld_pal_editor/webui:webui" ./src/palworld_pal_editor/__main__.py --name palworld-pal-editor --hidden-import="pkg_resources.extern"
5 changes: 3 additions & 2 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
FROM nikolaik/python-nodejs:python3.12-nodejs21-slim

ENV PATH=/usr/local/nginx/bin:$PATH
# The editor runs out of the source tree copied to /app, not from an install.
ENV PYTHONPATH=/app/src
EXPOSE 58888
VOLUME [ "/mnt/gamesave" ]

Expand All @@ -20,8 +22,7 @@ RUN cd "/app/frontend/palworld-pal-editor-webui" \
&& npm run build \
&& mv "/app/frontend/palworld-pal-editor-webui/dist" "/app/src/palworld_pal_editor/webui"

RUN pip install --no-cache-dir --force-reinstall --upgrade -r requirements.txt \
&& pip install -e . --no-cache-dir --force-reinstall --upgrade
RUN pip install --no-cache-dir --force-reinstall --upgrade -r requirements.txt

RUN chmod +x /app/docker/app.sh

Expand Down
Loading