# Unforged Alchemy 4.0 — Player Beta v147.23

This is the cleaned **Player source-test beta** for **v147.23 / 8.11.21-rc1**. It keeps the current authoritative catalogs/rules and includes the interactive Player Alchemy Table plus the current Player-beta UI fixes.


## Folder layout

The beta root is intentionally kept simple:

- **START_PLAYER_TEST.bat** — launch the Player beta.
- **README.md** — this guide.
- **TEST_FEEDBACK.txt** — optional notes to send back after testing.
- **app_files/** — program code, catalogs, recipe seeds, internal metadata, and test/runtime support files. You normally do not need to open this folder.

The launcher automatically enters `app_files` before starting the program, so moving the internal files there does not change Player behavior.

## Quick start on Windows

1. Extract the ZIP to a normal folder.
2. Double-click **START_PLAYER_TEST.bat**.
3. On first run, the launcher creates a private `.venv` and installs the Player UI dependencies into that folder.
4. The app opens directly in **Player** mode.

`START_PLAYER_TEST.bat` is the only Windows launcher included in this beta package.

## Player Alchemy Table

The Alchemy Table is a gameplay workspace rather than only a recipe viewer. It rebuilds the Distillation workspace from **every currently installed Distillation Matrix block**, automatically packs those blocks into the confirmed compact layout, and discards a stale manual-table session if the Workbench geometry changed while you were on another page. Four listed 2×2 Distillation blocks therefore form an 8×8 working-cell / 9×9-node compact workspace, rather than incorrectly staying on one 5×5-node block. The page also keeps the earlier inventory refresh, node-click, numeric-arrow, and scroll/layout fixes.

### Collapsible navigation

v147.22 adds a **[<] / [>]** control at the top of the left navigation. **[<]** collapses the sidebar to a narrow strip so the Alchemy Table can use almost the full window width; **[>]** restores it. **Ctrl+B** toggles the same control from the keyboard. The sidebar state is session-local and does not alter Player data.

### Windows page/layout-state fix

v147.23 hardens page switching on Windows. The Alchemy Table's nested tab/scroll/matrix viewport now ignores stale hidden-page size hints, keeps a stable vertical scrollbar, and performs an immediate plus delayed layout normalization after left-navigation changes, sidebar collapse/expand, and Distillation/Synthesis or Manual/Replay tab changes. Returning to the table also resets the visible nested scroll position to a sane top-left state. This targets the bug where the page could look randomly zoomed/cropped and hide controls until Windows was forced to resize by toggling fullscreen.

### Distillation — Manual Table

**Combined-workspace fix:** the table now uses all installed Distillation blocks. Source/listed size and internal size are shown separately: a listed 2×2 Distillation Matrix is 4×4 working cells / 5×5 nodes, and multiple blocks join into one compact contiguous workspace. Workbench changes reset any stale manual session so placement is validated against the current combined matrix.

**Visual layout hotfix:** the matrix viewport now keeps a protected height and the Manual/Known Replay workspaces scroll vertically instead of letting controls overlap the grid.

- Select an owned Material and Natural Quality.
- PLACE it on the installed Distillation workspace.
- Select pieces/nodes and use the legal tabletop actions: **CUT, LENGTHEN, NODE SEPARATION, MOVE, REMOVE**.
- The app tracks the real X budget, current geometry, recognized Chemical patterns, stable Chemical colors, Workbench/matrix dimensions, and action history.
- **Undo** and **Reset Table** are available while working.
- Inventory changes only after an explicit commit. The source Material is consumed and the manually removed recognized Chemicals are added at inherited Natural Quality.

### Synthesis — Manual Table

- Select a Potion target and an installed Synthesis Matrix.
- Place exact owned Chemical stacks on the grid.
- Use the legal tabletop actions: **ROTATE, REFLECT, MOVE, MOVE+, PREPARE**.
- The app tracks Stability, Workbench PLACE cost/modifiers, unique-component limits, aberrations, target completion, and exact Chemical quality usage.
- Inventory changes only after an explicit commit of a prepared, target-complete Potion.

### Known Recipe Replay

Distillation and Synthesis also keep step-by-step known-recipe replay. Player mode does **not** expose Chemical/Potion solver search controls.

## Session Planner

Player Session Planner is knowledge-only. It uses current inventory plus known/replay-verified Chemical and Potion datasets. It does not launch Material-first Chemical discovery. When a required Chemical recipe is not known, the planner reports the knowledge gap instead of silently searching for a new route.

## Numeric controls

Integer fields such as Inventory Quantity, Natural Level, movement dx/dy, and Reagent Value keep keyboard entry but now also use a Windows-safe right-side arrow hit area. Clicking the upper arrow increments and the lower arrow decrements without needing to type the number.

## Settings and appearance

Settings sub-workspaces are scrollable so controls remain usable on shorter displays. Current settings include Appearance/Skins, editable palettes, Profiles & Character, Knowledge & Data, modular ASCII/pixel avatars, import/export, tutorial access, and maintenance controls.

Included UI skins include Alchemy Dark/Glow, Vaporwave, Retro Terminal, Clay Tablet, Green Pixel, Cyan Hologram, ASCII Survival Terminal, Minimal, High Contrast, and legacy color presets. No AI-generated or borrowed raster artwork is shipped.

## Current rules/data baseline

- 91 canonical Materials in the packaged catalog.
- 26 canonical Chemicals.
- 52 Potion patterns.
- 428 replayable positive-evidence Chemical routes in the shipped seed; this is **not** a global-completeness claim.
- Potion source strokes are split at every intermediate integer lattice node.
- Chemical Concentration is an inventory-level operation.
- Natural Quality is 0–2 and Concentration is 0–3.
- Chemicals with different Natural Quality are distinct and cannot be concentrated together.
- Matrices and Mods share the Workbench slot pool.
- Player profiles/backups exclude Debug data.

## Regression status for this package

Internal release checks completed on the packaging environment include Player/DM/Debug Qt construction contracts, Player role-boundary checks, Player service/profile/backup workflow smoke, packaged-asset checks, Potion and Session canaries plus representative Chemical canaries, Python source compilation, cached-inventory refresh regression, matrix node-click selection regression, direct spin-arrow increment/decrement regression, and collapse/reopen sidebar state regression.

Native PySide6 visual inspection and a frozen standalone EXE clean-Windows test are separate Windows gates and are not claimed by this source-test ZIP.

## Testing feedback

Please focus on the interactive Alchemy Table, inventory commit behavior, Workbench dimensions/modifiers, Session Planner knowledge gaps, Settings scrolling, skin/avatar persistence, and anything visually confusing or mechanically inconsistent. `TEST_FEEDBACK.txt` is included for notes.

`RULE_SOURCE_AUTHORITY.md` records the current rules/project rulings. `UI_ASSET_POLICY.md` records the programmatic-art policy.
