Commit Graph
1339 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 080732d2ac feat(atlas): author GJ 71 (Gateway/Tau Ceti) body catalog
First system fully authored via atlas author/commit workflow.
7 bodies + 1 station: Threshold (primary garden, 600M), Arden
(secondary garden, 500M), Verantis (domed moon, 20M), inner rocky,
outer ice, debris disk, oort cloud, Horizon Station (80M).

Atlas CLI updated with proper_name, population, hydrosphere,
economic_role, settlement_pattern, industrial_corridor fields in
proposal format. Commit-system writes all fields to DB.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 18:16:09 +01:00
jpmschweitzerandClaude Opus 4.6 fb401e80d2 feat(db): replace atlas bulk populate with per-system author/commit workflow
New commands: author (generates proposal JSON per system from wiki + DB
data), commit-system (writes approved proposal to DB), wipe-system
(clears a system's bodies/stations), unfinished (lists systems without
bodies). Removed the batch populate command.

The author command reads the wiki page, extracts habitable/inhabited
counts, generates a body ID matrix based on star type, and writes a
reviewable JSON proposal. Human reviews, edits, then commits.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:53:30 +01:00
jpmschweitzerandClaude Opus 4.6 ca676e8e66 feat(db): add atlas Rust CLI for celestial bodies + stations
Rust binary (server/src/bin/atlas.rs) with commands: show-system,
show-body, show-station, list-bodies, list-stations, add-body,
add-station, stats, populate. Reads from server/data/systems.db.

Wrapper at tooling/atlas, skill at .claude/skills/atlas/SKILL.md.
Scope note: atlas will grow to cover the full geographic hierarchy
(planetary surfaces, settlements, districts) as the cascade progresses.

Also: removed stale star_systems table from settledreach.db (belongs
in systems.db only) and ran initial populate pass (329 bodies + 301
horizon stations across 301 systems).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:40:37 +01:00
jpmschweitzerandClaude Opus 4.6 fc3b7485c6 feat(schema): add bodies and stations tables to systems.db
New tables for the celestial body hierarchy below system level:
- bodies: planets, moons, gas giants, asteroid belts, oort clouds
  with physical properties, settlement data, and cultural overrides
- stations: orbital/surface facilities with type, population,
  docking class, and gate infrastructure flag

Naming convention: GJ-{n}b (planet), GJ-{n}b-1 (moon),
GJ-{n}b-S1 (station), GJ-{n}-oort (oort cloud).
Self-referential parent_body_id for moon→planet relationships.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:28:40 +01:00
jpmschweitzerandClaude Opus 4.6 79a4780c46 docs(wireframes): add navigator UI wireframes — galaxy map, system orbital, body info
Three wireframes for the Reach Navigator insert app:
- Galaxy hop-ring map (concentric layout, sector-colored, contextual gate lanes)
- System orbital schematic (star + orbits + oort cloud + horizon station)
- Body info panel (planetary screenshot, profile stats, GTTR entry)

Navigation flow: hop-ring → click system → orbital → click body → info panel.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:23:54 +01:00
jpmschweitzerandClaude Opus 4.6 be2d64cb3c docs(wireframes): add character editor Frame0 wireframe
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:15:34 +01:00
jpmschweitzerandClaude Opus 4.6 5addfd8382 assets(client): add character test model + raw textures
Test character model (test_raw.glb) with eye, hair, and body textures
for validation of the character compositor pipeline.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:15:09 +01:00
jpmschweitzerandClaude Opus 4.6 fc3b1fa538 assets(client): add character clothing textures, hair, eyebrows, facial hair, heads
Per-body-type texture maps (BaseColor, Normal, Roughness/ORM) for all
clothing items across all body types. Adds eyebrow variants, facial
hair (beard, moustache, mutton chops), hair styles (12 variants),
and head templates. Sprint 28 character visuals pipeline output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:14:56 +01:00
jpmschweitzerandClaude Opus 4.6 6bac8b0eff chore(server): update Cargo.lock
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:14:31 +01:00
jpmschweitzerandClaude Opus 4.6 10c680bbc5 assets(client): update character clothing GLBs + add body textures
Updated clothing models (boots_work, coveralls_basic, jacket_utility,
pants_cargo, shirt_henley) for average_m and reference variants.
Added segmented body textures (BaseColor, Normal, Roughness) for all
body types: average_f, average_m, child, heavy_f, heavy_m, muscular_f,
muscular_m, teen_f, teen_m. Sprint 28 character visuals work.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:14:20 +01:00
jpmschweitzerandClaude Opus 4.6 8b78614934 docs(decisions): file Q-093 and Q-094 — tile map + chart widgets
Q-093: Tile-based exploration map in player insert (MapTileProvider
reference — Google Maps style pan/zoom with fog-of-war).
Q-094: Chart widgets for economy/market insert UI (Easy Charts
reference — commodity prices, faction rep, supply/demand curves).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:13:58 +01:00
jpmschweitzerandClaude Opus 4.6 d9062b247d chore(meta): add development cascade to CLAUDE.md + vendor/ to gitignore
6-phase cascade: wiki content → economics → planetary maps → player
control → world gen → detail coloring. Each phase completes before
the next begins. Agents must not discuss detail from later phases.

vendor/ added to .gitignore for cloned reference repos (8 Godot
plugins for world generation research).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:12:21 +01:00
jpmschweitzerandClaude Opus 4.6 252e3d380a docs(workshops): complete world generation architecture workshop
3 rounds of SW1 (endgame feature vision) with 5 agents + Qatux.
Produced endgame-feature-vision.md (692 lines) covering the full
galaxy-to-ground generation pipeline, cultural cascade, replayability
architecture, and player experience beats.

Workshop was cut short when PO redirected to a 6-phase development
cascade (wiki content → economics → planetary maps → player control →
world gen → detail coloring). v0.2 target dropped. Heritage roots
(D-104/D-105/D-101/D-107) flagged for supersession — real-world
cultural corridors replace abstract roots.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 17:12:09 +01:00
jpmschweitzerandClaude Opus 4.6 e77f66d53a docs(workshops): create world generation workshop brief from Q-077
Q-077 promoted to full workshop brief with 9 reference implementations,
7 key questions, 5 zone types, and agent assignments (Tyre, Gestalt,
Nigel, Miri, Ozzie).

Also: Q-089 through Q-092 filed (starfield, Markov names, event audio,
modular settings menu), make clean-imports target added.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:48:19 +01:00
jpmschweitzerandClaude Opus 4.6 23d946a68c 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>
2026-03-23 20:23:32 +01:00
jpmschweitzerandClaude Opus 4.6 e7dfcecabc chore(skills): add runtime smoke test to pr-push and pr-review
Sprint 28 lesson: 3 review rounds without launching the game missed
critical bugs. Now enforced:
- pr-push: mandatory headless smoke test before pushing, visual
  verification question for UI changes
- pr-review: parse check before spawning reviewers, process gap flag
  if runtime testing wasn't performed
- Araminta: check Poly Haven + Quaternius before creating assets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:20:29 +01:00
jpmschweitzerandClaude Opus 4.6 4bb05e6b1a docs(decisions): file Q-081 through Q-088 + tickets #722-735
Plugin research session — Q-records for architectural evaluation:
Q-081: VisionCone3D client-side fog refinement (high priority)
Q-082: VoronoiShatter destruction effects
Q-083: ThemeGen dynamic insert styling
Q-084: Isometric point-and-click navigation pattern
Q-085: Portal rendering for server-side visibility
Q-086: Day/night cycle — server time driving client lighting
Q-087: Water shader for environment zones
Q-088: Spatial audio for information-aware sound

Q-077 expanded with Retro Terrain + Spatial Gardener references.

Tickets: DB tooling --help (#722), decision coverage report (#723),
version display (#724), auto-size labels (#725), cargo deny config
(#726), icon fonts (#727), resolution testing (#728), install wizard
(#729), license screen (#730), konami code (#731), minimap (#732),
nested tooltips (#733), speech bubbles (#734), settings epic (#735).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:01:44 +01:00
jpmschweitzerandClaude Opus 4.6 4d1a29bcc1 chore(config): add gdlint + gdformat + cargo-deny to pre-push hook
Pre-push now runs 6 checks:
- GDScript: parse check, gdlint (static analysis), gdformat (style)
- Rust: clippy, fmt, cargo deny (license/advisory/deps)
All tools degrade gracefully if not installed.

Also files Q-065 through Q-080: shooting mechanics, procedural terrain,
cloth sim, vehicle physics, PathMesh3D, NobodyWho vs voice pipeline,
BitTorrent distribution, BehaviourToolkit patterns, screenshot manager,
RichText3D, DeformableMesh, GridMapLayer, mod loader, god rays,
Steam multiplayer, CityCrafter3D, planet generator.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 19:06:03 +01:00
jpmschweitzerandClaude Opus 4.6 ec88afaf07 docs(decisions): add Q-064 planet generator for wiki screenshots
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:47:39 +01:00
jpmschweitzerandClaude Opus 4.6 cef2a2f27f feat(assets): regenerated segments, hair, clothing with new pipeline
Body segments: face-based exclusive assignment for all 8 body types
  (average/muscular/teen m/f, child) + hips segment
Hair: solidified 20mm, normals recalculated, white masks (was black)
Clothing: peasant tunic/pants/shoes solidified 25mm for all body types
Eye: iris mask from T_Eye_Split.png green channel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:44:03 +01:00
jpmschweitzerandClaude Opus 4.6 093b24e38e feat(assets): face-based segmentation pipeline + solidify for hair/clothing
Segmentation:
- Face-based exclusive assignment (no overlap, no caps needed)
- Hips split from torso (pelvis as own segment)
- Torso_upper independent (spine_03 + clavicle, not a variant)
- Clavicle moved from arm_upper to torso_upper

Hair pipeline:
- Solidify modifier (20mm) for scalp hair volume
- Normal recalculation before solidify for consistent direction
- Eyebrows/facial hair NOT solidified
- Fixed mask generation (was outputting black, now white)

Clothing pipeline:
- Solidify modifier (25mm) for clothing thickness
- Peasant shoes added from Fantasy pack

Tooling:
- convert_outfit.py with solidify support
- inspect_glb.py, check_hair_symmetry.py for debugging
- Segment reference distribution locked
- Q-063 footsteps VFX filed

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:43:04 +01:00
jpmschweitzerandClaude Opus 4.6 4d9840b68f feat(client): character creator overhaul — manifest, segments, eye color
Major changes from runtime testing and iteration:
- Asset manifest (manifest.json) controls all available content —
  replaces filesystem scanning, solves DirAccess/PCK export issue
- Dynamic tabs: only show tabs with manifest content
- Body segmentation: face-based exclusive assignment, hips split from
  torso, torso_upper independent (not a variant)
- Eye color with iris-only mask from T_Eye_Split.png green channel
- Eyebrows tinted with hair color (from body segment, not separate GLB)
- Hair/clothing loaded as skinned meshes on shared skeleton
- Segment hiding disabled for clothing (solidify handles coverage)
- Gender-aware randomizer (no facial hair on female/teen)
- Clothing slots hidden when empty in manifest
- UI: color docks docked to bottom on all tabs, padding, flow layout
- Debug tab with per-segment visibility toggles
- Screenshot automation with test config JSON

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:42:33 +01:00
jpmschweitzerandClaude Opus 4.6 8218d5a942 fix(client): remove ALPHA output from toon shaders — fixes depth sorting
Writing ALPHA caused Godot to treat all meshes as transparent, breaking
per-pixel depth testing. Hair clipped through the head, clothing through
the body — all caused by object-level depth sorting instead of z-buffer.
Removing ALPHA makes everything opaque with correct depth behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 15:39:05 +01:00
jpmschweitzerandClaude Opus 4.6 2614c3c57a fix(client): build tab panel entirely in code — remove from .tscn
TabContainer and its VBoxContainer parent vanish during scene
instantiation when loaded as a child of MainMenu in Godot 4.6.
Moving the entire tab panel construction to _ready() resolves
the issue — the .tscn now only defines the preview side and footer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 19:11:37 +01:00
jpmschweitzerandClaude Opus 4.6 307a221527 fix(client): resolve TabContainer via find_child instead of @onready
@onready path resolution fails when the scene is instantiated as a
child of MainMenu — the node path is valid in the .tscn but the
layout hierarchy breaks during child instantiation in Godot 4.6.
Using find_child() is more robust for scenes that are dynamically
added to another scene's tree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:51:09 +01:00
jpmschweitzerandClaude Opus 4.6 a2ef1c34cb fix(client): create TabContainer children programmatically
Godot 4.6 TabContainer silently destroys children defined in .tscn
during scene instantiation ("Parent path has vanished"). Moving tab
shell creation to _ready() fixes the right-side settings panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:41:24 +01:00
jpmschweitzerandClaude Opus 4.6 18ee89d066 feat(client): add animation support to character compositor
Load UAL animation library onto the skeleton and play idle animation
after character assembly. Adds play_animation() and stop_animation()
public API. Searches all animation libraries for matching animation
name with common idle variant fallbacks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:33:36 +01:00
jpmschweitzerandClaude Opus 4.6 86acb87771 fix(client): explicit Variant type on JSON.parse_string return
GDScript strict mode rejects type inference from Variant-returning
functions. JSON.parse_string() returns Variant — use explicit type
annotation to satisfy the parser.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:28:35 +01:00
jpmschweitzerandClaude Opus 4.6 5fc9c03683 chore(server): auto-format Rust code (cargo fmt)
Pre-existing formatting issues in generator_spike.rs and
validate_ron.rs caught by the new pre-push lint hook.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:26:06 +01:00
jpmschweitzerandClaude Opus 4.6 c87dbbf4b6 chore(config): add pre-push hook for GDScript and Rust linting
Runs GDScript parse check (headless Godot) and Rust lint (clippy +
fmt --check) before every push. Catches type inference errors and
formatting issues that code reviews missed in sprint 28.

Uses the existing .config/hooks/ infrastructure (core.hooksPath).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:23:56 +01:00
jpmschweitzerandClaude Opus 4.6 acb1119b2a fix(client): add explicit type annotations for GDScript strict mode
Dictionary.get() returns Variant, which fails GDScript's strict type
inference (warnings-as-errors). Add explicit type casts on all
dictionary access in clothing and accessory tab code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:21:50 +01:00
jpmschweitzerandClaude Opus 4.6 145d8fec17 refactor(client): remove archetype selection, fix Randomise→Randomize
- Remove character_select.tscn and character_select.gd entirely
  (Smuggler/Detective archetypes removed per v0.2 pivot)
- New Game goes straight to character creation
- Rename Randomise→Randomize throughout (US English convention)
- Add *.import and *.uid to client gitignore (import artifacts)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:18:47 +01:00
jpmschweitzerandClaude Opus 4.6 92209f85e6 fix(decisions): clarify D-148 overhead camera angle convention (0°→-80°)
The original "top-down (0°)" was ambiguous — 0° in the code's pitch
convention is horizontal (eye-level), not overhead. The implementation
correctly uses -80° for near-top-down. Updated the decision text to
match the confirmed implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:57:18 +01:00
jpmschweitzer 5718f44b8b Merge remote-tracking branch 'origin/client' 2026-03-22 17:56:47 +01:00
jpmschweitzerandClaude Opus 4.6 ebac8c9580 fix(client): address PR #99 review round 2 — 3 doc/comment fixes
1. character_creation.gd:125 — cam_pitch_idx comment: 2=overhead(0°) → (-80°)
2. character_visual.gd:37 — segment arithmetic: 17+2+2=21 → 14+2+2=18
3. decisions/scope.md D-158 — overhead angle: 0° → -80° to match code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:54:53 +01:00
jpmschweitzerandClaude Opus 4.6 2c83809329 fix(client): correct second D-160 segment count reference (21→18)
Stig's review fix caught the first reference (line 9) but missed the
class docstring at line 27. Both now say 18 segments per D-160.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:48:50 +01:00
jpmschweitzerandClaude Opus 4.6 321003bd9b chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:46:31 +01:00
jpmschweitzerandClaude Opus 4.6 33d7d6996b fix(ui): address PR #99 review — character creation editor fixes
13 fixes from PR #99 review on #705 (character editor):

- #10/#11: Add _get_swatch_color() helper; fix stale closure in
  _make_color_swatch (reads current color at click time, not
  construction time); fix _on_modal_ok to use helper instead of
  wrong get_child(0) traversal
- #12: Replace HSV palette with D-165 hardcoded hex values (6×9
  rows, muted HSL per spec — reds/greens/blues/purples/browns/grays)
- #13: Fix fallback asset IDs to match actual files — hair: bald/
  bob/buzzed/long; heads: head_001–004; facial hair: beard/moustache/
  mutton_chops (stubble removed — no asset)
- #14: Remove invented "slot field" TODO comment; replace with
  name-prefix convention note
- #15: Fix overhead camera pitch 0.0°→-80.0° (0° was horizontal,
  not top-down as intended per D-158)
- #16: Make hair highlight swatch non-interactive (_make_display_swatch);
  remove _on_hair_highlight_changed and _hair_highlight_auto flag
- #17: Remove no-op self-assignment in _on_hair_selected; remove
  redundant assignment inside _hair_highlight_auto block
- #18: Store _clothing_dock_container/_accessory_dock_container as
  instance vars — eliminates fragile get_child(3).get_child(0) chain
- #19: Fix test_r_key_triggers_randomise — replaces assert_bool(true)
  with a real assertion checking body_type or skin_tone changed
- #20: Cache scan results in _cached_hair_ids/_cached_head_ids during
  tab build; _on_randomise() reads cache (no re-scan per keypress)
- #21: Fix character_visual.gd docstring "21 segments" → "18 segments"
- #22: Fix _get_accessory_ids_for_slot — apply slot name-prefix
  filtering instead of returning all accessories for every slot

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:46:10 +01:00
jpmschweitzer 499c602609 Merge remote-tracking branch 'origin/visual' 2026-03-22 17:38:45 +01:00
jpmschweitzerandClaude Opus 4.6 00479fab09 fix(assets): address PR #98 review — all 7 items
Warning fix:
- Remove torso_upper from hides in 3 coverage.json files
  (coveralls_basic, jacket_utility, shirt_henley) and the generator
  script — redundant when torso_variant is "full"

Suggestions addressed:
- Add pants_cargo authoring note about foot segment distinction
- Add pipeline_log.json provenance output to Surface Deform batch
  pipeline (tracks method per variant: surface_deform/shrinkwrap/copy)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:22:33 +01:00
jpmschweitzerandClaude Opus 4.6 56e8c70081 feat(client): character creation screen with live 3D preview (#705)
Full character creation UI with 5-tab customisation panel (Body, Head,
Hair, Clothing, Accessories), live 3D compositor preview via SubViewport,
D-165 color picker modal, keyboard navigation, and game flow integration.

- CharacterCreation scene + script (~1440 lines) implementing wireframe spec
- SubViewport with Camera3D (frontal/dramatic/overhead presets per D-158)
- Cardinal rotation (Q/E) per D-155, randomise (R), Tab/Enter/Esc navigation
- Body type grid (11 types, D-159), skin tone dock (9 tones, shared state)
- Head template, hair, facial hair, eyebrow grids with DirAccess asset scanning
- Clothing slot selector with per-item Primary/Secondary/Accent tints
- Accessory slot selector with Primary/Secondary tints (Array[Color] descriptor)
- 54-swatch color picker modal (D-165) with hex input and recent colors
- Auto-derive flags for highlight, eyebrow tint, facial hair tint from hair primary
- Game flow: main_menu → archetype select → character creation → game start
- GameState.character_visual_descriptor field for gameplay consumption
- Updated accessory_tints from single Color to Array[Color] in descriptor + compositor
- 40+ GdUnit tests covering scene structure, signals, keyboard nav, color derivation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 17:16:47 +01:00
jpmschweitzerandClaude Opus 4.6 ec34f27664 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:57:23 +01:00
jpmschweitzerandClaude Opus 4.6 042deb6b75 feat(assets): add initial clothing set with all body type variants
Five placeholder clothing items fitted to all 11 body types via the
Surface Deform batch pipeline (60 GLBs total):
- coveralls_basic, jacket_utility, pants_cargo, shirt_henley, boots_work

Each item includes reference.glb, reference_mask.png, coverage.json,
and 11 body-type variant GLBs. All Surface Deform binds succeeded
with no Shrinkwrap fallbacks needed (#711).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:56:57 +01:00
jpmschweitzerandClaude Opus 4.6 4a605ffea4 feat(assets): add Surface Deform batch pipeline and clothing authoring scripts
Three new Blender/Python scripts for the clothing production pipeline:
- blender_surface_deform_batch.py: fits a reference clothing GLB to all
  11 body types via Surface Deform modifier in headless mode
- blender_create_clothing_refs.py: procedurally creates placeholder
  reference meshes from average_m body segments
- setup_clothing_metadata.py: generates coverage.json and
  reference_mask.png for each clothing item

Surface Deform headless bind confirmed working in Blender 5.0 via
temp_override — upgrades confidence from MEDIUM to HIGH (#710).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:56:38 +01:00
jpmschweitzerandClaude Opus 4.6 fa0af110f1 fix(docs): correct D-160 segment count in asset org doc footer (17→18)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 16:49:25 +01:00
jpmschweitzerandClaude Opus 4.6 029cf67e08 fix(design): relabel auto-derive to "follow primary"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:45:56 +01:00
jpmschweitzerandClaude Opus 4.6 fb71ff4c9f fix(design): align hair color dock — labels above swatches in 4 columns
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:44:59 +01:00
jpmschweitzerandClaude Opus 4.6 143185741e fix(design): address PR #97 review — all items
Review fixes:
- Eyebrows moved from Head tab to Hair tab (with brow tint + beard tint)
- Head tab now has skin tone dock only
- Eyebrow names match asset keys (regular, female, teen, thick)
- Added earring L/R and necklace slots to Accessories tab
- Added wrist L/R slot labels already present, shifted grid for 3rd row
- Removed "Other" row label for Child (no gendered framing)
- D-155 cross-reference anchor fixed (was stale "full-360-rotation")
- D-160 segment count corrected 17→18 (added torso_upper)
- D-164 rationale corrected: Superhero mesh retained as muscular type
- Added compositor segment visibility note to implementation section
- D-165 cross-ref clarified (clothing colors only, not skin tones)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:42:50 +01:00
jpmschweitzerandClaude Opus 4.6 93260ed696 docs(design): add character creation screen wireframes (#685)
6 wireframe views (Body, Head, Hair, Clothing, Accessories, Color Picker)
as Frame0 JSON source + PNG exports, plus summary spec document.

Layout: 60% preview pane with [Q]/[E] rotation, 35% tabbed panel with
search bar, scrollable grid, and docked color controls per tab.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:28:00 +01:00
jpmschweitzerandClaude Opus 4.6 a435163fd0 docs(decisions): update D-159 body type count (9→11), add D-165 color palette
D-159 was missing teen body type — updated to 5 types × 2 genders + 1 child = 11.
D-165 records the character creator color palette (6×9 HSL-computed swatches).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 16:27:45 +01:00