← Back to Home

Changelog

All notable changes to this project are documented in this file.

Languages: English | 中文摘要

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


2.0.0 - 2026-03-09

🎯 Release Highlights

Major release introducing frame-rate independent physics, critical bug fixes, and comprehensive CI/CD infrastructure. This release ensures consistent simulation speed across all devices regardless of refresh rate.

✨ New Features

Physics Engine

Mobile Support

Infrastructure

🔧 Breaking Changes

Physics Constants Rescaled

Constant v1.0.0 v2.0.0 Unit Impact
GRAVITY.y 0.1 600 px/s² Simulation now frame-rate independent
REPULSION_STRENGTH 50 3000 px/s Scaled for per-second physics

Migration: If you customized these values, multiply by 60 (for 60 FPS baseline).

Uniform Buffer Layout

// v1.0.0 (16 bytes)
struct Uniforms {
  canvasSize: vec2f,
  mousePos: vec2f,
}

// v2.0.0 (32 bytes)
struct Uniforms {
  canvasSize: vec2f,
  mousePos: vec2f,
  deltaTime: f32,
  _pad1: f32,
  _pad2: f32,
  _pad3: f32,
}

🐛 Bug Fixes

Issue Severity Description Fix
Memory leak 🔴 Critical setupCanvas() accumulated resize listeners Moved event handling to caller
Duplicate handlers 🔴 Critical Both setupCanvas() and main.ts added listeners Single handler in main.ts
Frame-rate dependency 🔴 Critical Physics speed varied with FPS Added deltaTime scaling
Lockfile drift 🟡 High package-lock.json out of sync Regenerated lockfile
ESLint error 🟢 Medium prefer-const violation Fixed variable declaration

📚 Documentation

📦 Dependencies

Updated to latest compatible versions:


1.0.0 - 2025-02-13

🎉 Initial Release

First public release of the WebGPU Particle Fluid Simulation.

✨ Features

Core Simulation

Technical

Project Setup


变更日志摘要

版本历史

版本 日期 主要更新
2.0.0 2026-03-09 帧率无关物理引擎、关键 Bug 修复、CI/CD 基础设施
1.0.0 2025-02-13 初始版本,WebGPU 计算着色器粒子仿真

2.0.0 关键变更

破坏性变更 ⚠️

新功能 ✨

修复的 Bug 🐛

文档更新 📚


Migration Guides

Upgrading from 1.0.0 to 2.0.0

1. Update Custom Physics Constants

// Before (v1.0.0)
export const GRAVITY = { x: 0.0, y: 0.1 };
export const REPULSION_STRENGTH = 50;

// After (v2.0.0)
export const GRAVITY = { x: 0.0, y: 600.0 };
export const REPULSION_STRENGTH = 3000.0;

2. Update Custom Shaders

Add deltaTime to your Uniforms struct:

struct Uniforms {
  canvasSize: vec2f,
  mousePos: vec2f,
  deltaTime: f32,    // NEW
  _pad1: f32,        // NEW
  _pad2: f32,        // NEW
  _pad3: f32,        // NEW
}

3. Update Physics Calculations

// Before (v1.0.0)
p.velocity += gravity;
p.position += p.velocity;

// After (v2.0.0)
p.velocity += gravity * uniforms.deltaTime;
p.position += p.velocity * uniforms.deltaTime;

Version History Summary

Version Date Key Changes
2.0.0 2026-03-09 Frame-rate independent physics, deltaTime, velocity clamping, CI/CD
1.0.0 2025-02-13 Initial release, WebGPU compute shaders, adaptive quality

Contributors

Thanks to all contributors who have helped improve this project!

See GitHub Contributors for the full list.


Changelog Version: 2.0.0 | Last Updated: 2026-04-27