Runtime database, not tracked. Creation-on-missing routine still
needed (ticket #752).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
.env added to gitignore (secrets, should never be tracked).
server/settings.db NOT yet ignored — needs creation-on-missing
routine first (ticket #752, server team).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docs/wireframes/star-map.f0 — Frame0 wireframe for the galaxy
navigator (created during wireframing session).
tooling/wipe-bodies.sh — utility to clear bodies/stations tables
in systems.db (preserves star_systems).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy-only sprint. All 258 remaining systems across 5 parallel corridor
tracks (north/south/east/west/frontier). One PR per corridor (~50
systems each). Stories #739-743 assigned.
Pipeline: /atlas author-system skill with Miri naming, Paula narrative
review, Ozzie astrophysical + experience review.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
D-166: 6-phase cascade as architectural constraint. Each phase
completes before the next begins. No v0.2 target.
D-167: 7 abstract heritage roots retired. Real-world corridor
cultural system (Commonwealth/Iberian/East Asian/Germanic) is
canonical. Supersedes D-104, D-105, D-101 axis A, D-107 (partial).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Schema: added orbital_period_days and rotation_period_hours to bodies
table. Proposal format now includes surface_gravity, orbital_period_days,
rotation_period_hours with sensible defaults per body type.
New sync-wiki command generates a Celestial Bodies section in wiki
pages from DB data. All 16 fields rendered including Year (d) and
Day (h). Re-authored Gateway (GJ 71) with full physics.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New atlas subcommand: sync-wiki generates a Celestial Bodies section
in wiki pages from DB body/station data. All fields rendered: orbit,
ID, name, type, inhabited, population, mass, gravity, atmosphere,
biome, hydrosphere, economy, settlement pattern, industrial corridor.
Stations table includes docking class, governance, gate flag, districts.
Moons render indented under their parent body (↳ notation).
Section is idempotent — re-running overwrites the existing section.
DB is source of truth, wiki is generated output. No import direction.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
@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>
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>
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>
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>