Commit Graph

149 Commits (b233fa040d3c7d95e544e71fcd6b2000f175a080)

Author SHA1 Message Date
VinPropane a02496c6bc NEO-107: Persist EncounterCompleteEvent and wire E7.M2 hook stub.
Add IEncounterCompleteEventStore with in-memory implementation, record
events on successful TryCompleteAndGrant, and expand reward_delivery
hook comments for future QuestRewardBundle routing.
2026-05-31 18:26:11 -04:00
VinPropane 9c74933e6e NEO-106: Address code review findings for combat encounter wiring. 2026-05-31 18:10:41 -04:00
VinPropane 8306f92554 NEO-106: Document combat encounter wiring and update E5.M3 docs. 2026-05-31 18:08:29 -04:00
VinPropane 009fedf65e NEO-105: Document encounter completion grants and update E5.M3 docs. 2026-05-31 16:57:54 -04:00
VinPropane aaccbbbcaf NEO-104: Add encounter progress and completion stores.
In-memory IEncounterProgressStore and IEncounterCompletionStore with
EncounterProgressOperations for activation, defeat tracking, and
all-targets-defeated checks; unit tests and docs.
2026-05-31 16:18:56 -04:00
VinPropane 935e8d5f16 NEO-103: Document encounter-definitions route and mark E5M3-04 landed.
Update server README, module snapshot, alignment register, backlog,
and implementation plan reconciliation.
2026-05-31 15:40:12 -04:00
VinPropane 5229c17598 NEO-102: address code review — sync module register + README id lookup note 2026-05-31 00:40:37 -04:00
VinPropane 734876cde9 NEO-102: add encounter and reward-table definition registries + DI
Thin IEncounterDefinitionRegistry / IRewardTableDefinitionRegistry adapters
over NEO-101 catalogs with TryNormalizeKnown, DI registration, and 18 AAA tests.
2026-05-31 00:38:38 -04:00
VinPropane f921095fb0 NEO-101: Fail-fast encounter and reward-table catalog load at startup.
Adds Game/Encounters loaders mirroring validate_content.py E5M3 gates, DI registration with reward-tables-before-encounters load order, 19 AAA tests, and server README catalog sections.
2026-05-31 00:05:57 -04:00
VinPropane d7c3ede5a7 chore: Epic 5 stable slice anchors and doc cluster alignment
Add explicit HTML slice anchors to epic_05, restore deep links across E5
backlogs and plans, fix E5M2 NEO-98 resolve vocabulary and E5.M3 Linear row,
and record review follow-up as Done.
2026-05-30 19:25:56 -04:00
VinPropane 44fb4adbe5 NEO-98: Set melee strike to 2 m and elite slam to 4 m. 2026-05-30 17:55:10 -04:00
VinPropane b9e2d2f4c9 NEO-98: Shorten NPC melee strike maxRange to 1 m. 2026-05-30 17:53:14 -04:00
VinPropane 3169106f28 NEO-98: Resolve NPC telegraph hits via attack ability maxRange.
Telegraph damage now looks up behavior attackAbilityId for baseDamage and
maxRange instead of using aggroRadius. Adds three NPC attack abilities, maxRange
on AbilityDef, attackAbilityId on NpcBehaviorDef, and cross-ref validation.
2026-05-30 17:49:21 -04:00
VinPropane 332cd4445f NEO-98: stop defeated NPC aggro and runtime attacks
Clear threat holder and reset runtime to idle when combat-target HP
is defeated — on cast accept and as an AdvanceOne guard so telegraph
cycles cannot continue after the killing blow.
2026-05-30 17:38:27 -04:00
VinPropane 8a774857c6 NEO-96: address code review — fixture wording, E5.M2 status
Narrow holder-clear hook comments to AdvanceAll scope; document
ResetAllPrototypeRows bypass with optional E9.M1 anchor; remove
redundant TryGet; update E5.M2 Summary status and review follow-up.
2026-05-29 20:50:47 -04:00
VinPropane 5e1e37423f NEO-96: formalize NPC runtime telemetry hook sites
Replace NEO-93 placeholder comments with full telegraph_fired and
npc_state_transition E9.M1 anchors in NpcRuntimeOperations; document
in server README and E5.M2 module alignment.
2026-05-29 20:48:50 -04:00
VinPropane b702d9fb6f NEO-95: add tests, Bruno smoke, and docs for player combat HP
Cover elite telegraph damage, fixture reset, and combat-health GET
verification; update E5M2 backlog and server README.
2026-05-28 23:42:20 -04:00
VinPropane a68d8aa782 NEO-94: Add GET /game/world/npc-runtime-snapshot with lazy AdvanceAll.
Expose versioned NPC runtime rows and nested activeTelegraph DTOs for client poll; wire route, AAA integration tests, Bruno smoke, and docs.
2026-05-28 23:17:57 -04:00
VinPropane ecffba9e4b NEO-93: Reconcile plan, backlog, and docs for runtime state machine.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 22:02:41 -04:00
VinPropane 843abf7126 NEO-92: Add threat store and aggro acquire/leash-clear wiring.
Introduce IThreatStateStore with first-hit acquire on damaging casts
and deterministic leash clears on player move and pre-acquire checks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 21:45:57 -04:00
Don fa9acc85ac NEO-91: migrate combat targets to three NPC instances
Replace alpha/beta dummies with PrototypeNpcRegistry (melee/ranged/elite),
per-archetype max HP from INpcBehaviorDefinitionRegistry, and updated
server tests + Bruno smokes. Documents breaking client change for NEO-97.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 23:42:31 -04:00
VinPropane d3e765fb8f NEO-90: add GET /game/world/npc-behavior-definitions projection.
Expose read-only npcBehaviors envelope backed by INpcBehaviorDefinitionRegistry,
with integration tests, Bruno smoke, and doc reconciliation.
2026-05-25 17:49:01 -04:00
VinPropane e25b1406c7 NEO-89: Reconcile plan, backlog, and module docs for NPC registry. 2026-05-25 17:27:17 -04:00
VinPropane 83282e76f0 NEO-88: Fail-fast NPC behavior catalog load at server startup.
Mirror NEO-77 ability loader: JsonSchema.Net validation, E5M2 three-id
gate, leash > aggro numeric gate, DI singleton, Bruno health smoke, and
16 AAA loader/host tests.
2026-05-25 17:08:40 -04:00
VinPropane 667a1a960a NEO-84: Add combat telemetry hook sites in CombatOperations.
Comment-only ability_used, enemy_defeat, and reserved encounter_start/player_death
markers; README and module docs updated. All 407 server tests pass.
2026-05-25 13:04:11 -04:00
VinPropane 71a6761f3c NEO-44: Grant gig XP on combat defeat via dedicated store.
Add IPlayerGigProgressionStore (in-memory + Postgres V007), GET
/gig-progression snapshot, and CombatDefeatGigXpGrant on cast accept
when targetDefeated — 25 XP to breach, outside E2.M2 skill XP.
Includes tests, Bruno, README, manual QA, and plan reconciliation.
2026-05-25 12:04:40 -04:00
VinPropane ea13b05196 NEO-83: Fix Bruno CI combat-targets HP state pollution.
Add dev combat-targets fixture reset endpoint, Bruno pre-request helper, and enable fixture in CI Bruno step so combat-targets tests run after ability-cast defeat spine.
2026-05-25 11:28:13 -04:00
VinPropane 52b1d4d206 NEO-83: Add GET /game/world/combat-targets HP snapshot.
Wire CombatTargetsWorldApi backed by ICombatEntityHealthStore, Bruno happy + cast defeat spine, integration tests, README and module tracking docs.
2026-05-25 11:20:13 -04:00
VinPropane e8be100f80 NEO-82: Wire cast POST into combat engine and cast response.
Invoke CombatOperations.TryResolve after E1 gates; nested combatResolution
on accept; per-ability catalog cooldown; target_defeated deny without
cooldown. Tests, Bruno defeat spine, README and module docs updated.
2026-05-25 10:36:42 -04:00
VinPropane ca15e7a689 NEO-81: Add CombatOperations.TryResolve and CombatResult.
Pure server combat resolution applies catalog damage via the health store,
denies re-hits on defeated targets, and validates unknown ability/target ids.
2026-05-25 10:16:24 -04:00
VinPropane b060b9dffd NEO-80: add combat entity health store for prototype dummies.
Server-owned in-memory HP for prototype_target_alpha/beta with lazy
init at 100 HP, damage floor at zero, defeated flag, and DI registration.
2026-05-24 22:37:57 -04:00
VinPropane 44e0056b37 NEO-78: Add GET /game/world/ability-definitions HTTP projection.
Expose versioned read-only ability catalog via IAbilityDefinitionRegistry,
with integration tests, Bruno folder, and docs alignment.
2026-05-24 22:22:48 -04:00
VinPropane bd4912004a NEO-79: Add IAbilityDefinitionRegistry and migrate hotbar/cast validation.
Injectable registry backed by AbilityDefinitionCatalog; PrototypeAbilityRegistry
keeps id constants only. Bruno smoke for unknown_ability deny paths.
2026-05-24 22:05:27 -04:00
VinPropane 619089ca40 NEO-77: Add fail-fast ability catalog load at server startup.
Load content/abilities/*_abilities.json with CI-parity validation, E5M1
four-id gate, DI registration, AAA loader/host tests, and Bruno health check.
2026-05-24 21:40:58 -04:00
VinPropane 5f0f703555 NEO-71: address code review — CraftResult tense and README bullets 2026-05-24 18:32:08 -04:00
VinPropane 2d4751021b NEO-71: add craft telemetry hook comment sites and docs
Place item_crafted and craft_failed TODO(E9.M1) anchors in
CraftOperations.TryCraft; document in server README and mark E3.M2
Slice 3 server backlog complete.
2026-05-24 18:23:35 -04:00
VinPropane 5a3904c6bc NEO-70: Address code review findings for craft HTTP.
Rename wire DTO to PlayerCraftRequest, add store-missing and default-quantity
API tests, improve Bruno deny isolation, README success sample, and doc nits.
2026-05-24 18:00:26 -04:00
VinPropane 46393b8ca5 NEO-70: Add craft POST HTTP, Bruno spine, and docs.
Wire POST /game/players/{id}/craft to CraftOperations with CraftResponse DTOs,
integration tests, gather→refine→make Bruno folder, and module/README updates.
2026-05-24 17:57:55 -04:00
VinPropane 308de6b50d NEO-69: Document craft engine and mark E3M2-05 acceptance complete.
Updates server README, module snapshot, alignment register, and backlog
after CraftOperations lands with full automated test coverage.
2026-05-24 17:17:01 -04:00
VinPropane 529cb616f5 NEO-68: Update docs and strike through code review findings.
Mark E3M2-04 landed, refresh alignment register and README, reconcile plan AC.
2026-05-24 17:08:18 -04:00
VinPropane 81b0e3fc4b NEO-67: add IRecipeDefinitionRegistry and DI adapter
Thin registry over RecipeDefinitionCatalog mirrors NEO-52/59: TryGetDefinition,
GetDefinitionsInIdOrder, AAA unit/host tests, README and alignment doc updates.
2026-05-24 16:57:17 -04:00
VinPropane f209636e7e NEO-66: Fail-fast server recipe catalog load at startup.
Add Game/Crafting loader, Slice 3 gate rules, DI registration, and AAA tests
mirroring item/resource-node catalog patterns; cross-check item and skill ids.
2026-05-24 16:41:48 -04:00
VinPropane a578d9b684 NEO-64: address code review follow-ups.
Nest gather_node_depleted hook in remainingGathers == 0 guard,
add E3M1-08 deny-branch out-of-scope note, and give README NEO-64
its own subsection anchor.
2026-05-24 16:00:02 -04:00
VinPropane 847cda97a3 NEO-64: add gather telemetry hook sites and doc updates.
Comment-only resource_gathered and gather_node_depleted anchors in
GatherOperations.TryGather; README, module docs, manual QA, and E3.M1
backlog marked complete.
2026-05-24 15:58:29 -04:00
VinPropane 01dc48a50a NEO-63: add plan, manual QA, and doc updates.
README gather-via-interact section; E3.M1 anchor coords; backlog landed.
2026-05-24 15:44:15 -04:00
VinPropane f58ab4a2eb NEO-62: update docs for gather engine landing.
README, E3.M1 module doc, alignment table, backlog checkboxes.
2026-05-24 15:41:28 -04:00
VinPropane 6d2d3c040a NEO-61: add world node instance depletion store.
Split IResourceNodeInstanceStore + ResourceNodeInstanceOperations with
lazy init from catalog maxGathers, atomic decrement, node_depleted and
unknown_node reason codes, V006 Postgres migration, and parity tests.
2026-05-24 15:03:05 -04:00
VinPropane 97f8f31682 NEO-60: add GET /game/world/resource-node-definitions endpoint
Versioned read-only projection backed by IResourceNodeDefinitionRegistry
with nested yield DTOs, integration test, Bruno, manual QA, and docs.
2026-05-24 14:47:23 -04:00
VinPropane 01dec2b6c8 NEO-59: document registry in README, alignment, and backlog
Mark acceptance criteria complete in the implementation plan.
2026-05-24 14:26:23 -04:00
VinPropane 0384b63046 NEO-58: add fail-fast resource-node catalog load at startup
Loader, Slice 2 gates, DI registration, AAA tests, README and plan updates.
Cross-checks yield itemIds against ItemDefinitionCatalog loaded first.
2026-05-24 14:01:29 -04:00
VinPropane dc5141ed03 NEO-56: add inventory telemetry hook comment sites
item_created on successful TryAddStack; inventory_transfer_denied on
all Denied paths. README, module docs, manual QA, plan ACs updated.
2026-05-24 13:32:21 -04:00
VinPropane 69327f50b4 NEO-55: player inventory GET/POST HTTP, Bruno, and docs
Versioned snapshot read and mutationKind add/remove POST backed by
PlayerInventoryOperations; AAA API tests; Bruno happy path + deny case.
2026-05-23 22:45:27 -04:00
VinPropane 01e391b03a NEO-54: player inventory store, stack/slot rules engine, and tests 2026-05-23 19:26:57 -04:00
VinPropane 08428c4da4 NEO-53: GET world item-definitions, Bruno, docs, and tests
Registry-backed read model at /game/world/item-definitions; Bruno
collection, manual QA checklist, README and module alignment updates.
2026-05-23 19:09:46 -04:00
VinPropane 792b38d8a9 NEO-52: add IItemDefinitionRegistry with DI and lookup tests
Thin adapter over ItemDefinitionCatalog mirroring NEO-35 skill registry;
registers singleton in AddItemDefinitionCatalog with TryGetDefinition,
GetDefinitionsInIdOrder, and AAA unit + host DI tests.
2026-05-23 18:11:33 -04:00
VinPropane d23f6dd8ab NEO-51: Document item catalog boot and mark plan complete.
README, alignment register, and acceptance checklist updated.
2026-05-17 21:56:12 -04:00
VinPropane aba26446d3 NEO-48: address r2 review — atomic fixture, tests, docs
Batch skillXp then resetPerkState with XP rollback; 400 for invalid skillXp;
MasteryFixtureApi gate tests; README fixture vs grant semantics; Bruno GET playerId.
2026-05-17 20:37:00 -04:00
VinPropane ffdbed26f2 NEO-48: dev mastery-fixture API for Bruno state setup
Replace fixture player ids with POST …/__dev/mastery-fixture (resetPerkState,
absolute skillXp). Bruno deny tests set state in pre-request on dev-local-1.
Gated to Development/Testing or Game:EnableMasteryFixtureApi.
2026-05-17 20:31:26 -04:00
VinPropane b72201b1f0 NEO-48: Bruno fixture players for deterministic perk deny tests
Seed neo48-perk-fresh and neo48-perk-branch via Game:FixturePlayerIds;
level_too_low uses isolated fresh player, branch_already_chosen sets up
neo48-perk-branch in pre-request instead of skipping on shared state.
2026-05-17 20:26:21 -04:00
VinPropane 39c54c3881 NEO-48: perk-state HTTP, Bruno, tests, and docs
GET/POST /game/players/{id}/perk-state with versioned JSON, engine-backed
branch selection, PerkStateApiTests, Bruno collection, README, and E2.M3 alignment.
2026-05-17 20:10:31 -04:00
VinPropane 38ef54c238 NEO-49: document perk_unlock hook sites in README, module, and manual QA 2026-05-17 19:10:14 -04:00
VinPropane 174c390aa4 NEO-46: fail-fast mastery catalog load at server startup.
Mirror validate_content.py gates in MasteryCatalogLoader, expose IMasteryCatalogRegistry, cross-check skillIds against the skill catalog, and enforce tierIndex 1..N per track.
2026-05-17 18:06:50 -04:00
VinPropane 2af9b1c011 NEO-43: mission reward skill XP grant helper and docs 2026-05-15 20:30:43 -04:00
VinPropane 15bf598228 NEO-42: add refine activity XP grant helper and tests 2026-05-10 19:38:30 -04:00
VinPropane c1e77280e3 NEO-41: grant salvage activity XP on resource_node interact 2026-05-10 19:10:35 -04:00
VinPropane 236040a5c2 NEO-39: add data-driven level curve with startup schema validation
Replace placeholder XP level math with content-backed thresholds validated in CI and at server boot, and update docs/manual QA/review artifacts to reflect NEO-39 delivery and follow-up fixes.
2026-05-06 23:10:06 -04:00
VinPropane b2999f3ed9 NEO-38: address review — docs alignment, Bruno deny, README levelUps trim 2026-05-06 22:26:23 -04:00
VinPropane 33b2e917e4 NEO-38: skill XP POST grant, persistence, level-up response 2026-05-06 22:17:02 -04:00
VinPropane a3cbef063c NEO-37: treat skill progression JSON array order as non-contractual 2026-05-06 21:53:24 -04:00
VinPropane 9cd96a72c3 NEO-37: add skill progression snapshot GET API, tests, Bruno, docs 2026-05-06 21:48:17 -04:00
VinPropane a0c3599525 NEO-36: address code review (manual QA header, alignment, README, Bruno) 2026-05-04 20:44:52 -04:00
VinPropane 1a9088c77c NEO-34: fail-fast skill catalog load at server startup
Register SkillDefinitionCatalog from content/skills with JsonSchema.Net validation
mirroring validate_content.py and the prototype Slice 1 gate. Resolve paths via
Content:SkillsDirectory or discovery from AppContext.BaseDirectory. Eager-load
after WebApplication build so bad catalogs block startup. Add unit and host
tests, pin test factories to repo skills, document config in server/README, add
manual QA checklist, and extend Bruno GET /health smoke tests.
2026-05-02 19:44:10 -04:00
VinPropane f4ba4cdd92 NEO-32: optional NEON_SPRAWL_API_LOG stdout for ability-cast 2026-04-30 21:37:03 -04:00
VinPropane 361a6800d2 NEO-32: cooldown snapshot API, on_cooldown deny, client HUD sync 2026-04-30 21:19:32 -04:00
VinPropane b5478782a8 NEO-30: cast funnel telemetry hook sites and docs 2026-04-30 20:59:47 -04:00
VinPropane 7de8e7ecfd NEO-28: cast target authority, HUD feedback, tests + docs 2026-04-27 21:03:04 -04:00
VinPropane cc1c6f711e NEO-31: request_cast bool for telemetry hook; document cast API in server README 2026-04-27 20:44:40 -04:00
VinPropane acde9e8145 NEO-29: add HotbarLoadout v1 contract and hydration path
Ship a server-owned hotbar loadout API with Postgres-or-memory persistence so slot bindings survive reconnects in configured environments. Wire client boot hydration and add tests/docs/manual QA to keep the prototype contract and policy explicit.
2026-04-25 22:29:52 -04:00
VinPropane ce54fcc44f NEO-25: world interactables GET, registry rows, fetch-driven Godot props + glow 2026-04-24 20:36:15 -04:00
VinPropane 465c4b14eb NEO-23: add targeting HTTP API (TargetState v1, select intent) 2026-04-17 21:06:59 -04:00
VinPropane a4095cb9bf NEO-22: Remove click-to-move client and legacy move POST/verify
Delete ground_pick and GroundPick wiring; PositionAuthorityClient now only
boot GET and move-stream POST. main.gd snaps on authoritative position only.
Update client/server READMEs, cursor rule example, NEO-22 plan note, and
GdUnit authority tests (stream 400 + boot resync).
2026-04-17 20:06:46 -04:00
VinPropane a2c6c9f93e NEO-22: add move-stream API and WASD client locomotion
Introduce POST /game/players/{id}/move-stream with ordered targets, full-chain
validation before apply, and PositionStateResponse. Godot client uses camera-
relative WASD, queues samples, and snaps to stream responses; debug builds keep
click-to-move via ground_pick. Update READMEs, E1.M1 snapshot, and tests.
2026-04-17 19:21:33 -04:00
VinPropane a7ad695143 NEON-29: Apply stashed WIP (main.tscn, movement validation, docs) 2026-04-13 13:24:05 -04:00
VinPropane 7e17ff563b chore: point docs and rules at Linear NEO issue ids
Migrate Jira NEON-* references to Linear NEO-* and linear.app links in
docs, Cursor rules, READMEs, and traceability comments. Renamed
implementation plans and dated reviews to NEO filenames.

Branch is based on origin/main with this commit only (no NEON-29
gameplay chain). client/README follows main’s district/map copy;
player.gd matches main aside from NEO-14 debug trace prefixes.
2026-04-13 13:15:32 -04:00
VinPropane fa19ab7337 chore: migrate Jira references from NS-* to NEON-* in docs and rules
Rename implementation plans and dated reviews to NEON issue numbers per
Atlassian project re-key. Update browse URLs, cross-links, module docs,
client/server READMEs, and Cursor rules (project key NEON).
2026-04-07 00:15:06 -04:00
VinPropane 7b11d4e238 NS-24: Eliminate idle jitter and movement QA bumps (Godot client)
Physics: Jolt 3D; physics_interpolation off; 120 TPS. CharacterBody3D idle
path uses dual floor_max_angle, rim/straddle and ridged-contact handling,
rim settle and random-floor-bump lip/wall escape, floor_block_on_wall,
NavigationAgent3D avoidance off, per-node interp off. No global_transform in
_process (avoid render/physics ghosting).

QA geometry: random_floor_bumps.gd (load from main.gd); each bump on its own
StaticBody3D under NavigationRegion3D; random_floor_bump_collision_constants.gd
for collider fudge and RANDOM_FLOOR_BUMP_MESH_GROUP.

Scene: player safe_margin and mesh Y lift; MoveRejectPedestal / MoveRejectFarPad
renamed from NS19*; Mat_player_capsule without polygon_offset (per follow-up).

Docs: NS-24 plan + resolution, client/README manual steps, code review
2026-04-05-NS-24.md; server/README bump height note. Code/scene identifiers
avoid ticket-based ns19_* naming.
2026-04-06 00:32:41 -04:00
VinPropane 14a6813985 NS-23: Document movement tradeoff — no required obstacle auto-nav
Align plan, client/server README, E1.M1 snapshot, and code review note with
the chosen design: descend bypass favors smooth stepped surfaces; multi-click
around obstacles is OK. NS-24 remains for idle jitter.
2026-04-05 14:56:52 -04:00
VinPropane 0ac059fa3b NS-23: NavigationAgent3D path-follow with server move authority 2026-04-05 00:23:03 -04:00
VinPropane 7ac6b66b51 NS-19: ignore vertical walkable surfaces in ground ray pick 2026-04-04 23:45:54 -04:00
VinPropane 32d2153acb NS-19: server move validation, client rejection UX, scene QA props 2026-04-04 23:39:40 -04:00
VinPropane b043e8ac45 NS-18: InteractionRequest, client prototype, Postgres test UX
Server: POST /game/players/{id}/interact, HorizontalReach, prototype registry, DTOs, tests; default spawn (-5,0.9,-5); dev HttpLogging.

Client: terminal, radius glow preview, interaction_request_client (interact/E), main wiring; obstacle moved off center.

Tests: postgres.runsettings, launchSettings, Docker compose auto-start/teardown harness, async-safe init.

Docs: plan AC, E1.M1 snapshot, alignment table, server/client README, code review 2026-04-04.
2026-04-04 20:19:33 -04:00
VinPropane e2d64a7a57 NS-17: PostgreSQL position persistence and integration tests
Wire IPositionStateStore to Npgsql when ConnectionStrings:NeonSprawl is set,
with versioned DDL under server/db/migrations and a shared PostgresPositionBootstrap
for schema plus dev-player seeding at host startup. In-memory tests override Postgres
registrations when CI sets the connection string globally.

Add GitHub Actions Postgres service for dotnet test, server README updates,
decomposition and implementation-plan docs, code review write-up, and C# brace
conventions in csharp-style rule.
2026-03-30 22:55:17 -04:00
VinPropane 3882b0e2c6 NS-16: MoveCommand → server PositionState, Godot sync, tests
Implement E1.M1 intent → authority: POST /game/players/{id}/move with v1 JSON
MoveCommandRequest (snap + sequence), extend in-memory store and
PositionStateApi. Godot client splits ground_pick and position_authority_client
with thin main.gd; snap_to_server on player.

Tests live under NeonSprawl.Server.Tests/Game/PositionState/ with AAA layout
and MethodName_ShouldExpectedOutcome_WhenScenario naming. Debug builds use
UseAppHost=false so Linux IDEs resolve .NET 10 from a user-local SDK.

Add NS-16 implementation plan, code review doc, godot-client-script-organization
rule, csharp test layout/naming rules, and refresh E1.M1 / alignment docs.
Server and client README updates include move API, prerequisites, and Rider
notes.

Made-with: Cursor
2026-03-30 19:54:17 -04:00
VinPropane 0439457292 vfew 2026-03-29 23:33:10 -04:00
VinPropane a80752848a fewnkj 2026-03-29 23:31:58 -04:00
VinPropane 39f215315a s 2026-03-29 23:23:12 -04:00
VinPropane f7bfd7cb32 NS-15 implement position state api 2026-03-29 23:08:17 -04:00
don cbf15fc8bb chore: retarget server to .NET 10 and update stack docs
- NeonSprawl.Server: net8.0 -> net10.0
- README, tech_stack, server README, vision plan: .NET 8 -> .NET 10

Made-with: Cursor
2026-03-29 19:49:45 -04:00
don 09a4106543 Update README and documentation to reflect project rebranding to "Neon Sprawl". Revise links to vision plan and adjust references in tech stack and decomposition documents. Enhance README with repository layout and instructions for running the server and client. 2026-03-29 17:23:00 -04:00