feat(client): Sprint 31 — star map popup, god object decomposition, gdlint zero #113

Closed
jpmschweitzer wants to merge 0 commits from sprint-31/client into main
Owner

Summary

  • #780 Star map click-through: System select now shows popup with name, star type, hop distance, corridor, GTTR excerpt, body count, population, and adjacent systems. Edge visibility changed: no edges by default, only selected system's gate lines on click. Star map data extended with wiki fields for all 301 systems.
  • #775 God object decomposition: Extracted SnapshotHandler, SnapshotConsumers, and DialogueCoordinator from main.gd (28KB → 13KB) and game_state.gd (20KB → 8.5KB). Autoload parse-order safety maintained.
  • #783 gdlint zero warnings: Fixed 354 warnings across 65 files (declaration order, line length, naming). No logic changes.

Commits

  • 8eb9e0a3 feat(ui): star map click-through with wiki/GTTR popup and edge visibility
  • 260eefcd refactor(client): decompose main.gd and game_state.gd god objects
  • 4eb54a6f fix(client): resolve all gdlint warnings — zero warnings policy

Test plan

  • Open star map, click a system — verify popup shows all fields (name, star type, hop, corridor, GTTR, bodies, population, adjacents)
  • Verify no edges shown by default, only selected system's edges on click
  • Verify main.gd < 15KB, game_state.gd < 10KB
  • Verify SnapshotHandler, SnapshotConsumers, DialogueCoordinator exist and are referenced correctly
  • Run gdlint client/ — expect 0 warnings
  • Run existing test suite — no regressions

🤖 Generated with Claude Code

## Summary - **#780 Star map click-through:** System select now shows popup with name, star type, hop distance, corridor, GTTR excerpt, body count, population, and adjacent systems. Edge visibility changed: no edges by default, only selected system's gate lines on click. Star map data extended with wiki fields for all 301 systems. - **#775 God object decomposition:** Extracted SnapshotHandler, SnapshotConsumers, and DialogueCoordinator from main.gd (28KB → 13KB) and game_state.gd (20KB → 8.5KB). Autoload parse-order safety maintained. - **#783 gdlint zero warnings:** Fixed 354 warnings across 65 files (declaration order, line length, naming). No logic changes. ## Commits - `8eb9e0a3` feat(ui): star map click-through with wiki/GTTR popup and edge visibility - `260eefcd` refactor(client): decompose main.gd and game_state.gd god objects - `4eb54a6f` fix(client): resolve all gdlint warnings — zero warnings policy ## Test plan - [ ] Open star map, click a system — verify popup shows all fields (name, star type, hop, corridor, GTTR, bodies, population, adjacents) - [ ] Verify no edges shown by default, only selected system's edges on click - [ ] Verify main.gd < 15KB, game_state.gd < 10KB - [ ] Verify SnapshotHandler, SnapshotConsumers, DialogueCoordinator exist and are referenced correctly - [ ] Run `gdlint client/` — expect 0 warnings - [ ] Run existing test suite — no regressions 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jpmschweitzer added 3 commits 2026-04-05 10:00:23 +02:00
Show system profile popup on select: name, star type, hop distance,
corridor, GTTR excerpt, body count, population, adjacent systems.
Edge rendering changed to show no edges by default, only selected
system's gate lines on click. Star map data extended with wiki fields
for all 301 systems.

Ticket: #780

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract SnapshotHandler (static snapshot parsing), SnapshotConsumers
(non-dialogue consumers + audio handlers), and DialogueCoordinator
(dialogue consumers + signal handlers) as class_name scripts.

main.gd: 28KB → 13KB. game_state.gd: 20KB → 8.5KB.
Autoload parse-order safety maintained via load() inline pattern.

Ticket: #775

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix 354 gdlint warnings across 65 files: 194 class-definitions-order
(reorder declarations), 138 max-line-length (split long lines),
22 code issues (unused args, no-else-return, naming). Update .gdlintrc
to exclude addons/ and raise max-public-methods for test files.
No logic changes — declaration order, whitespace, and naming only.

Ticket: #783

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
Owner

Review: sprint-31/client -> main (type: code)

Reviewers: Hoshe (code quality), Tyre (architecture)

Hoshe (Code Quality): APPROVE

All three tickets correct. Decomposition verified — no logic regressions, all call sites updated. gdlint: 6 suppressions, all justified.

# File Severity Issue
1 star_map.gd _draw_info_panel warning Panel height underbudgeted — separator budget 4px vs 6px actual (3x = 6px shortfall). Adjacent systems budget 1 line but max_lines=2. Hub systems overflow panel rect.
2 suggestion No test coverage for popup, edge visibility, or decomposed init paths.

Tyre (Architecture): APPROVE

Decomposition is architecturally sound. main.gd: 28KB→13.4KB (hits 15KB target). Star map GTTR correctly baked (215KB JSON, loaded once). Edge-only-on-selected is a genuine improvement.

# File Severity Issue
1 star_map.gd suggestion Cache get_theme_default_font() in _ready() — called 4x per _draw()
2 star_map.gd suggestion Add signal system_selected(system_id) stub for travel planner (#675)
3 star_map.tscn suggestion mouse_filter = 1 contradicts _ready()'s STOP override

Verdict: APPROVED

Panel height bug is cosmetic (hub systems only). Suggestions are follow-up quality.

## Review: sprint-31/client -> main (type: code) Reviewers: Hoshe (code quality), Tyre (architecture) ### Hoshe (Code Quality): APPROVE All three tickets correct. Decomposition verified — no logic regressions, all call sites updated. gdlint: 6 suppressions, all justified. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | `star_map.gd _draw_info_panel` | warning | Panel height underbudgeted — separator budget 4px vs 6px actual (3x = 6px shortfall). Adjacent systems budget 1 line but `max_lines=2`. Hub systems overflow panel rect. | | 2 | — | suggestion | No test coverage for popup, edge visibility, or decomposed init paths. | ### Tyre (Architecture): APPROVE Decomposition is architecturally sound. main.gd: 28KB→13.4KB (hits 15KB target). Star map GTTR correctly baked (215KB JSON, loaded once). Edge-only-on-selected is a genuine improvement. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | `star_map.gd` | suggestion | Cache `get_theme_default_font()` in `_ready()` — called 4x per `_draw()` | | 2 | `star_map.gd` | suggestion | Add `signal system_selected(system_id)` stub for travel planner (#675) | | 3 | `star_map.tscn` | suggestion | `mouse_filter = 1` contradicts `_ready()`'s STOP override | ### Verdict: APPROVED Panel height bug is cosmetic (hub systems only). Suggestions are follow-up quality.
jpmschweitzer closed this pull request 2026-04-05 10:17:35 +02:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#113