- Replace vertical "research ladder" list with a visual tech tree rendered as
connected node badges showing prerequisites and branch structure
- Add `initialField` parameter to `openResearchScreen` to open on a specific
category instead of always defaulting to the first one
- Add "View Research" shortcut button on turn report when a tech completes,
jumping directly to that field
- Add Cerebrai species research video (research-cerebrai.mp4)
Introduce colony naming with a 50-name bank per species, shuffled
per-empire and displayed as defaults in naming prompts. Colony names
now appear across all UI layers (star map, side panel, colony view,
system view) with the astronomical designation as fallback.
Add three pure-flavor conversation topics to diplomacy: "Their People"
(neutral+), "Their Homeworld" (friendly), and "A Story" (friendly).
Each diplomacy-capable species receives unique lore-rich responses
(3 variants each) reflecting their culture, homeworld, and history.
Other changes:
- Switch ursaal videos from generic "human" assets to species-specific
- Widen diplomacy buttons to 200px; add auto-shrink for long labels
- Add ±5 population transport buttons to colony view
- Validate colonyNames (50+ entries, no duplicates)
- Enforce minimum lore variant counts in verification
Replace the eager `ensureAudienceVideos()` warm-up (which loaded all three
mood clips per species upfront) with on-demand JIT loading — only the mood
about to be shown is fetched. This saves several megabytes per species since
most conversations never cycle through all moods.
- Remove `ensureAudienceVideos()` and its call in `openAudienceScreen()`
- Load each mood clip only when `show()` is first called for that mood
- Show a letterboxed placeholder for the very first clip until the fetch lands
- Keep whatever is already on screen while a new mood loads in the background
- Add `destroy()` guard to prevent in-flight fetches from mutating a torn-down
container when the audience screen is closed
Also ship the dedicated Kestrelli audience clips (angry, neutral, happy) to
replace the previous human fallback videos for that species.
- Add Colony Transport ('poptransport') hull, dispatched directly in transit
from a Send Population order rather than built from the queue. Shares the
Troop Transport's hull art and uses the colony ship's commander clip.
- Implement VegaLogic sendPopulation/deliverPopulation flow: clamped to
maxSendablePopulation (leaves 0.5 floor), creates poptransport fleet
immediately, auto-delivers on arrival capped at destination max pop.
- Add Send Population button and overlay picker in colony view with
destination list, ETA display, amount dial, and MAX button.
- Log populationSent/populationDelivered events in the turn report.
- Refactor VegaAudience mood visuals to play-once-and-hold-last-frame with
a clickable replay badge, mirroring VegaColonyIntro's video contract.
- Seed human audience mood clips (angry/neutral/happy) into artwork config
as placeholders for all diplomacy-capable species.
- Add verification tests for poptransport mechanics and video aliasing.
- Rewrite contact detection from proximity-based (parsec-range) to
star-scoped: empires now meet by sharing a system (colonies or fleets),
making first-contact a visible event rather than a silent background
check.
- Add full-screen Audience interface (VegaAudience.js) with species-specific
mood videos (or letterboxed portrait fallbacks), a typewriter chat log,
and contextual action buttons. Auto-opens on first contact via a queue
system in MasterOfVegaGame.
- Add VegaChat.js with unique dialogue pools for all 9 diplomacy-capable
species across 18+ situations (first contact, peace/alliance offers,
war declarations, tech trades, accept/reject responses, etc.).
- Introduce held diplomacy offers: AI proposals to the human are queued
(pendingOffers) instead of auto-resolved, with player Accept/Reject
buttons in the Audience screen and automatic expiry after 6 turns.
- Add audienceVideos config and JIT-loading infrastructure in VegaArt.js.
- Add ship videos for kkrix and mekhan species.
- Simplify openDiplomacyScreen to a single "Seek Audience" button.
- Fix colony view to filter out 'starbase' from building display list.
- Add comprehensive verification in tools/verifyMasterOfVega.js for
contact system, held offers, chat completeness, audience videos,
and serialization of new state fields.
- Remove obsolete contactRange rule from mastervega-rules.json.
Replace the turn-report "New Turn" popup row with a cinematic vignette that
plays the moment the player plants a colony: the soundtrack ducks, the world's
1920×1080 backdrop fills the screen, a 960×544 clip of this world being settled
plays in a framed window, and the founding numbers are read out underneath.
Key changes:
- Add `colonyVideos` block (15 clips, one per colonisable planet type) to
artwork JSON; clips are fetched just-in-time via ensureColonyVideo() when a
colony ship reaches a settleable world, keeping the set (~19 MB) out of the
eager manifest
- Add `vega-colony-cue` audio to the eager manifest for the founding soundtrack
- Remove `colonised` from NOTABLE_TYPES and TYPE_LABEL so the event is no longer
announced twice (once in the vignette, once in the turn report)
- Add `sourceWidth()` guard in VegaArt.js to fix a Phaser Video placeholder
width bug exposed by the non-square 960×544 colony clips (2.5× scale issue)
- Apply `sourceWidth()` to portrait and commander video scaling paths as well
- Add depth entry `intro: 78` to VegaScreens.js for the vignette overlay
- Add section 6b to the verifier: checks manifest exclusion, key conventions,
sourceWidth() behavior, turn-report classification, and colony stats
See build-plan trap #23 for the full sourceWidth() explanation.
- Add human ship spritesheet (ships.png) and increase frame size to 192x192
- Add jungle world background texture (world-jungle-01.png)
- Add human ship animation videos (scout, frigate, destroyer, cruiser,
battleship, transport, colony)
- Enable species card selection with required choice before starting game
- Disable "Begin" button until a species is selected
- Add title logo breathing animation and light sweep effect on landing screen
- Reposition title and start button on landing layout
- Add video, still, and procedural three-tier portrait system for all 10 species
- Add species-specific speech clips and UI voiceover (SpeechQueue integration)
- Add landing screen with New Game / Resume / Return to Arcade buttons
- Add species detail pop-over with animated expand/collapse and auto-introduction
- Add game-specific soundtrack (masterofvega-music.json, 4 tracks)
- Add video asset type support in assetLoader and PreloadScene
- Add portraitVideos and portraitStills sections to artwork manifest
- Add verification for portraits, speech clips, and music tracks
- Update sprites.md with documentation for new assets and filenames
Add character assets (sprites/videos) and sound effects for Aiko, Blackwind,
DV-8-2303, Kage, Nadia, Nicole, and Steve.
Power overhauls:
- Extreme Ball: lasts 2 shots, cascade splits into 4 balls on 2nd bounces
- Cannonball: adds Space Blast-style explosion on green peg trigger
- Beam Up: retargets to a clear-path orange peg on return
- Overclock: lasts 2 shots, grants free ball every 6 pegs, pitch-rising hum
- Laser Sweep: follow-up sweep on random orange peg after 1s delay
- Shadow Slash: follow-up slash on random orange peg after 1s delay
- Cosmic Bloom: adds small Space Blast around green peg
- Rewind: glitch effect, portal opens targeting clear orange peg, refunds on drain
Add visual effects (shockwave rings, portal animation, glitch bars, split
particles), happy reaction dedup per ball, and comprehensive verification
tests for all new mechanics.
- Replace uniform orange peg selection with weighted sampling, favoring circle pegs over brick sections (~2:1 ratio) to keep gameplay peg-centric
- Rework Body Slam (The Smasher) power to launch at 0.7× speed with reduced gravity, aligning physics with updated power documentation
- Adjust orange/green peg counts for levels 26, 27, 30, and 32 to fine-tune difficulty
- Add Maurice character assets (PNG & MP4)
- Clean up redundant portrait emotion triggers and add verification tests for weighted sampling and slam ball behavior
Expand Peggle from 5 to 25 levels (5 per friend) with unique shapes and
progressive difficulty. Each friend block (Ethel, Kona, Zanthor, Fireball,
Victor) gets distinct names, backgrounds, and level layouts.
- Redesign level select: one row per friend showing portrait, name, power,
and their 5 level tiles
- Add friend intro screens: video (or portrait fallback), bio, and power
explainer before each friend's first level
- Intros skip on replay/try-again; input hold prevents accidental cannon
launches after UI clicks
- Add intro videos for Ethel and Kona; document the video system
- Update level generator with `pentagram()` helper and 5 variants per friend
- Verify block integrity, intro markers (1,6,11,16,21), and level name uniqueness