These 28 commits are when the Protocol Buffers files have changed:
| Commit: | b05bec4 | |
|---|---|---|
| Author: | Lei Shi | |
update genshin data
The documentation is generated from this commit.
| Commit: | c4eb3c9 | |
|---|---|---|
| Author: | Lei Shi | |
update genshin
| Commit: | 2205512 | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | GitHub | |
GCSim integration (#14) * WIP * WIP * Fix WasmExecutor lifecycle management in Teams component - Replace factory pattern with singleton executor using useRef - Add proper cleanup on component unmount to prevent memory leaks - Add running state check to prevent multiple simultaneous simulations - Implement cancel functionality with UI button - Add reactive worker count updates - Fix React warnings (missing keys, unused imports) - Enhanced UI with status display and worker count This fixes critical memory leak where new executors were created every 250ms, spawning hundreds of worker threads that were never cleaned up. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Create useWasmExecutor hook to simplify lifecycle management - Add useWasmExecutor hook that encapsulates all executor lifecycle logic - Provides clean API: { isReady, isRunning, run, cancel, validate, sample } - Handles initialization, cleanup, state polling, and worker management - Refactor Teams.tsx to use the new hook (70 LOC -> 48 LOC) - Improved code reusability across components Benefits: - Reduced Teams.tsx from 124 lines to 81 lines (~35% reduction) - Extracted 70+ lines of reusable lifecycle management code - Cleaner component code focusing on business logic - Type-safe API with full TypeScript support - Comprehensive JSDoc documentation with usage examples 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * remove sentry * Use SetSelect for set selector * Read genshin version from genshin-db * fix broken icons * Fix artififacts images * download weapon images * weapon selector * More scripts * More gcsim parsing * Fix gcsim option parsing and improve test suite ## Parser Fixes (scripts/gcsim.ts): - Add snake_case to camelCase conversion for options (swap_delay → swapDelay) - Fix option parsing to accumulate all options instead of overwriting - Set proper gcsim defaults (defhalt=true, hitlag=true, iteration=1000, workers=20, swapDelay=1) - Update regex to match boolean values (true/false) - Export parseScript for testing - Add numeric value parsing for options ## Serializer Fixes (src/utils/gcsim.ts): - Move options to serialize first (required format) - Add filtering for default values to match gcsim behavior - Filter out empty strings (fixes invalid frame_defaults=) - Fix physical damage bonus stat serialization (phys%) ## Test Suite Improvements: - Move all tests to dedicated tests/ directory - Implement random sampling in test-single-roundtrip.ts - Remove hardcoded and demo tests (test-defaults, test-explicit-false, test-stat-labels, test-target-type, verify-pairing) - Rewrite test-roundtrip.ts to process files individually (fixes pairing issue) - Add comprehensive tests/README.md documentation ## Configuration: - Add test scripts to package.json (test-roundtrip, analyze-diffs, clean-gen) - Ignore *.gen files in .gitignore - Regenerate gcsim.bin with fixes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Refactor gcsim simulation state management and add progress tracking - Centralize all simulation state in Teams.tsx parent component to prevent state loss during react-window List rerenders - Convert ScriptCard to presentation component receiving state as props - Add real-time progress bar showing iteration progress (current/total) - Track progress using result.statistics.iterations and simulator_settings.iterations - Fix results rendering issue caused by per-card state management 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * gcsim WIP * Add enemy data generation from gcsim localization - Create generate-enemy.mjs script to port enemy names from gcsim - Generate enemy.json translations for all 8 supported locales (359 enemies) - Generate proto/enemy.proto enum definition - Generate TypeScript enemy enum from proto - Add enemies.json data file for gcsim integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Add missing unrecognized and enemy_unspecified translations Fix i18next missing key error for unrecognized enemy types. Added translations for all 8 locales. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Add gcsim script configuration and artifact integration - Add collapsible script options configuration panel - Script options: iterations, workers, duration, ignore_burst_energy - Energy settings: type, start, end, amount - Target settings: enemy type, resistances, HP, particles - Implement artifact-to-stats conversion system - Convert character artifacts to GCSimScriptCharacterStat entries - Aggregate artifact sets into GCSimScriptSetInfo - Apply artifact stats when running simulations - Improve ScriptCard layout and i18n - Horizontal layout for characters and results on desktop - Full i18n support with character name translations - Constant height progress bar to prevent layout shifts - Refactor components for maintainability - Split options into ScriptOptionsSection, EnergySettingsSection, TargetSettingsSection - Visual grouping with card-based UI design - Add translations for all new UI text in 8 languages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Add character override system for gcsim scripts - Add SelectedCharacterCard component for configuring character overrides - Level/maxLevel with intelligent inference (auto-sets maxLevel based on level) - Constellation selection (0-6) - Talents override (3 values, 1-10 each) - Weapon selection filtered by character's weapon type - Set selection with + button (max 2 sets, 4pc or 2x2pc) - Update CharacterInfo to show level instead of character name - Display override values when enabled - Add inferMaxLevel utility to src/utils/gcsim.ts - Auto-infers maxLevel from level at non-ascension boundaries - Shows dropdown at ascension boundaries (20, 40, 50, 60, 70, 80, 90, 95) - Add translations for character override UI (8 locales) - Fix Tailwind config to include TypeScript files in content array 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Add GOOD format character/weapon parsing and gcsim enhancements - Add import utilities for GOOD and Mona format parsing - New src/genshin/import.ts with type definitions - New src/utils/import.ts with parsing functions - Support character info (level, maxLevel, constellation, talents) - Support weapon info with location tracking - Enhance uploaded artifacts display - Show format badge, artifact/character/weapon counts - Update UploadedArtifacts and Select pages - Improve gcsim Teams page - Auto-populate character overrides from GOOD data - Infer artifact sets from equipped artifacts - Use uploaded weapon data when selecting weapon override - Add copy script button with clipboard fallback - Update GCSim loading state with custom spinner - Add translations for all new UI strings (8 locales) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix cancel simulation not clearing script running states When clicking Cancel Simulation, the script's Run button would stay disabled because the isRunning flag wasn't being cleared. Added handleCancel that clears isRunning for all scripts and sets an error message indicating the simulation was cancelled. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * update gitignore * Update gcsim submodule to valid upstream commit The previous commit (a13d7a96) no longer exists in upstream gcsim repository (was force-pushed away), causing Cloudflare build failures. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * update packgae-info.json * Add optimized WASM build script - Create scripts/build-wasm.sh with -w -s flags to strip debug symbols - Optionally uses wasm-opt if available for additional optimization - Update package.json to use new build script 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Pre-compress WASM to fit Cloudflare Pages 25MB limit - Update build script to gzip WASM (37MB -> 6.4MB) - Add _headers file to serve with Content-Encoding: gzip - Browser automatically decompresses gzipped WASM 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Add gzip decompression support to WASM workers Workers now detect gzip-compressed WASM (magic bytes 0x1f 0x8b) and decompress using DecompressionStream before instantiating. Works with both compressed (production) and uncompressed (dev) WASM. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
| Commit: | ecaa31d | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
Add enemy data generation from gcsim localization - Create generate-enemy.mjs script to port enemy names from gcsim - Generate enemy.json translations for all 8 supported locales (359 enemies) - Generate proto/enemy.proto enum definition - Generate TypeScript enemy enum from proto - Add enemies.json data file for gcsim integration 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
| Commit: | f52fe47 | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
More gcsim parsing
| Commit: | 2ee69e3 | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
More scripts
| Commit: | 3f86503 | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
WIP
| Commit: | 26ecb16 | |
|---|---|---|
| Author: | Lei Shi | |
update
| Commit: | f97f9d6 | |
|---|---|---|
| Author: | Lei Shi | |
update
| Commit: | ae28cc0 | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
5.0.0 update
| Commit: | a8d74aa | |
|---|---|---|
| Author: | Lei Shi | |
update 4.8
| Commit: | 6b3a1a8 | |
|---|---|---|
| Author: | Lei Shi | |
4.8 update
| Commit: | 8da6158 | |
|---|---|---|
| Author: | Lei Shi | |
4.5 update
| Commit: | 5254499 | |
|---|---|---|
| Author: | Lei Shi | |
4.4 update
| Commit: | 63935da | |
|---|---|---|
| Author: | Lei Shi | |
4.3 update
| Commit: | 2d2e9fc | |
|---|---|---|
| Author: | Lei Shi | |
WIP
| Commit: | 60f4d2c | |
|---|---|---|
| Author: | Lei Shi | |
gcsim WIP
| Commit: | d21aa7f | |
|---|---|---|
| Author: | Lei Shi | |
4.2 update
| Commit: | 0f7ca0e | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
4.1 update
| Commit: | d0f39fc | |
|---|---|---|
| Author: | Lei Shi | |
4.0 update
| Commit: | 4bcebc8 | |
|---|---|---|
| Author: | Lei Shi | |
3.7 update
| Commit: | 37fd222 | |
|---|---|---|
| Author: | Lei Shi | |
3.6 update
| Commit: | 9d2f07a | |
|---|---|---|
| Author: | Lei Shi | |
add dehya
| Commit: | a1a5814 | |
|---|---|---|
| Author: | Lei Shi | |
support high level fitness calculation
| Commit: | 8f4da50 | |
|---|---|---|
| Author: | Lei Shi | |
update 3.4
| Commit: | cd7dc4c | |
|---|---|---|
| Author: | Lei Shi | |
add weapon type and character weapon type
| Commit: | 041a71a | |
|---|---|---|
| Author: | Lei Shi | |
| Committer: | Lei Shi | |
yas-lock.json
| Commit: | 4bac3cf | |
|---|---|---|
| Author: | Lei Shi | |
first commit