Proto commits in LeiShi1313/genshin-aritifact-analyzer

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