Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
174 commits
Select commit Hold shift + click to select a range
16d9d1e
Add Weapon slot and weapon type freezing
1337LutZ May 16, 2026
e159318
Add translation schema
1337LutZ May 16, 2026
ff64fd7
Add Optimisation rounds
1337LutZ May 17, 2026
0e17a0b
Add Bulk Sim stages support
1337LutZ May 18, 2026
899467d
Add dynamic iteration count based on error percentages
1337LutZ May 18, 2026
860cd36
Merge branch 'feature/balance-p5' into feature/bulk-sim-stages
1337LutZ May 18, 2026
cd273bf
Merge branch 'master' into feature/bulk-sim-stages
1337LutZ May 19, 2026
c8d19c1
Fix timeout going negative
1337LutZ May 19, 2026
25d60b6
Revert "Merge branch 'feature/balance-p5' into feature/bulk-sim-stages"
1337LutZ May 19, 2026
2aa15d2
Add tracking for combinations / reforges
1337LutZ May 19, 2026
2714cfa
Add duration debugging statements
1337LutZ May 19, 2026
49fbabd
Remove dps data from tracking
1337LutZ May 19, 2026
6168f5e
Add local bulksim option
1337LutZ May 20, 2026
b6caf70
Add reforge caching
1337LutZ May 20, 2026
d9564b5
Refactor reforger worker to use workerpool and fix dedupe logic
1337LutZ May 20, 2026
00aa2b3
Refactor WASM sim files & split bulk Simming code from tab
1337LutZ May 20, 2026
055f1ae
fix devmode default false
1337LutZ May 20, 2026
2447eec
Update translations
1337LutZ May 20, 2026
62bc994
Add adaptive stages
1337LutZ May 20, 2026
cf183e6
Fix min workers
1337LutZ May 20, 2026
d778aa6
Open/Close reforge DB after R/W
1337LutZ May 21, 2026
6def405
Fix Destro T16 4P
1337LutZ May 21, 2026
70b6c7f
Adaptive batch run is now offset only
1337LutZ May 21, 2026
8b86cd4
Merge branch 'master' into feature/bulk-sim-stages-go
1337LutZ May 21, 2026
e1e6dd5
Improved interval overlap checking
1337LutZ May 21, 2026
a2208fb
Backend Highs with C
1337LutZ May 23, 2026
28ee2a0
Relative stat caps are working
1337LutZ May 23, 2026
ae4e3e8
Bulk Sim can now Reforge
1337LutZ May 24, 2026
08c8210
add reforge cache update on partial aborts
1337LutZ May 24, 2026
3cecdbc
wasm bulk reforge is now multithreaded
1337LutZ May 24, 2026
16c8dbe
Fix Bulk Sim WASM concurrency
1337LutZ May 25, 2026
42284ce
Fix reforge concurrency
1337LutZ May 25, 2026
bb49fa4
Fix WASM Bulk Sim progress estimate
1337LutZ May 25, 2026
74c8cc6
Migrate wasmtime to wazero for cross platform compat
1337LutZ May 25, 2026
94c12c8
Remove include timeout
1337LutZ May 25, 2026
c11e7eb
Add high combinations stage scaling for low/medium
1337LutZ May 25, 2026
2673f98
Merge branch 'feature/phase-5-ptr-item-gen' into feature/bulk-sim-sta…
1337LutZ May 26, 2026
68b2522
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 26, 2026
503c56b
Add Set Bonus filtering & remove deprecated Fallback gems option
1337LutZ May 26, 2026
386ef81
revert release.yml changes
1337LutZ May 26, 2026
918cfc9
Merge branch 'master' into feature/bulk-sim-stages-go
1337LutZ May 26, 2026
e5d79c2
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 26, 2026
da61c61
Merge branch 'master' into feature/bulk-sim-stages-go
1337LutZ May 26, 2026
ac1db42
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 26, 2026
5c8265e
Fix AllowedRace masks and run PTR DB
1337LutZ May 1, 2026
e878443
Unstage
1337LutZ May 26, 2026
b42f327
Revert "Revert "Merge branch 'feature/balance-p5' into feature/bulk-s…
1337LutZ May 26, 2026
232cee4
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 26, 2026
31cd38f
Merge branch 'feature/mage' into feature/bulk-sim-stages-go
1337LutZ May 26, 2026
5b327f8
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 26, 2026
60563eb
Fix combinations text calc
1337LutZ May 26, 2026
21eb4cc
Cleanup suggest reforge action
1337LutZ May 29, 2026
27b4e43
Merge branch 'master' into feature/backend-reforge
1337LutZ May 29, 2026
c7332d6
Merge branch 'master' into feature/bulk-sim-stages-go
1337LutZ May 29, 2026
be70c76
Merge branch 'feature/bulk-sim-stages-go' into feature/backend-reforge
1337LutZ May 29, 2026
ae51fad
Add reforge optimizer config unit test
1337LutZ May 29, 2026
75efe04
Fix dual wield same weapons
1337LutZ May 29, 2026
e288d21
Fix equipped item / saved bulk gear race statement
1337LutZ May 30, 2026
2663c44
Fix cache key proto json generation
1337LutZ May 30, 2026
f2b8478
Fix WASM reforging and reuse config/cache key logic
1337LutZ May 30, 2026
e2d3923
Add partial reforge candidate caching through progress metrics
1337LutZ Jun 1, 2026
02afe8d
Initial backend candidate gen
1337LutZ Jun 2, 2026
622bb97
Add backend combination/candidates generation for local and wasm
1337LutZ Jun 2, 2026
650d394
Candidates build optimisations
1337LutZ Jun 2, 2026
b7c99fe
Add Go > TS codegen for shared configs & move bulk candidate/combinat…
1337LutZ Jun 2, 2026
3925341
Additional cleanup
1337LutZ Jun 2, 2026
cfda905
Add incremental reforge cache restore
1337LutZ Jun 3, 2026
33c64c1
Merge branch 'feature/backend-reforge' into feature/backend-bulk-cand…
1337LutZ Jun 3, 2026
353375e
Candidates optimisations & combo fixes
1337LutZ Jun 3, 2026
930107d
Update skill
1337LutZ Jun 3, 2026
fc3087b
Move bulk to subfolder & fix candidates async rendering
1337LutZ Jun 3, 2026
b712420
Move bulk to bulk folder
1337LutZ Jun 3, 2026
86e6ca0
Merge branch 'feature/backend-reforge' into feature/backend-bulk-cand…
1337LutZ Jun 3, 2026
f3a1a3e
Optimise gear key gen
1337LutZ Jun 3, 2026
64d1277
Merge branch 'feature/backend-reforge' into feature/backend-bulk-cand…
1337LutZ Jun 3, 2026
aa7f521
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 3, 2026
70ad1aa
Merge branch 'feature/shadow' into feature/backend-reforge
1337LutZ Jun 3, 2026
51087a1
Merge branch 'feature/backend-reforge' into feature/backend-bulk-cand…
1337LutZ Jun 3, 2026
a880e15
Fix imports
1337LutZ Jun 3, 2026
0f2cb96
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 5, 2026
d5a2a97
Update tests
1337LutZ Jun 5, 2026
48e756e
Merge branch 'feature/backend-reforge' into feature/backend-bulk-cand…
1337LutZ Jun 5, 2026
59b1a6e
minor cleanup
1337LutZ Jun 5, 2026
9f22167
Change multi stage sim to default
1337LutZ Jun 5, 2026
08f080e
Fix legacy port
1337LutZ Jun 5, 2026
04debf6
reorder
1337LutZ Jun 5, 2026
04f23ab
reorder
1337LutZ Jun 5, 2026
3e63823
Add progMetric.FinalReforgeResult
1337LutZ Jun 5, 2026
62766fa
Merge pull request #1448 from wowsims/feature/backend-bulk-candidates
1337LutZ Jun 6, 2026
d0e09b7
Fix web iterations limit
1337LutZ Jun 6, 2026
4d48cce
Improve native sim detection
1337LutZ Jun 6, 2026
1212fca
update translation schema
1337LutZ Jun 6, 2026
15bc75d
Fix missing command
1337LutZ Jun 6, 2026
8e6faba
Fix css class
1337LutZ Jun 6, 2026
8e18a6c
Remove redundant translation
1337LutZ Jun 6, 2026
2e30e95
Add reforge queue/pooling in backend for 20% perf gain
1337LutZ Jun 7, 2026
e0e49e2
Fix potential reforge config hash mismatch
1337LutZ Jun 7, 2026
5fc5821
Fix gear not restoring from cache
1337LutZ Jun 7, 2026
ccbb394
Addd yield to candindate restor
1337LutZ Jun 7, 2026
3341ebe
Optimise gear > gearspec for cache efficiency
1337LutZ Jun 7, 2026
22879fe
Fix full cache restore bypass
1337LutZ Jun 7, 2026
3cdbe6b
fix gear hashes
1337LutZ Jun 8, 2026
420fdc9
Performance optimisations
1337LutZ Jun 9, 2026
6f110ee
Add candidates logging
1337LutZ Jun 9, 2026
e7b4511
re-order var def
1337LutZ Jun 9, 2026
b9570df
Update skills files
1337LutZ Jun 9, 2026
3a4a0a1
Extended asyncProgress to keep track of candidates
1337LutZ Jun 9, 2026
6b156e7
Split async progress from main & add optimized candidates mutex
1337LutZ Jun 9, 2026
a39aa70
Fix unknown reforge crash
1337LutZ Jun 9, 2026
a10b623
Fix being able to sim with 1 combination
1337LutZ Jun 9, 2026
a49413d
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 9, 2026
456f854
Update tests
1337LutZ Jun 9, 2026
94e0163
Add more test cases & improve overall performance
1337LutZ Jun 10, 2026
8edd008
Fix nil pointer when inherit upgrades is enabled
1337LutZ Jun 10, 2026
db90547
Fix Balance breakpoints limit
1337LutZ Jun 10, 2026
7b99bae
Merge branch 'feature/warlock' into feature/backend-reforge
1337LutZ Jun 10, 2026
4fd055a
Merge branch 'feature/warlock' into feature/backend-reforge
1337LutZ Jun 10, 2026
cf4ee5c
Fix use softcap breakpoints backend check
1337LutZ Jun 12, 2026
dcf3abd
Merge guardian Sim changes
1337LutZ Jun 12, 2026
e6f26fd
Performance optimisations
1337LutZ Jun 13, 2026
4dc1a8f
Add RWLock mutex due to concurrency
1337LutZ Jun 14, 2026
522580a
Merge branch 'feature/warrior' into feature/backend-reforge
1337LutZ Jun 14, 2026
4fa790f
Update tests
1337LutZ Jun 14, 2026
2fe70bb
Generate comments for reforge functions
1337LutZ Jun 15, 2026
422b88d
Fix includeGems cache key check
1337LutZ Jun 15, 2026
f014b56
Fix minimize regemming formula to fix socket shuffling
1337LutZ Jun 16, 2026
60ab098
Remove Offhand when not Fury Warrior
1337LutZ Jun 16, 2026
9cc140f
Add Unique/LimitCategory to candidates
1337LutZ Jun 18, 2026
f5f78b3
Add missing into to database_load
1337LutZ Jun 18, 2026
e2034ab
Fix database_load
1337LutZ Jun 18, 2026
d8dfa5c
Merge branch 'feature/warrior' into feature/backend-reforge
1337LutZ Jun 19, 2026
4dee0eb
Undo release pipeline build changes
1337LutZ Jun 19, 2026
7e223a1
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 19, 2026
30dc06e
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 19, 2026
5fadc93
Exclude some agent files
1337LutZ Jun 19, 2026
03a345e
Add more agent excludes
1337LutZ Jun 19, 2026
dd1f5d8
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 19, 2026
6c340c9
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 19, 2026
f0a5aa0
Merge branch 'feature/warrior' into feature/backend-reforge
1337LutZ Jun 21, 2026
805fa92
Merge branch 'feature/warrior' into feature/backend-reforge
1337LutZ Jun 21, 2026
2d36695
Add combination limit format
1337LutZ Jun 21, 2026
4167d5d
Make default EP presets always show in reforge menu
1337LutZ Jun 22, 2026
e19032f
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 25, 2026
5243d8d
Update test
1337LutZ Jun 25, 2026
9e66e7a
Add heartbeat of 5 minutes to reforge optimizer
1337LutZ Jun 26, 2026
1319381
Merge branch 'master' into feature/backend-reforge
1337LutZ Jun 27, 2026
c2e62a0
Update feral fixture
1337LutZ Jun 27, 2026
f9728e8
Remove test
1337LutZ Jun 27, 2026
3847923
Merge branch 'fix/channelling-fixes' into feature/backend-reforge
1337LutZ Jun 28, 2026
93c40be
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 1, 2026
e68946d
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 3, 2026
956e7a4
Update tests
1337LutZ Jul 3, 2026
aba4765
Fix weapon handling
1337LutZ Jul 3, 2026
3893cc2
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 5, 2026
6086a44
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 6, 2026
d92635a
Performance improvements
1337LutZ Jul 7, 2026
aa91980
stat coeff table to fix agi crit contribution
1337LutZ Jul 9, 2026
c2b027b
Update Ret Paladin reforge
1337LutZ Jul 9, 2026
13d4b05
Various softcap feasibility fixes
1337LutZ Jul 10, 2026
91821e3
Remove dead code
1337LutZ Jul 10, 2026
7030e75
Remove dead code
1337LutZ Jul 13, 2026
16447c5
Update gems issue, demo tests
1337LutZ Jul 14, 2026
86329b3
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 14, 2026
aac92a0
Update tests
1337LutZ Jul 14, 2026
ff21ace
Merge remote-tracking branch 'origin/master' into feature/backend-ref…
hillerstorm Jul 14, 2026
e9cde45
Port random-suffix scaling fix to reforge optimizer and regenerate re…
hillerstorm Jul 14, 2026
65f97d7
Merge remote-tracking branch 'origin/master' into feature/backend-ref…
1337LutZ Jul 22, 2026
d0b5dd9
Update tests
1337LutZ Jul 22, 2026
31e4986
Merge branch 'master' into feature/backend-reforge
1337LutZ Jul 22, 2026
0d4f694
Merge branch 'master' into feature/backend-reforge
hillerstorm Jul 22, 2026
af3287c
Merge branch 'master' into feature/backend-reforge
hillerstorm Jul 22, 2026
83d2068
Update Guardian presets after merge
1337LutZ Jul 23, 2026
00db9f2
Softcap / threshold fixes
1337LutZ Jul 24, 2026
d1cb49c
code legibility pass & warmup addition
1337LutZ Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .github/skills/wowsims-bulk-sim-handoff/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
name: wowsims-bulk-sim-handoff
description: 'Use when continuing, debugging, validating, or modifying WoWSims MoP Bulk Sim, local/server bulk sim, browser WASM concurrent bulk sim, BulkSimRequest/BulkSimResult protos, candidate generation, IndexedDB reforge caching, progress, abort behavior, or backend reforge integration for bulk candidates.'
argument-hint: 'Describe the Bulk Sim bug, candidate flow, reforge/cache behavior, or validation task to continue.'
---

# WoWSims Bulk Sim Handoff

## Scope
- Bulk candidate generation and staged simulation flow.
- Bulk reforge pre-pass integration and cache behavior.
- Progress, abort semantics, and local vs WASM orchestration.

## Architecture
- Shared messages: proto/api.proto (BulkSimRequest, BulkSimResult, ReforgeOptimizeRequest).
- Core staged runner: sim/core/bulk/bulk_sim.go.
- Local/server reforge pre-pass wrapper: sim/web/bulk.go.
- Web endpoint registration: sim/web/main.go (/bulkSimAsync uses sim/web.BulkSimAsync wrapper).
- Frontend orchestration and cache partitioning: ui/core/sim.ts.
- Bulk utilities and cache helpers: ui/core/components/individual_sim_ui/bulk/utils.ts.
- Generic cache storage: ui/core/reforge_cache.ts.
- Browser WASM Bulk Sim path: ui/core/wasm/bulk_sim.ts.

## Core Invariants
- Baseline gear source is base_request.raid.parties[0].players[0].equipment.
- Candidate identity is stable via BulkGearCandidate.index.
- With reforge_request enabled:
- Cache hits go to optimized_candidates.
- Work to optimize goes to candidates.
- Before staged sim:
- Reforge pre-pass merges cache hits + newly optimized candidates.
- request.ReforgeRequest is cleared.
- Dedup rules for sim input:
- Exclude baseline-equivalent gear.
- Exclude duplicate gear across optimized candidates.
- For cache writes:
- Keep full optimized_candidates (including duplicates/baseline-equivalent results) so every input key can be written.

## Local/Server Reforge Flow
- Candidate generation runs unless request is fully cache-restored (candidates empty, optimized_candidates populated).
- Reforge optimization emits BulkSimStageReforge progress before low/medium/high stages.
- Reforge failures for an individual candidate fall back to original candidate gear instead of failing the entire request.
- Abort returns partial optimized candidates that already completed.

## Frontend/WASM Flow
- WASM reforge path is frontend-orchestrated and uses per-gear optimizer calls.
- IndexedDB cache values store optimized output gear, not just metadata.
- Cache key is input-identity hash; output is restored from cache value.

## Candidate Counting and Filtering
- rawCombinations is the raw mixed-radix index space.
- combinations is the filtered runnable count.
- Required set-bonus matching scans raw index space, then filters.
- Progress/reporting should reflect filtered candidate counts for user-visible totals.

## Performance Guardrails
- Avoid per-candidate allocations in hot loops.
- Prefer preallocated imperative loops in candidate/cache helpers.
- For backend reforge optimizer cache:
- Use read-friendly locking for hit-heavy paths.
- Reuse computed gear hash across includeGems fallback attempts.
- Throttle progress emission frequency to avoid contention.

## Logging Expectations
- Candidate generation stage should log started and completed with duration.
- Reforge stage should log a single started event (no duplicates) and completed summary.

## Validation Commands
```bash
make proto
npm run type-check
go test -count=1 ./sim/core/bulk ./sim/web
```

For reforge-integration changes:
```bash
go test -count=1 ./sim/core/reforge_optimizer ./sim/web
```

## Fast Search Aids
```bash
rg -n "BulkSimReforge|reforge_request|optimized_candidates|BulkSimStageReforge" proto sim ui
rg -n "bulkSimAsync|/bulkSimAsync" sim/web
```
77 changes: 77 additions & 0 deletions .github/skills/wowsims-reforge-optimizer-handoff/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: wowsims-reforge-optimizer-handoff
description: 'Use when continuing, debugging, validating, or modifying the WoWSims MoP reforge optimizer, /reforgeOptimizeAsync endpoint, HiGHS solver integration, gem/socket/cap logic, softcap breakpoints, or Rune of Re-Origination relative stat caps.'
argument-hint: 'Describe the reforge optimizer bug, fixture, or behavior to continue.'
---

# WoWSims Reforge Optimizer Handoff

## Scope
- Core optimizer behavior in sim/core/reforge_optimizer.
- Endpoint path /reforgeOptimizeAsync and worker integration.
- HiGHS-backed MIP solving for reforge + gem + socket-bonus choices.
- Relative stat cap logic (including Rune of Re-Origination behavior).

## Architecture
- Main flow: sim/core/reforge_optimizer/optimizer.go.
- MIP model and constraints: sim/core/reforge_optimizer/solver.go.
- Choice/cap/stat support: choices.go, caps.go, search.go, stats.go.
- Gear apply/minimize regems: gear.go.
- Gem/socket logic: gems.go.
- Relative cap modeling: relative_stat_cap.go.
- HiGHS bridge:
- Go non-browser: highswasm.go.
- Browser wasm: highs_js.go.
- Frontend caller: ui/core/components/suggest_reforges_action.tsx.

## Core Invariants
- Final correctness is based on exact stats from core.ComputeStats, not only MIP deltas.
- Optimizer must include reforge + gems + socket bonus decisions when enabled.
- Socket bonus feasibility must be modeled with explicit link constraints.
- On HiGHS failure, return error; do not silently downgrade to weaker fallback behavior.
- Debug-heavy logs stay behind ReforgeOptimizeRequest.debug.

## Cap and Breakpoint Rules
- Validate and normalize cap settings before solve.
- Enforce hard caps and breakpoint-derived rows directly in the MIP.
- For exact-stat post-check failures, tighten relevant existing cap rows and re-solve.
- Soft-cap scoring remains piecewise (pre-cap EP / post-cap EP).

## Relative Stat Cap Rules
- Use explicit linear constraints for forced-vs-constrained stat deltas.
- Preserve raw Crit/Haste/Mastery deltas in choices for feasibility checks.
- Validate relative-cap outcome with exact final stats and tighten rows if needed.
- Windwalker forced-Mastery should constrain Mastery vs Crit and Mastery vs Haste; avoid adding unnecessary cross constraints unless fixture semantics require it.

## Gem and Meta Rules
- Meta gems are not normal swap targets.
- Meta socket state must be preserved/restored during regem minimization.
- Keep gem order stable in EquipmentSpec output.
- Preserve class-specific stat dependency semantics used by scoring.

## Bulk Sim Integration Contract
- Bulk Sim uses ReforgeOptimizeRequest mode for bulk operations.
- Bulk pre-pass may call optimizer twice per candidate when includeGems fallback is enabled.
- Cache keys should represent input identity; cached values are optimized output gear.

## Performance Guardrails
- Keep solver model/build overhead low and allocation-aware.
- Keep selected-choice validation and hot helpers allocation-light.
- Avoid adding debug timers/alloc-heavy tracing outside debug mode.

## Validation Commands
```bash
go test -count=1 ./sim/core/reforge_optimizer
npm run type-check
```

For bulk integration changes:
```bash
go test -count=1 ./sim/core/reforge_optimizer ./sim/web
```

## Fast Search Aids
```bash
rg -n "ReforgeOptimizeRequest|relativeStatCap|softCap|breakpoint|HiGHS" proto sim ui
rg -n "reforgeOptimizeAsync|ReforgeOptimize" sim ui
```
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
node_modules

ui/core/index.ts
ui/core/**/*_auto_gen.ts
ui/*/*/index.html
.dirstamp

Expand Down
Binary file modified assets/database/db.bin
Binary file not shown.
Binary file modified assets/database/leftover_db.bin
Binary file not shown.
38 changes: 24 additions & 14 deletions assets/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@
"description": "{{spec}} {{class}} simulations for World of Warcraft® Mists of Pandaria Classic.",
"basic_bis_disclaimer": "<p>Preset gear lists are intended as rough approximations of BIS, and will often not be the absolute highest-DPS setup for you. Your optimal gear setup will depend on many factors; that's why we have a sim!</p><p>Items may also be omitted from the presets if they are highly contested and clearly better utilized on other classes, to encourage equitable gearing for the raid as a whole.</p>",
"healing_sim_disclaimer": "*** WARNING - USE AT YOUR OWN RISK ***\n\nThe entire concept of a healing sim is EXPERIMENTAL. All results should be taken with an EXTREMELY large grain of salt.\n\nThis tool is currently more similar to a spreadsheet than a true sim. Options for specifying incoming damage profiles in order to have proper reactive rotations have not yet been added.",
"notice_local_download": {
"notice_native_download": {
"title": "Did you know?",
"message": "You can download our local sim to speed up your simulations significantly?",
"download_button": "Download"
Expand Down Expand Up @@ -776,7 +776,7 @@
"bulk_tab": {
"title": "Batch (<span class=\"text-success\">New</span>)",
"description": "<span className=\"bold\">Batch Simming</span> is a new feature akin to the <span className=\"bold\">Top Gear</span> sim on <a href=\"https://raidbots.com\" target=\"_blank\">Raidbots.com</a> that allows you to select multiple items and sim them find the best combinations.<br />This is an <span className=\"text-brand\">Alpha</span> feature, so if you have feedback or find a bug, please report it!",
"download_local": "Download the local sim for faster results.",
"download_native": "Download the local sim for faster results.",
"tabs": {
"setup": "Setup",
"results": "Results"
Expand All @@ -800,14 +800,24 @@
"item_unique": "{{itemName}} is unique and already added."
},
"settings": {
"combinations_count": "{{count}} Combinations",
"combinations_count": "{{amount}} Combinations",
"combination_singular": "1 Combination",
"iterations": "Iterations",
"fallback_gems": "Fallback Gems",
"inherit_upgrades": {
"label": "Inherit Upgrades",
"tooltip": "When enabled, items will inherit upgrades from the equipped item. Otherwise, items will be simmed without any upgrades."
},
"use_legacy_bulk_sim": {
"label": "Use legacy single-stage sim",
"tooltip": "By default, Bulk Sim runs large batches in multiple stages: a low-iteration pass to find likely contenders, a medium-iteration refinement pass, and a final high-iteration pass for the best remaining gear sets. Enable this only to force the legacy high-stage-only behavior."
},
"required_set_bonuses": {
"label": "Required Set Bonuses",
"none": "No requirement",
"require_2p": "Require 2P",
"require_4p": "Require 4P",
"available_pieces": "({{count}} available)"
},
"freeze_ring": {
"label": "Freeze ring slot",
"tooltip": "Freeze one equipped ring to reduce combination counts"
Expand All @@ -827,12 +837,17 @@
}
},
"progress": {
"total_combinations": "{{count}} total combinations.",
"reforging_rounds": "Running reforges",
"building_candidate_gear_sets": "Building candidate gear sets",
"restoring_reforges_from_cache": "Restoring reforges from cache",
"reforging_iteration_rounds": "Running reforges",
"baseline_round": "Running baseline round",
"refining_rounds": "Running refining rounds",
"low_iteration_rounds": "Running low iteration rounds",
"medium_iteration_rounds": "Running medium iteration rounds",
"high_iteration_rounds": "Running high iteration rounds",
"iterations_complete": "{{completed}} / {{total}}<br />iterations complete",
"seconds_remaining": "{{seconds}} seconds remaining"
"seconds_remaining": "{{seconds}} seconds remaining",
"time_remaining": "{{time}} remaining"
},
"notifications": {
"bulk_sim_cancelled": "Bulk sim cancelled.",
Expand All @@ -853,9 +868,6 @@
"gear_equipped": "Batch gear equipped!",
"current_gear": "Current Gear"
},
"gem_selector": {
"title": "Choose fallback Gem"
},
"import_modal": {
"title": "Bag Item Import",
"description_line1": "Import bag items from a JSON file, which can be created by the WowSimsExporter in-game AddOn.",
Expand Down Expand Up @@ -2383,13 +2395,11 @@
"enable_modification": "This will enable modification of the default EP weights and setting custom stat caps.",
"modify_in_editor": "Ep weights can be modified in the Stat Weights editor.",
"hard_cap_info": "If you want to hard cap a stat make sure to put the EP for that stat higher.",
"edit_weights": "Edit weights",
"edit_weights": "Change weights",
"include_gems": "Include gems",
"freeze_item_slots": "Freeze item slots",
"include_eotbp_socket": "Include EotBP Socket",
"include_eotbp_socket_tooltip": "Allows the optimiser to also include the \"Eye of the Black Prince\" socket in the optimization.",
"limit_execution_time": "Limit execution time",
"limit_execution_time_tooltip": "If checked, the solver will error out if the total computation time exceeds 30 seconds. If unchecked, then total computation time will be capped at 1 hour instead."
"include_eotbp_socket_tooltip": "Allows the optimiser to also include the \"Eye of the Black Prince\" socket in the optimization."
}
},
"header": {
Expand Down
38 changes: 24 additions & 14 deletions assets/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@
"description": "Simulations {{class}} {{spec}} pour World of Warcraft® Mists of Pandaria Classic.",
"basic_bis_disclaimer": "<p>Les listes d'équipement prédéfinies fournie sont approximatives du meilleur équipement possible, et ne seront souvent pas la configuration optimale pour vous. Votre configuration d'équipement optimale dépendra de nombreux facteurs ; c'est pourquoi nous avons un simulateur !</p><p>Les objets peuvent également être omis des préréglages s'ils sont très contestés et clairement mieux utilisés sur d'autres classes, pour encourager un équipement équitable pour le raid dans son ensemble.</p>",
"healing_sim_disclaimer": "*** AVERTISSEMENT - UTILISEZ À VOS PROPRES RISQUES ***\n\nLe concept entier d'un simulateur de soins est EXPÉRIMENTAL. Tous les résultats doivent être pris avec un grain de sel EXTREMEMENT important.\n\nCet outil est actuellement plus similaire à une feuille de calcul qu'à un véritable simulateur. Les options pour spécifier les profils de dégâts entrants afin d'avoir des rotations réactives appropriées n'ont pas encore été ajoutées.",
"notice_local_download": {
"notice_native_download": {
"title": "Le saviez-vous ?",
"message": "Vous pouvez télécharger notre simulateur en local pour accélérer considérablement vos simulations ?",
"download_button": "Télécharger"
Expand Down Expand Up @@ -776,7 +776,7 @@
"bulk_tab": {
"title": "Lot (<span class=\"text-success\">Nouveau</span>)",
"description": "<span className=\"bold\">Simulation par lot</span> est une nouvelle fonctionnalité similaire à la simulation <span className=\"bold\">Top Gear</span> sur <a href=\"https://raidbots.com\" target=\"_blank\">Raidbots.com</a> qui vous permet de sélectionner plusieurs objets et de les simuler pour trouver les meilleures combinaisons.<br />C'est une fonctionnalité <span className=\"text-brand\">Alpha</span>, donc si vous avez des commentaires ou trouvez un bug, veuillez le signaler !",
"download_local": "Téléchargez le simulateur en local pour des résultats plus rapides.",
"download_native": "Téléchargez le simulateur en local pour des résultats plus rapides.",
"tabs": {
"setup": "Configuration",
"results": "Résultats"
Expand All @@ -800,14 +800,24 @@
"item_unique": "{{itemName}} est unique et a déjà été ajouté."
},
"settings": {
"combinations_count": "{{count}} Combinaisons",
"combinations_count": "{{amount}} Combinaisons",
"combination_singular": "1 Combinaison",
"iterations": "Itérations",
"fallback_gems": "Gemmes de secours",
"inherit_upgrades": {
"label": "Hériter des améliorations",
"tooltip": "Lorsque cette option est activée, les objets hériteront des améliorations de l'objet équipé. Sinon, les objets seront simulés sans aucune amélioration."
},
},
"use_legacy_bulk_sim": {
"label": "Utiliser la simulation mono-étape héritée",
"tooltip": "Par défaut, Bulk Sim exécute les lots volumineux en plusieurs étapes : une passe à faible nombre d'itérations pour trouver les candidats prometteurs, une passe de raffinement à nombre moyen d'itérations, puis une passe finale à nombre élevé d'itérations pour les meilleurs ensembles restants. Activez cette option uniquement pour forcer l'ancien comportement avec une seule passe finale."
},
"required_set_bonuses": {
"label": "Bonus d'ensemble requis",
"none": "Aucune exigence",
"require_2p": "Exiger 2P",
"require_4p": "Exiger 4P",
"available_pieces": "({{count}} disponibles)"
},
"freeze_ring": {
"label": "Geler un emplacement d'anneau",
"tooltip": "Geler un anneau équipé pour réduire le nombre de combinaisons"
Expand All @@ -827,12 +837,17 @@
}
},
"progress": {
"total_combinations": "{{count}} combinaisons totales.",
"reforging_rounds": "Exécution des reforges",
"building_candidate_gear_sets": "Création des ensembles d'équipement candidats",
"restoring_reforges_from_cache": "Restauration des reforges depuis le cache",
"reforging_iteration_rounds": "Exécution des reforges",
"baseline_round": "Exécution du tour de référence",
"refining_rounds": "Exécution des tours d'affinage",
"low_iteration_rounds": "Exécution des tours à faible itération",
"medium_iteration_rounds": "Exécution des tours à itération moyenne",
"high_iteration_rounds": "Exécution des tours à forte itération",
"iterations_complete": "{{completed}} / {{total}}<br />itérations terminées",
"seconds_remaining": "{{seconds}} secondes restantes"
"seconds_remaining": "{{seconds}} secondes restantes",
"time_remaining": "Il reste {{time}}"
},
"notifications": {
"bulk_sim_cancelled": "Simulation par lot annulée.",
Expand All @@ -853,9 +868,6 @@
"gear_equipped": "Équipement du lot équipé !",
"current_gear": "Équipement actuel"
},
"gem_selector": {
"title": "Choisir la gemme par défaut"
},
"import_modal": {
"title": "Importation d'objets de sac",
"description_line1": "Importez des objets de sac à partir d'un fichier JSON, qui peut être créé par l'AddOn en jeu WowSimsExporter.",
Expand Down Expand Up @@ -2388,9 +2400,7 @@
"include_gems": "Inclure les gemmes",
"freeze_item_slots": "Verrouiller certains emplacements",
"include_eotbp_socket": "Inclure le socket EotBP",
"include_eotbp_socket_tooltip": "Permet à l'optimiseur d'inclure également le socket \"Œil du Prince Noir\" dans l'optimisation.",
"limit_execution_time": "Limiter le temps d'exécution",
"limit_execution_time_tooltip": "Si coché, le solveur se terminera en erreur si le temps de calcul total dépasse 30 secondes. Si décoché, le temps de calcul total sera plafonné à 1 heure."
"include_eotbp_socket_tooltip": "Permet à l'optimiseur d'inclure également le socket \"Œil du Prince Noir\" dans l'optimisation."
}
},
"header": {
Expand Down
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ require (
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
github.com/spf13/cobra v1.7.0
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a
github.com/tetratelabs/wazero v1.11.0
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394
golang.org/x/text v0.24.0
google.golang.org/protobuf v1.36.10
Expand All @@ -24,7 +25,7 @@ require (
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/sys v0.38.0 // indirect
modernc.org/libc v1.62.1 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.9.1 // indirect
Expand Down
Loading
Loading