All notable changes to VSCode Aquarium are documented in this file.
- 5 new Fancy Goldfish species - Calico Oranda, Calico Ranchu, Cow Ranchu, Lionhead Oranda, Redcap Oranda; each with 3 color variants and accurate swim physics (slow, round-body wag, mid-lower tank zone)
- Fancy Goldfish spawn category - new section in the spawn panel grouping all 5 goldfish variants together
- Rating toast - subtle slide-up prompt after 45 seconds asking users to rate on the marketplace; "Maybe later" snoozes for 14 days, "Rate it" opens the marketplace and never shows again
- All goldfish species join the schooling set, swimming in loose social groups
- 20-fish tank capacity - raised hard limit from 10 to 20; HUD counter and full-tank warning update automatically
- Premium UI/UX overhaul - deep ocean glassmorphism HUD (
rgba(3,10,24,0.93)navy base), teal accent border and inner glow, pill-shaped food selector with active state, gold coin counter, logical separator dividers - Spawn panel redesign - sticky header, fish grouped into four biological categories (Apex Predators / Cichlids / Catfish & Bottom / Community), pill-shaped variant buttons with teal hover glow, custom teal scrollbar
- HUD tooltips - replaced native OS
title=tooltips (unstyled) with CSSdata-tooltiptooltips; dark navy gradient box, teal border, upward arrow, slide-in animation - Canvas fish-click tooltip - dynamic width based on text measurement, teal left accent bar, separator line below species name, species name in sky-300 teal, stat lines with opacity tiers, smooth fade-in (0.18 s) and fade-out (0.4 s)
- Fish pile-on bug: when a large food drop lands at one spot, all fish converged on the same pellet causing every fish to lock to the same vertical position. Each pellet is now claimed by exactly one fish; other fish pick the next nearest unclaimed pellet. Fish also scatter immediately after eating instead of lingering at the food spot until the wander timer expires.
- Arapaima: apex predator, surface zone, variants: Natural / Gold / Juvenile
- German Ram: territorial cichlid, bottom zone, variants: Natural / Female / Gold
- Iridescent Shark (Cream Dory): schooling species, mid zone, variants: Natural / Juvenile / Albino
- Replaced Electric Blue Ram sprite with higher-quality image (direction corrected; Electric Blue Ram variant renamed from
german→longfin)
- Black screen regression:
zoomBtnwas referenced inaquarium.jsbut missing fromaquarium.html, causing an uncaught TypeError that crashed the entire init script before any fish or canvas rendered - Removed 8 stale goldfish sprite files from
media/root that were no longer used after the v1.5.0 species reorganization (blackmoor, calico, giantgourami, lionhead, redcap, shubukin, oscar.png, ag-rtc-pleco.png)
- Black screen and missing fish on fresh install:
window.FISH_ASSETSinaquarium.htmlwas out of sync withextension.ts- Removed 6 stale goldfish species entries (Giant Gourami, Black Moor, Lionhead, Shubunkin, Calico Oranda, Red Cap Oranda) that had unreplaced
{{...}}URI placeholders - Added 6 missing species that were in
extension.tsbut absent fromFISH_ASSETS: Tilapia, Indonesian Tiger, Electric Blue Ram, Diamond Stingray, Cherry Barb, Angelfish
- Removed 6 stale goldfish species entries (Giant Gourami, Black Moor, Lionhead, Shubunkin, Calico Oranda, Red Cap Oranda) that had unreplaced
- Spawn panel now shows the correct 16 current species; removed the 6 stale goldfish rows that pointed to non-existent species
loadSprites()now filters out any unreplaced template placeholders ({{...}}) as a defensive guard, preventing this class of bug from recurring ifaquarium.htmlandextension.tsdrift out of sync again
- Fish Behaviors
- Schooling: Cherry Barb and Silver Dollar swim in coordinated Boids formations (separation, alignment, cohesion)
- Territorial patrol: Oscar, Flowerhorn, Peacock Bass, and Electric Blue Ram each guard a home zone
- Arowana surface breach: rare upward lunge toward the water surface, mimicking real hunting behavior
- Arowana speed burst: spontaneous horizontal dash every 25-45s, independent of the breach
- Pleco substrate parking: pleco periodically rests motionless on the tank floor
- Predator-Prey Chase System (purely cosmetic - no fish are harmed)
- Predators (Arowana, Alligator Gar, Snakehead, Indonesian Tiger) detect and charge at small fish within 280px
- Both predator and prey alternate between cruise and sprint phases during a chase
- Predator bursts to 2.8× speed every 2-3.5s; prey counter-bursts to 3.2-4.6× speed every 0.8-1.6s
- Cherry Barb and Electric Blue Ram flee predators and scatter naturally (each fish reacts independently)
- Chase ends after 3.5-5.5s or if prey escapes; both decelerate organically via velocity smoothing
- Tank starts empty by default - no pre-spawned fish on first launch
- Reset button clears all fish rather than restoring a default set
- Retroactive migration: existing sessions with old default fish are cleared on upgrade
- Fish sprite images moved to
media/fish/subfolder; web assets remain inmedia/
- 30 FPS cap (previously targeting 60 FPS) - halves CPU draw calls with no visible loss of animation quality
- Pre-baked color variants: color filters applied once at startup, eliminating per-frame
ctx.filteroverhead (largest GPU win) - 512px sprite height cap on load - reduces VRAM usage and speeds up white-background removal ~9× for oversized source images
- 10-fish hard limit with on-screen indicator - prevents unbounded per-frame draw calls
- Rendering pauses automatically when the aquarium panel is hidden (zero CPU when not visible)
- Full-resolution sprites preserved for draw-time GPU scaling - sharp at any VS Code zoom level
- Angelfish black color variant now renders with a correct dark silhouette filter instead of appearing as a plain shadow
- Fish sprites stay sharp when VS Code UI is zoomed in (removed pre-scaling to a fixed pixel size)
-
Game Mechanics
- Hunger system: fish slowly starve (2-3 hours), must feed to keep alive
- Food preferences: each species prefers certain foods (cricket, shrimp, superworm, pellet)
- Feeding behavior: hungry fish chase food, preferred food yields more satiety and coins
- Growth system: fish grow up to 50 percent larger as they eat (visible size scaling)
- Death and respawn: starving fish float belly-up to surface, fade, then disappear
- Waste management: uneaten food spawns debris on gravel, clean button clears it (5-min cooldown)
- Coins: earned by feeding, persistent across sessions via globalState
- Day/Night cycle: real wall-clock based, aquarium darkens 20:00-07:00 with moon shimmer
- Hunger indicators: blinking exclamation mark above hungry fish (orange at 45%+, red at 75%+)
-
Fish Species (Freshwater)
- Arowana (top swimmer, loves cricket and shrimp)
- Oscar Cichlid (mid-tank, prefers pellets)
- Snakehead (aggressive, opportunistic)
- Peacock Bass (vibrant mid-range)
- Alligator Gar (predatory bottom explorer)
- Red-Tailed Catfish (bottom dweller, forages when hungry)
- Pleco (algae eater, gravel-hugging)
- Flowerhorn (colorful mid-tank cichlid)
-
User Interface
- Font Awesome 7 icon system (professional UI)
- Live clock display (HH:MM, synced to system time)
- Tooltip system: click fish to see species, hunger percent, size percent, mood, preferred food
- Food selector: icon buttons for pellet, superworm, cricket, shrimp
- Status bar integration: shows tank summary and coin count
- Responsive canvas: scales to panel size
-
Environment and Rendering
- Dynamic water gradient with depth caustics
- Gravel floor with fish shadows
- Organic bubble animation with sine-wave drift
- Procedurally generated swaying plants
- Day/night overlay (20:00 dusk, 22:00-05:00 deep night with moon)
-
Performance
- Sprite-based fish rendering (60 FPS target)
- Pre-baked background canvas (gradient and gravel)
- Cached plant gradients
- Efficient tail animation (two-part clip regions)
- 2-5 MB extension footprint
-
Developer Features
- Modular architecture (extension.ts host, aquarium.js webview)
- Sprite system with automatic white-background removal
- Food preference and hunger decay maps per species
- IPC messaging for state sync
- globalState persistence for coins and growth
- Complete HUD redesign: emoji replaced with Font Awesome icons
- Food dropdown replaced with icon button group
- Enhanced visual hierarchy with tabular-nums clock and backdrop blur
- Improved fish sprite quality and animation smoothness
- Operator precedence bug in hunger indicator blinking logic
- RTC catfish zone corrected (now proper bottom dweller at yMin 0.68)
- Font-relative path in Font Awesome CSS
- Coins persistence: now properly sent in pushState() to webview on reload
- CSP hardened: font-src added for woff2 loading
- No external CDN dependencies (Font Awesome bundled locally)
- Nonce-based script injection for webview security
- Basic canvas rendering with fish sprites
- Pellet and food mechanics
- Fish spawning and movement
- Water gradient background
- Bubbles and plant animations
- VS Code integration and status bar