Commit Graph
1621 Commits
Author SHA1 Message Date
TrèsAbhi 904d50f4c3 New Crowdin updates (#379) 2026-10-07 16:35:15 -05:00
TrèsAbhi 112472762d Merge pull request #362 from Hitjack007/discover-ids-await-loop 2026-10-07 16:34:49 -05:00
tresabhi e19d0d5895 revert tank exclusion 2026-10-07 16:32:48 -05:00
TrèsAbhi aa6268a86b Merge branch 'main' into stable-tank-sort-order 2026-10-07 16:30:42 -05:00
tresabhi 0e119b6ba8 optimize awaitable tiers 2026-10-07 16:27:38 -05:00
tresabhi 3397e7f67b truthy array 2026-10-07 16:25:34 -05:00
TrèsAbhi de03a2ab95 Merge branch 'main' into tier-eleven-compatibility 2026-10-07 16:23:11 -05:00
tresabhi 16be5faae6 use UpdateIcon 2026-10-07 16:08:56 -05:00
tresabhi e1b079ca02 high contrast button 2026-10-07 16:06:52 -05:00
tresabhi 00149a3d9d simplify strings 2026-10-07 16:03:41 -05:00
TrèsAbhi e3e94e2b49 Merge branch 'main' into tank-model-auto-load 2026-10-07 15:59:34 -05:00
tresabhi c70fae8162 game strings 2026-10-05 11:24:29 -05:00
tresabhi d79e0ddb5d caching for strings 2026-10-05 11:24:01 -05:00
Mark Greene 541da65bfc Feature: option to turn off automatic tank model loading
Lets people on limited data stop the Tankopedia from downloading 3D models automatically.

- Added an Automatically load 3D models switch to the settings page, on by default
- When off, the tank page hero shows a Load 3D model button where the loading bar sits
- Held back every model download on the tank page until requested, including the dynamic armor switcher and the gun flexibility visualizer
- Wrapped the tank sandbox in its own suspense boundary so the loading bar shows real progress instead of the whole page waiting on the model
- Measured loading progress from when each loading bar appears so it always starts empty
- Added the English strings; other languages fall back until translated

Fixes #311
2026-10-05 19:52:46 +13:00
Mark Greene e4e92d76b4 Feature: tier XI compatibility
Prepares BlitzKit for tier XI tanks ahead of their release. Tier X was hardcoded as the maximum in the tank search filters, the guesser and the tech tree, and had no roman numeral beyond X.

- Added `XI` to `TIER_ROMAN_NUMERALS`
- Added an awaitable tier list derived from the highest tier in the tank definitions, so nothing changes until tier XI tanks exist
- Used it for the tank search tier filters and the guesser tier picker and defaults
- Made the tech tree check for successors instead of assuming tier X is the last tier

Fixes #302
2026-10-05 18:18:19 +13:00
Mark Greene 273881c460 Fix: keep tank order stable on select
Tanks sharing the same tier, nation, class and type were shown in an arbitrary order that changed after selecting a tank. The meta sort had no tiebreaker, and the filtered list was sorted and reversed in place, so each re-sort started from the previous reversed order and flipped tied tanks around.

- Added tank ID as the first sort key in `metaSortTank` so tied tanks always come out in the same order
- Sorted a copy of the tank search results, pre-sorted by ID, instead of the cached list
- Added an `exclude` option to tank search and used it in Compare so tanks already being compared can't be added again, including through select all or by swapping another slot

Fixes #313
2026-10-05 18:00:43 +13:00
Mark Greene 3aefe7d985 Fix: await the ID discovery loop so it runs to completion
The ID discovery script exited about a second after starting. Since the switch to `atMaxRate`, neither the discovery loop nor the request loop was awaited, and `atMaxRate` didn't await its callback, so the script went straight to `save()`, committed and exited while overlapping duplicate requests failed in the background.

- Awaited both `atMaxRate` loops and the callback inside `atMaxRate`
- Moved the ID range exhaustion check out of the retry loop so retries can't remove extra regions
- Treated network and JSON errors as failed API calls so a long run retries instead of crashing without saving

Fixes #306
2026-10-05 17:33:01 +13:00
tresabhi 60a92fbfdf pixel perfect fix 2026-10-04 14:13:55 -05:00
TrèsAbhi 5ba62d2952 Merge branch 'main' into translate-margin 2026-10-04 14:09:20 -05:00
TrèsAbhi 1bdd8bab9e Merge branch 'main' into filter-defaults 2026-10-04 14:07:27 -05:00
TrèsAbhi 95d6d8a1ae Merge branch 'main' into stale-info 2026-10-04 14:06:06 -05:00
TrèsAbhi c310e8475e Merge branch 'main' into reload-visualiser 2026-10-04 14:04:17 -05:00
TrèsAbhi e090aee984 Merge pull request #277 from Hitjack007/search-issues 2026-10-04 14:03:54 -05:00
tresabhi f3a8f2faab only supply full name if it's different 2026-10-04 14:03:32 -05:00
TrèsAbhi 0539d69c7f Merge pull request #276 from Hitjack007/tank-title-and-loading-bars-difference 2026-10-04 13:57:50 -05:00
TrèsAbhi 89b8f25918 Merge branch 'main' into gun-depression-visualiser 2026-10-04 13:52:37 -05:00
tresabhi 9a659845f5 make spall icon not a button 2026-10-04 13:51:53 -05:00
TrèsAbhi b880b8cdbd Merge branch 'main' into spall-liner-in-tankopdiea-model-viewer 2026-10-04 13:47:04 -05:00
tresabhi 6be4ff97f3 env 2026-10-04 13:36:33 -05:00
tresabhi d9f29cd0c9 start of docs 2026-10-04 13:11:36 -05:00
Mark Greene b4770c1497 Fix: uneven margin around the help translate link
The "Help translate BlitzKit" link on the home page had only a bottom margin, so it sat flush against the hero above while the tool grid below added extra space.

Add a top margin so the space above matches the space below, leaving the bottom margin unchanged.
2026-10-04 14:44:39 +13:00
Mark Greene cef393473f Fix: testing and unlocked filters off by default and exclusive
Both buttons in the testing and unlocked filter pairs started on, so showing only one kind meant turning the other kind off.

Start all four filters off, treat a pair with neither button on as showing everything, and make the buttons in each pair mutually exclusive: turning one on turns its partner off, and clicking an active one turns it off. The playlist page now sets the unlocked filter on (and locked off) explicitly, since the old default no longer provides that.
2026-10-04 14:39:30 +13:00
Mark Greene 6fb14d5544 Fix: footer game version and CDN label
The footer showed the game's full version with its build number and labelled the environment as "CDN".

Show only the part of the game version before the underscore (e.g. 11.20), and rename the "CDN" label to "Branch" since it shows the environment/branch the site was built from.
2026-10-04 14:36:18 +13:00
Mark Greene 2e46ba79cf Fix: reload times show one decimal from a shared constant
The reload visualizer and the Firepower reload rows showed two decimals.

Add an exported `RELOAD_PRECISION` (1) in the reload visualizer and use it for the visualizer's times and placeholders and for the Firepower reload rows (per-shell reloads, reload and intra-clip).
2026-10-04 14:33:24 +13:00
Mark Greene 6153beced6 Fix: search redirecting early and missing full tank names
**Enter key**
- Enter redirected to the previous results' first tank while a search was still buffering, because the key handler captured a stale `searching` value.
- Enter on an empty field redirected to the first tank of the unfiltered list (Sheridan).
- The handler now reads live filter state and only acts when there is a settled search, matching the quick-link button.

**Full names in search**
- Search only knew short tank names, so queries like "super pershing" found nothing when the game stores a short form.
- Add an optional `name_full` to `TankDefinition`, filled from the game's full name when a short name exists, and index it (plus an accent-stripped copy) in `fetchTankNames` / `SEARCH_KEYS`.
- Displayed names are unchanged. Full names become searchable once the definitions are regenerated on the next build.
2026-10-04 14:24:02 +13:00
Mark Greene 90006dfd2a Fix: loading bar too close to tank title
The hero loading bar was offset below the title by half the font size plus a fixed 16px. The title is centered as a line box, so its descenders and heavy caps reach lower than half the font size, and the fixed gap didn't grow with the title.

Offset the bar by 0.75 of the font size instead, so the gap scales with the title.
2026-10-04 14:14:57 +13:00
Mark Greene 98b555fa7e Fix: gun depression visualizer ignoring turret mount tilt
The gun flexibility visualizer at the bottom of the Tankopedia Firepower section computed depression/elevation purely from the raw gun `pitch.min`/`pitch.max` values, ignoring `initial_turret_rotation.pitch` (the tank's baked-in turret mount tilt). Every other place that reports gun depression/elevation already accounts for this offset; the visualizer was the outlier.

On tanks with a level turret mount the offset is zero, so it was invisible almost everywhere. Minotauro's turret sits pitched 3° forward, which made the visualizer's min/max/pitch stats and wedge shape disagree with the Firepower stats directly above it (e.g. 7°/-18° instead of 10°/15°).

**Changes:**
- `GunFlexibilityVisualizer/index.tsx`: fold the turret's initial pitch offset into `minPitch`, `maxPitch` and the displayed `pitch` stat, and into the drawn limit shape, the pitch dot and the pointer mapping, so the dashed neutrality circle sits at the displayed 0°.
- `GunFlexibilityVisualizer/components/CanvasContent.tsx`: nest the gun mesh inside a turret group carrying the same static tilt as its base rotation, so the mini 3D preview's live drag-pitch composes on top of it, mirroring `useTankTransform.ts`.
2026-10-04 13:38:20 +13:00
Mark Greene 0bdb66742b Feature: Add Spall Liner toggle to Tankopedia model viewer
## Summary
- Add a Spall Liner toggle button to the Tankopedia model viewer, placed alongside the existing Calibrated Shells / Enhanced Armor buttons. It's only shown for tanks that can actually equip Spall Liner.
- The toggle reads/writes the same `Duel.protagonist.provisions` array as the Provisions tab, so both stay in sync automatically.
- If a provision slot is free, clicking equips Spall Liner immediately. If all slots are full, a popover shows icons with a shuffle arrow so you can pick which active provision to swap out in one step.
- Buttons use the same medium rounding as the consumable buttons on the tank page.
- When Spall Liner is equipped, the Dynamic Armor 3D viewer's click-damage tooltip now applies the same 20% HE damage reduction Spall Liner grants in-game.
- Refactored the hardcoded `-0.2` HE damage coefficient in `tankCharacteristics.ts` into a shared constant so the Compare tool and the 3D viewer use a single source of truth.

## Scope
This only affects the single-tank Tankopedia page. The Firepower stats table (the viewed tank's own outgoing gun damage) is intentionally untouched, since a defensive damage reduction would be semantically backwards there. The Dynamic Armor viewer's click tooltip is the only place a "damage taken by this tank" number exists, so that's where the reduction is wired in.
2026-10-04 13:27:34 +13:00
TrèsAbhi 126e91411a New translations en.json (Russian)
[ci skip]
2026-10-02 15:35:49 -07:00
TrèsAbhi 24ffd70394 New translations en.json (Portuguese)
[ci skip]
2026-10-02 15:35:48 -07:00
TrèsAbhi 8c8b36f0d5 New translations en.json (Polish)
[ci skip]
2026-10-02 15:35:46 -07:00
TrèsAbhi 38c595ebce New translations en.json (Japanese)
[ci skip]
2026-10-02 15:35:45 -07:00
TrèsAbhi 66a6aece7c New translations en.json (Spanish)
[ci skip]
2026-10-02 15:35:43 -07:00
TrèsAbhi 35ce79a421 New translations en.json (French)
[ci skip]
2026-10-02 15:35:41 -07:00
TrèsAbhi 8e8da15254 New translations en.json (Chinese Simplified)
[ci skip]
2026-10-02 15:35:40 -07:00
TrèsAbhi eea358c4e1 New translations en.json (Ukrainian)
[ci skip]
2026-10-02 15:35:38 -07:00
TrèsAbhi 3b0af110d2 Merge branch 'main' into peekabo-dpm 2026-10-02 15:22:06 -07:00
TrèsAbhi 91da72e8b4 New Crowdin updates (#268) 2026-10-02 17:08:10 -05:00
TrèsAbhi 6319d6fbd0 Merge pull request #269 from Hitjack007/equaliser-beta-flag 2026-10-02 15:05:56 -07:00
tresabhi a5321ebde3 game mode banner with string ids 2026-10-02 17:05:25 -05:00