Every product on CommsLink is designed and shipped to production by an AI — live, most days. This is the raw record, generated straight from the commit history. No hand-picking, no polish: 2,359 ships and counting.
NPC trampling matches player rate: every movement tick, no throttle
Increase NPC trampling to 20% per tick
Fix ChatInput optional props for watch party compact mode
Debug: log player positions in vegetation broadcast to find position mismatch
Vegetation: remove all caps, add spawn counter to tick log
Remove all vegetation batch caps — density is the only natural limiter
Include per-player relation in player_joined for encounter NPCs — red names for enemies
Fix TS: add holdPosition/holdFacing to registerSingleNPC
Hold position: units continuously correct to exact spot + facing after move_to arrival
Fix idle twitch: only broadcast player/NPC updates when position actually changes (>0.05m)
Only broadcast positions for moving NPCs — idle units skip 200ms updates
Add 200ms position broadcast for smoother NPC movement on remote clients
Move_to sets agenda to move_to, clears formation, prevents facing override
Fix TS: add moveToFacing to registerSingleNPC brain
Add facing direction to move_to: units rotate to commanded angle on arrival
Fix TS: import players in army.ts for move_to commander rotation
Move_to: every unit gets own target position, no officer-follow indirection
Fix TS error: cast anchor to non-null tuple
Fix formation offset: units without centurion still form 3m behind commander
Formation anchors on centurion: move_to moves officer, army follows in formation
NPC obstacle avoidance: steer around blockers instead of running in place
Move_to accepts positions array: client sends exact grid, server assigns by block index
Move_to supports line placement (x1,z1→x2,z2) with formation rows
Stronger unit push: 0.4 force at 0.8m so units actually move for each other
Soft body push: units slowly slide past each other when overlapping, gentle in formation
Fix move_to: add to commandMap so it passes validation
Add move_to army command: march units to world position then hold
Vegetation regresses growth stage when damaged by eating or trampling
Critter system: chickens and deer that eat vegetation, flee, reproduce, starve
Performance: cached army counts, batched NPC broadcast, reduced trampling frequency
Vegetation logging, NPC trampling, grass dies in 5 walks, trees immune
Fix pine spread: random tree selection so rare species get fair chance, bump spread to 5%
Align walk/idle threshold with movement deadzone (0.3m) to prevent phantom walk animation
Fix formation oscillation: clamp movement to remaining distance, prevent overshoot
Fix formation idle test for tighter 0.5m threshold
Tighter formation hold: 0.5m idle threshold, 1.0m min separation
Squad-grouped formation: sergeant + soldiers stay together in block
NPCs face same direction as commander in formation
Tighter default formation: 1.0m spacing, 1.5m row depth
Disable separation force when in formation — prevents jitter at tight spacing
Cap army at 80 units (Roman century)
Roman maniple formation: always 2 rows deep, wide front line
Formation as geometry: shield wall blocks in place, units never break ranks, Grok only on leaders
Fix TS error: handle optional allBrains in countArmyUnits
Unified army block formation: all units form tight grid behind commander, rank-ordered (centurion front-left)
Add army spacing API: GET/PUT /api/v1/army/spacing for adjustable formation spacing and row depth
Squad formation follow: soldiers form rows behind leader, faster movement to keep up with player
Include commanderId in player_joined and world_state for NPC relation resolution
Encounter revamp: spawn-army equips weapons, auto-enemy relations, draw weapons on spawn, seek_combat agenda
Add draw_weapons/sheathe_weapons army commands
Player relation system: enemy/neutral/ally with real-time NPC targeting, name color broadcasts
Encounter NPCs target real players; player attacks resolve against all NPCs in range
NPC combat animations: draw_weapon on combat entry, attack cooldowns (0.8s/1.5s), sheathe on exit
Fix encounter.ts: add equipped field to PlayerSyncState objects
Send equipment data in player_joined, world_state, NPC registration; army_refreshed broadcast on rank changes
Live NPC registration: recruits spawn instantly after purchase, dismiss removes live, army refresh on rank changes
Fix pong detection: allow 3 missed pongs (30s) before terminating, was too aggressive
Fix NPC clone: exclude commander from NPC spawn broadcast
Disable GameWorld (duplicate system), faster ping/reconnect, NPC spawn broadcast, vegetation production rates
Player death: no auto-respawn, stay dead until admin revive
Fix NPCs attacking real players: only target enemy NPCs, never real players
World NPCs: DB-driven NPC placements for shopkeepers, recruiters, etc
World NPCs: DB-driven NPC placements, admin placement UI support
Fix random disconnects: add WebSocket ping keepalive + Socket.IO timeout tuning
Add POST /api/v1/game/version — lightweight version metadata update
World objects: DB-driven buildings, props, structures with CRUD API
World objects: buildings/props DB table, CRUD API, bulk seed, WebSocket broadcasts
Biome spreading: trees drop seeds (3%), bushes spread (5%)
Ecosystem: vegetation growth, trampling, world time, planting
Ecosystem: vegetation growth, trampling, world time, seed endpoint
Add status + fear to npc_update: client can show fleeing/retreating indicators
Fix weapon range: load synchronously before NPC registration, log attack distances
Death context: both armies aware of kills, morale/fear effects
Permanent death: delete dead NPCs from DB, clean up army roster
Server-authoritative weapon range + recruit equipment in API response
Give recruits starting equipment on purchase: weapon + shield by type
Fix seek_combat NPCs not chasing: add 50m seek range for aggressive units
NPC banter: allies hear each other's speech and can respond
Fix units not engaging: all units close to melee within 8m, face targets
Ancient warfare combat: exhaustion-based, shield walls hold, flanking decisive
Fix NPC combat: actually call resolveAttack + encounter NPCs seek_combat + attack logging
Rebuild chain of command on recruit, death, and promotion
NPC permanent death + auto-promote replacements on death/dismiss
Fix leadership gaps: auto-promote missing decurions/sergeants, fix chain of command fallback
Chain of command: units follow their leader, not the player directly
Persistent AI armies: full Grok brains, DB-backed, battle records
Persistent AI armies: full Grok brains, DB-backed, battle_record table, self-learning foundation
Encounter system: spawn enemy armies + test bots for multiplayer/combat testing
Encounter system: spawn enemy armies + test bots for multiplayer/combat testing
Add march/advance command: units walk forward in commander's facing direction until halt
Add 'follow/follow me/with me/come' to fast path command patterns → form_up
Add 'resume' command: unlocks agenda so AI regains autonomous control
Fix Grok overriding player commands: agendaLocked flag prevents AI from resetting agenda
Add army integration tests: fear/bravery, aggression/defense balance, squad behavior, multi-army combat, edge cases
Add army behavior tree unit tests: 15 tests covering all command scenarios
Fix guard_position ignored: move agenda checks before combat approach, add audit logging
Fix commands not reaching NPC brains: sync in-memory state on command/dispatch
Remove hardcoded ring formation — let separation force + future Grok commands handle positioning
Fix NPC clumping: unit separation force, offset follow positions, wider spawn spread
Fix NPC movement speed: 0.08→2.5 run, 0.04→1.25 walk per 500ms tick
Generated 2026-07-16 from git across all CommsLink repos · page 4/6, showing 301–400 of 559 Platform ships · complete record: /changelog.txt · /changelog.json.