1721 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.6 f94d4c7a2c chore(meta): release v0.1.30
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.1.30
2026-04-05 00:20:23 +02:00
jpmschweitzer 68afd94a57 Merge remote-tracking branch 'origin/client'
# Conflicts:
#	CHANGELOG.md
2026-04-05 00:17:52 +02:00
jpmschweitzerandClaude Opus 4.6 c94c5d7acb fix(client): address PR #109 review — 6 warnings + 5 suggestions
Star map (W1-W3, S3):
- _process visibility guard + dirty flag (no redraw when hidden/unchanged)
- _system_hash masked to 31-bit positive range
- Extracted _find_nearest_system() shared helper

game_state.gd (W4):
- Inline load() in apply_snapshot() replaces per-tick overhead; safe at
  runtime because script is already in resource cache

Data pipeline (W5-W6):
- Script-relative path resolution via __file__
- --check mode + make check-star-map staleness target

Minor (S1-S2, S5):
- Removed redundant bone_idx assignment
- Simplified double-negative test assertion
- Documented autoload parse-order convention in CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-05 00:12:48 +02:00
jpmschweitzerandClaude Opus 4.6 16b7fe0bb5 fix(simulation): address PR #108 review — LEFT JOIN, JSON output, atmosphere default
Review fixes:
- corridor-status: INNER JOIN → LEFT JOIN so systems without gate
  records are included in counts instead of silently excluded
- corridor-status: output as JSON (serde_json) matching all other
  atlas commands, instead of plain-text ASCII table
- generate_body_matrix: emit atmosphere "standard" instead of
  "breathable" to match committed-system conventions
- Doc header: add corridor-status usage example
- CHANGELOG: note stale habitable_planet_count in pre-fix systems

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:50:11 +02:00
jpmschweitzerandClaude Opus 4.6 0d5323f66c fix(client): resolve GDScript autoload parse-order errors
Autoload scripts are parsed before regular scripts, so class_name
types (CharacterVisualDescriptor, TestHarness, YamlParser) are not
available at parse time. Replace type annotations with untyped vars
and use load() for in-body class references. Fixes all 14 headless
parse errors (9 pre-existing + 5 from Sprint 30 changes).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:40:28 +02:00
jpmschweitzerandClaude Opus 4.6 c758bcd5d6 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:35:12 +02:00
jpmschweitzerandClaude Opus 4.6 d876923485 test(client): add Sprint 30 acceptance tests
27 tests covering all 5 sprint tickets: descriptor persistence (#718),
overhead anchor (#712), hair highlight swatch (#719), manifest JSON
completeness (#720), and star map scene/HUD integration (#674).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:48 +02:00
jpmschweitzerandClaude Opus 4.6 aed513eb71 feat(ui): star map insert module — concentric hop-ring view (#674)
New StarMapRenderer: 301 systems in concentric hop-rings from player
location, sector-colored, click-to-select with info panel, pan/zoom.
Integrated into HUD (hidden by default), insert state propagation
wired in main.gd. Data enriched from systems.db + star-map.json via
tooling/generate-star-map-data.py regeneration script.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:36 +02:00
jpmschweitzerandClaude Opus 4.6 bc168c861a feat(client): hair highlight swatch + manifest JSON for exports (#719, #720)
#719: Add display-only hair highlight swatch (Option B) — auto-derived
from primary tint, non-interactive (MOUSE_FILTER_IGNORE).

#720: Remove DirAccess.open() fallback scanning (breaks in PCK exports).
Fully populate manifest.json (11 body types, 14 hair, 4 heads, 4
eyebrows, 8 clothing). Add tooling/generate-character-manifest script
and make manifest target for regeneration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:23 +02:00
jpmschweitzerandClaude Opus 4.6 4c1e0e9c85 feat(client): wire CharacterVisualDescriptor into startup IPC (#718)
encode_startup_message() now accepts optional CharacterVisualDescriptor
as third param, serialized via to_dict(). sim_bridge passes the
descriptor from GameState on new game start. apply_snapshot() restores
descriptor from server snapshot on save/load cycle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:11 +02:00
jpmschweitzerandClaude Opus 4.6 e8a053080c feat(client): add BoneAttachment3D overhead anchor above Head bone (#712)
Infrastructure for floating UI elements (status indicators, thought
bubbles, alert markers). Marker3D at Vector3(0, 0.3, 0) offset from
Head bone, exposed via get_overhead_anchor() public API.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:34:00 +02:00
jpmschweitzerandClaude Opus 4.6 ba059ab101 chore(rules): add ticket CLI usage rule
Documents positional argument syntax and key rules for the ticket
CLI to prevent --title flag misuse and sqlite3 crashes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:33:50 +02:00
jpmschweitzerandClaude Opus 4.6 6763c30d43 chore(skills): add git-state verification warning to pr-push skill
Sprint 30 showed that grepping source files does not distinguish
committed code from uncommitted agent work. Added mandatory
git status + git diff --stat check from repo root before accepting
"already done" claims, and a warning about CWD path resolution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:11:54 +02:00
jpmschweitzerandClaude Opus 4.6 ef15d0afa3 chore(meta): update changelog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:09:21 +02:00
jpmschweitzerandClaude Opus 4.6 8a98cfa7fc fix(simulation): Sprint 30 server — atmosphere filter fix + corridor-status cmd
#762: Update habitable_planet_count filter to accept both "breathable"
and "standard" atmosphere values via matches! macro. Previously only
matched "breathable", causing all committed systems to report 0
habitable planets.

#744: Add corridor-status subcommand to atlas CLI. Shows remaining
unfinished systems grouped by geographic_sector and hop_distance,
with plain text table output and totals.

Cargo.lock updated for v0.1.29.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 23:08:59 +02:00
jpmschweitzerandClaude Opus 4.6 d6b98925ed fix(wiki): address PR #107 review — catalog.md sync, math fix, schema fix
- catalog.md: sync star types for GJ 875 (K), GJ 1111 (M), GJ 541 (K),
  GJ 601A (F), GJ 19 (G), GJ 42 (K); add Dois Sóis name for GJ 707
- GJ-1111: fix calibration note total ~1.46M → ~1.67M, station display
  1M → 1.2M to match proposal
- GJ42 proposal: moon GJ42e-2 biome_summary ice → frozen (schema fix)
- GJ3943 proposal: station notes k-m → K5V+M3V
- GJ-3943 wiki: "five corridor communities" → "four" (Eerste Wacht
  joined later)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 13:13:31 +02:00
jpmschweitzerandClaude Opus 4.6 f8b0b17252 fix(wiki): Sprint 30 — wiki quality fixes, atlas regressions, Brandpunt authoring
High priority:
- #763: Rewrite GJ1111/GJ54.1 prose for population rebalance (380K/320K
  planet + 1M/860K station = mid-tier systems, not megahubs)

Medium priority:
- #772: Author Brandpunt (GJ 3943) — Afrikaans agricultural research
  station, subverts pastoral/frontier stereotype
- #753: Fix Mabuhay (GJ 1073) — GJ 482A is Dagat, not unsurveyed
- #757: Fix Pereira's Rest population 800 → 42K
- #758: Fix Langemark schema values (breathable→standard, rivers-lakes, west_reach)
- #759: Fix Solheim topology disconnect
- #764: Fix GJ1111 star_type unusual → M
- #767: Fix GJ707 star_type/spectral_class swap
- #769: Fix GJ-147 etymology passagem → Entremeio
- #770: Fix GJ-875 header G-type → K-type

Low priority:
- #754: Update stale Calibration Notes (GJ1128, GJ136, GJ625)
- #755: Fix GJ432A Punjabi-Canadian → Punjabi heritage
- #756: Fix GJ541 header G-type → K-type (K2IIIp)
- #760: Add F2III context to GJ601A notes
- #761: Fix GJ4056 spectral_class g → M3V
- #765: Add calibration notes for intentional small populations
- #768: Reconcile GJ189 wave_2 at hop 8-11
- #771: Fix GJ-7547/GJ-6711 spectral class truncation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 22:47:36 +02:00
jpmschweitzerandClaude Opus 4.6 2c86eee1b6 chore(meta): release v0.1.29
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.1.29
2026-04-03 19:31:54 +02:00
jpmschweitzerandClaude Sonnet 4.6 4722598017 chore(meta): plan Sprint 30: Clean Slate
Sprint goal: Close Phase 1 wiki quality debt — stereotype correction,
data integrity fixes, and atlas regressions — so the wiki stands
correct before Phase 1 UI work begins.

26 tickets: copy (18), client (5), server (3).
Epics #638, #683, #738 closed. #766 deferred (own sprint).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 19:28:20 +02:00
jpmschweitzerandClaude Opus 4.6 f63d222ef3 fix(atlas): address PR #106 review — 3 execution issues
1. GJ 111: spectral_class F5V → F5/F6V to match wiki (subgiant)
2. GJ 3943: spectral_class k-m → K5V+M3V (valid MK notation for binary)
3. GJ 903: write wiki prose — was empty stub with only body tables

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:19:55 +02:00
jpmschweitzerandClaude Opus 4.6 317cbe10d2 data(atlas): name all remaining unsettled systems — 301/301 complete
Unsettled systems receive their GJ designation as proper_name, except
GJ 868 which is named "Encontro" per wiki lore (informal Portuguese
corridor name). 24 proposals updated, systems.db fully synced.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:14:41 +02:00
jpmschweitzerandClaude Opus 4.6 aef39d8e32 fix(db): bulk-sync 233 proposals into systems.db + fix 7 duplicate body IDs
commit-system was inserting bodies/stations but never writing proper_name
to star_systems. Bulk-updated all 276 authored system names. Fixed duplicate
body_id collisions in GJ 1156, GJ 139, GJ 34A, GJ 34B, GJ 661A, GJ 664,
GJ 780 (planet and gas giant sharing same letter suffix).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 14:06:57 +02:00
jpmschweitzerandClaude Opus 4.6 b525d21a6e data(db): sync systems.db — 276 authored systems
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:16:47 +02:00
jpmschweitzerandClaude Opus 4.6 e33338fb88 data(atlas): author GJ 6711 (Abzu) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:21:02 +02:00
jpmschweitzerandClaude Opus 4.6 22adfd2195 data(atlas): author GJ 7547 (Skemeraand) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:20:58 +02:00
jpmschweitzerandClaude Opus 4.6 701d2a119d data(atlas): author GJ 501B (Candeia) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:16:37 +02:00
jpmschweitzerandClaude Opus 4.6 ff7e4e835a data(atlas): author GJ 127A (Dalim) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:14:03 +02:00
jpmschweitzerandClaude Opus 4.6 7d6b1c6e48 data(atlas): author GJ 147 (Entremeio) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:10:51 +02:00
jpmschweitzerandClaude Opus 4.6 ee42c23805 data(atlas): author GJ 111 (Helderoog) — east_reach
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:10:48 +02:00
jpmschweitzerandClaude Opus 4.6 405dc1a890 data(atlas): author GJ 672 (Nova Estrada) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:01:11 +02:00
jpmschweitzerandClaude Opus 4.6 312e3cf211 data(atlas): author GJ 546 (Eerste Wacht) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 12:01:00 +02:00
jpmschweitzerandClaude Opus 4.6 54293a6d3e fix(wiki): add silence topics for GJ 111 (Helderoog) and GJ 147 (Entremeio)
Helderoog: partnership protocol genetic data — two communities' shared
future from a narrow founder population.
Entremeio: no-inspection provisioning policy after undisclosed incident.
Both headers corrected.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:58:22 +02:00
jpmschweitzerandClaude Opus 4.6 1c29d67ac2 fix(wiki): add silence topic for GJ 672 (Nova Estrada), fix M→G header
Founding agreement land allocation ambiguities — crisis waiting to happen.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:54:41 +02:00
jpmschweitzerandClaude Opus 4.6 8db0e3e16b data(atlas): author GJ 421B (Pedra Seca) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:48:08 +02:00
jpmschweitzerandClaude Opus 4.6 abb30381ec data(atlas): author GJ 726 (GJ 726) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:47:07 +02:00
jpmschweitzerandClaude Opus 4.6 dad1fdffeb data(atlas): author GJ 3943 (GJ 3943) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:45:46 +02:00
jpmschweitzerandClaude Opus 4.6 fd7945ec97 data(atlas): author GJ 904 (Claraboia) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:43:19 +02:00
jpmschweitzerandClaude Opus 4.6 86e3b1e793 data(atlas): author GJ 421B (Pedra Seca) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:43:12 +02:00
jpmschweitzerandClaude Opus 4.6 cce32dc244 data(atlas): author GJ 532 (Kettenschmied) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:38:55 +02:00
jpmschweitzerandClaude Opus 4.6 578b151dc0 data(atlas): author GJ 282B (Travessia) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:38:47 +02:00
jpmschweitzerandClaude Opus 4.6 c1aaaf0dc8 fix(wiki): add silence topics for GJ 421B (Pedra Seca) and GJ 904 (Claraboia)
Pedra Seca: sealed water allocation records from fourth-generation drought.
Claraboia: founding cooperative dissolution dispute details.
Both headers corrected (M→K, M→F).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:37:51 +02:00
jpmschweitzerandClaude Opus 4.6 6b6d31ca4d fix(wiki): add silence topic for GJ 532 (Kettenschmied), fix M→K header
Founding cooperative sale circumstances undisclosed. Profitable
cooperative liquidated to fund deep frontier expedition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:30:27 +02:00
jpmschweitzerandClaude Opus 4.6 725763ba91 data(atlas): author GJ 684A (Sonnenkap) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:28:35 +02:00
jpmschweitzerandClaude Opus 4.6 5be0701105 fix(wiki): add silence topic for GJ 282B (Travessia)
Last provisioning stop — travelers going further are not counted
coming back.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:28:03 +02:00
jpmschweitzerandClaude Opus 4.6 477f0b1d30 data(atlas): author GJ 481 (Orchard's End) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:24:18 +02:00
jpmschweitzerandClaude Opus 4.6 da59740ee7 data(atlas): author GJ 875 (The Narrows) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:22:49 +02:00
jpmschweitzerandClaude Opus 4.6 f07913ab55 fix(wiki): add silence topic for GJ 684A (Sonnenkap), fix F→G header
West_reach charter lapse circumstances undisclosed. Well-funded departure
raises questions the community does not answer.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:20:55 +02:00
jpmschweitzerandClaude Opus 4.6 eb3a2ec136 data(atlas): author GJ 903 (Errai) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:17:20 +02:00
jpmschweitzerandClaude Opus 4.6 1b34c4f2af data(atlas): author GJ 684B (Paso Largo) — deep_frontier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:16:04 +02:00
jpmschweitzerandClaude Opus 4.6 5b775d5024 fix(wiki): add silence topic for GJ 481 (Orchard's End)
Charter preamble names specific institutions whose governance
interference caused the Orchard family's prior holdings to be lost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 11:15:32 +02:00