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,363 ships and counting.
Trees now trampleable: 7 dmg per walk (~15 walks to kill vs 5 for grass)
Center formation behind commander: centurion centered, soldiers grid centered around centurion
Add 20-troop formation geometry simulation tests
Fix formation walk-in-place: widen idle threshold to 0.5m to prevent push oscillation
Fix TS: add preyId/killStarted to baby CritterState in mating
Widen NPC-to-NPC push to 1.5m so they can walk past each other
Seeded critters spawn as adults, NPCs dodge away from players, gene inheritance
Behavioral genes: boldness, speed, social, hunger tolerance, curiosity — inherited with mutation
NPC trampling matches player rate: every movement tick, no throttle
Fix watch party pause: update local state immediately on custom control click
Increase NPC trampling to 20% per tick
Fix ChatInput optional props for watch party compact mode
Watch party: video full-size in main area, chat moves to side panel tab
Watch party: paste YouTube URL in chat to start synced video for the room
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
Add AI Fight Club to landing page products with download button
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)
Army chat spacing commands: tighten up/phalanx, normal spacing, spread out/loose
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
Rebalance combat for ancient warfare feel: slower, formation-based
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
Generated 2026-07-17 from git across all CommsLink repos · page 20/24, showing 1,901–2,000 of 2,363 ships · complete record: /changelog.txt · /changelog.json.