chore(meta): release v0.1.28

Sprint 28: Character Visuals — character creation screen with live 3D
preview, face-based body segmentation, solidified hair and clothing,
skin/eye/eyebrow tinting, manifest-driven content, pre-push lint hooks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-23 20:23:32 +01:00
co-authored by Claude Opus 4.6
parent e7dfcecabc
commit 23d946a68c
3 changed files with 40 additions and 21 deletions
+37 -18
View File
@@ -6,26 +6,45 @@ Format based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased]
### Fixed
- Character editor: color swatch closures now read the swatch's current color at click time, not the initial color at construction time
- Character editor: OK button on color picker modal correctly reads the active swatch color
- Character editor: D-165 color palette uses correct hardcoded hex values (HSL-derived muted tones) instead of incorrect HSV computation
- Character editor: hair/head/facial hair fallback asset IDs updated to match actual asset files (stubble removed, mutton_chops added)
- Character editor: overhead camera preset now near top-down (-80°) instead of horizontal (was 0°)
- Character editor: hair highlight swatch is now display-only (auto-derived from primary); no longer clickable
- Character editor: clothing/accessory dock containers stored as instance vars, eliminating fragile child-index traversal
- Character editor: asset scans now cached during tab build — randomise no longer re-scans on every keypress
- Character editor: accessory slot grid now filters by item name prefix per slot instead of showing all accessories everywhere
## [v0.1.28] — 2026-03-23
### Added
- Surface Deform batch pipeline — headless Blender script that fits a reference clothing GLB to all 11 body types via Surface Deform modifier; confirmed HIGH reliability in Blender 5.0 with temp_override
- Initial clothing set — 5 placeholder items (coveralls_basic, jacket_utility, pants_cargo, shirt_henley, boots_work) with 11 body-type variants each (60 GLBs), coverage.json, and recolor masks
- Clothing authoring helper scripts — procedural reference mesh creator and metadata generator
- Character asset organization proposal — directory structure, naming conventions, and import pipeline for 11 body types (21 segments each), Quaternius Source tier mapping, CharacterVisualDescriptor contract, Surface Deform clothing pipeline, coverage.json format
- Body segment GLB library — 198 files (11 body types × 18 segments each) covering average, muscular, teen, thin, heavy, and child body types; thin/heavy/child are auto-scaled forks flagged for artist review
- Head template GLBs — 4 head meshes from Quaternius OnlyHead source, with 1024×1024 white mask PNGs (full-face tintable)
- Hair and accessory GLBs — ~20 hairstyle variants (including bald placeholder), 3 facial hair styles, 4 eyebrow sets, with mask PNGs for hair/facial hair
- Blender headless pipeline scripts — 8 scripts in tooling/ for body segmentation (BMesh API), head extraction, hair import, batch processing, and diagnostics
- Character creation screen with live 3D preview, 5-tab panel (Body, Hair, Clothing, Accessories, Debug), manifest-driven content
- Face-based body segmentation pipeline — exclusive assignment per face, no overlap, 19 segments (head, neck, torso_upper, torso, hips, arms, hands, legs, feet, eyes, eyebrows)
- 6 body types: average/muscular/teen m/f from Quaternius Source tier .blends
- Solidified hair (20mm) and clothing (25mm) for depth-correct layering over body
- Skin tinting with per-body-type embedded textures and white recolor mask
- Eye color with iris-only mask derived from T_Eye_Split.png green channel
- Eyebrow tinting from hair color via body segment shader
- Quaternius peasant outfit set (tunic, pants, shoes) across all body types
- Asset manifest (manifest.json) controlling all available content — replaces filesystem scanning
- Pre-push lint hook: GDScript parse + gdlint + gdformat (advisory) + Rust clippy/fmt
- Screenshot test automation with JSON config, 4-cardinal captures, quit-after-screenshot
- Debug tab with per-segment visibility toggles, All ON/OFF buttons
- Scroll zoom (cursor-toward on zoom in, head-bone targeting)
- Dynamic UI: tabs hidden when no content, clothing slots hidden when empty, facial hair hidden for female/teen/child
- Gender-aware randomizer
- 26 Q-records filed (Q-063 through Q-088) covering plugins, architecture patterns, and future features
- 15 tickets filed (#722-736) for tooling, UI, distribution, and QA improvements
- Araminta agent updated with Poly Haven + Quaternius asset sourcing rules
### Fixed
- **ALPHA output in toon shaders caused all depth sorting failures** — removing ALPHA from toon.gdshader and toon_masked.gdshader fixed hair/head clipping, clothing/body clipping, and all z-fighting issues simultaneously
- Character editor: color swatch stale closure, modal OK child traversal, D-165 HSL palette, fallback asset IDs, overhead camera pitch, hair highlight display-only
- Archetype selection screen removed (v0.2 pivot — no Smuggler/Detective)
- GDScript strict typing errors (Variant inference on Dictionary.get(), JSON.parse_string())
- TabContainer children vanishing on scene instantiation — moved to programmatic creation
- Hair meshes exported with proper skinning (was export_skins=False)
- Hair mask PNGs were solid black (Blender image API bug) — regenerated as white
- Rust formatting issues caught by new pre-push hook
- D-148 overhead camera angle convention clarified (0° → -80°)
### Changed
- Body segmentation: torso split into torso_upper (spine_03 + clavicle) and torso (spine_01 + spine_02), hips (pelvis) as independent segment
- Clothing no longer hides body segments — solidify handles visual coverage, segment hiding reserved for amputation/prosthetics
- Randomise → Randomize (US English convention)
- pr-push skill: mandatory runtime smoke test before pushing
- pr-review skill: parse check before spawning reviewers, process gap flagging
## [v0.1.27] — 2026-03-17
+2 -2
View File
@@ -1,7 +1,7 @@
name: The Settled Reach
version: 0.1.27
version: 0.1.28
repository: settled-reach
codename: commonwealth
description: >
Top-down immersive sim with occlusion-based detection mechanics and
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "settled-reach-server"
version = "0.1.27"
version = "0.1.28"
edition = "2021"
[dependencies]