Skip to content

Display player flags next to their names again#3965

Merged
evanpelle merged 8 commits into
mainfrom
add-flags
May 19, 2026
Merged

Display player flags next to their names again#3965
evanpelle merged 8 commits into
mainfrom
add-flags

Conversation

@VariableVince
Copy link
Copy Markdown
Contributor

Description:

Display flags again.

Please complete the following:

  • I have added screenshots for all UI updates
  • I process any text displayed to the user through translateText() and I've added it to the en.json file
  • I have added relevant tests to the test directory
  • I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced

Please put your Discord username so you can be contacted if a bug or regression is found:

tryout33

@VariableVince VariableVince self-assigned this May 18, 2026
@VariableVince VariableVince added the UI/UX UI/UX changes including assets, menus, QoL, etc. label May 18, 2026
@VariableVince VariableVince requested a review from a team as a code owner May 18, 2026 21:22
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2681af3f-f0b4-42a8-a1e6-03799d51b196

📥 Commits

Reviewing files that changed from the base of the PR and between ed928db and 77f1fd9.

📒 Files selected for processing (3)
  • src/client/WebGLFrameBuilder.ts
  • src/core/AssetUrls.ts
  • tests/AssetUrls.test.ts

Walkthrough

The player synchronization in WebGLFrameBuilder now normalizes cosmetics flag values from newly discovered players. Before sending PlayerStatic data to the WebGL renderer, the code derives a clean flag identifier by either stripping a flag: prefix or extracting the name from a /flags/<name>.svg path pattern.

Changes

Player flag synchronization normalization

Layer / File(s) Summary
Flag extraction helper and tests
src/core/AssetUrls.ts, tests/AssetUrls.test.ts
Adds exported extractFlagName(flagData: string) that parses flag:Name tokens or CDN/path /flags/<name>.<hash>.svg inputs, strips trailing hex hashes, safely decodes the name, and falls back to the original input; tests validate prefix handling, URL/path extraction, decoding, malformed percent-encodings, and edge cases.
WebGLFrameBuilder integration
src/client/WebGLFrameBuilder.ts
Imports extractFlagName and uses it when constructing PlayerStatic.flag from p.cosmetics.flag, assigning the cleaned name instead of forwarding the raw input.

Sequence Diagram(s)

sequenceDiagram
  participant Client as Client
  participant WebGLFrameBuilder as src/client/WebGLFrameBuilder
  participant AssetUrls as src/core/AssetUrls.extractFlagName
  participant Renderer as WebGLRenderer
  Client->>WebGLFrameBuilder: new player data (p)
  WebGLFrameBuilder->>AssetUrls: extractFlagName(rawFlag)
  AssetUrls-->>WebGLFrameBuilder: cleanedFlag
  WebGLFrameBuilder->>Renderer: emit PlayerStatic(flag=cleanedFlag)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • evanpelle

Poem

🚩 A tiny helper trims the thread,
From flag: tags and CDN spread.
It peels the hash, decodes the name,
So player flags behave the same.
Renderers thank the tidy flame.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly and clearly describes the main change: restoring the display of player flags next to their names, which is the primary objective across all modified files.
Description check ✅ Passed The description is related to the changeset, explaining that flags are being restored and confirming that tests, translations, and screenshots have been added as required.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]
coderabbitai Bot previously approved these changes May 18, 2026
@VariableVince VariableVince marked this pull request as draft May 18, 2026 22:22
coderabbitai[bot]
coderabbitai Bot previously approved these changes May 18, 2026
…need the name to fetch the flag from flag-atlas.png)
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/core/AssetUrls.ts`:
- Around line 111-115: The code currently calls decodeURIComponent directly in
the flag extraction logic (the block that uses
flagData.match(/\/flags\/([^?#]+)\.svg/)), which can throw on malformed
percent-encodings; replace that direct call with the existing
safeDecodeAssetSegment helper (use safeDecodeAssetSegment(raw)) in the same
function (extractFlagName / the flag extraction branch) and ensure any fallback
behavior mirrors other uses in this file (return raw or undefined on decode
failure). Also add unit tests for extractFlagName covering normal inputs,
malformed encodings (e.g., percent sequences that would throw), and edge cases
like names containing colons or URLs with hashes to validate the safe decode
behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 891ee619-fb3b-49ea-afa5-e0bdae567fc7

📥 Commits

Reviewing files that changed from the base of the PR and between 73a6469 and f51b19a.

📒 Files selected for processing (2)
  • src/client/WebGLFrameBuilder.ts
  • src/core/AssetUrls.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/client/WebGLFrameBuilder.ts

Comment thread src/core/AssetUrls.ts
@VariableVince VariableVince marked this pull request as ready for review May 18, 2026 23:21
@VariableVince
Copy link
Copy Markdown
Contributor Author

@CodeRabbit review again please

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 18, 2026

@VariableVince Sure, triggering a full review of your PR now! 🐇

✅ Actions performed

Full review triggered.

@github-project-automation github-project-automation Bot moved this from Development to Final Review in OpenFront Release Management May 19, 2026
@evanpelle evanpelle merged commit a2aa782 into main May 19, 2026
14 checks passed
@evanpelle evanpelle deleted the add-flags branch May 19, 2026 02:19
@github-project-automation github-project-automation Bot moved this from Final Review to Complete in OpenFront Release Management May 19, 2026
VariableVince added a commit that referenced this pull request May 21, 2026
commit 513057a
Author: VariableVince <24507472+VariableVince@users.noreply.github.com>
Date:   Wed May 20 03:17:26 2026 +0200

    WebGL: show alliance request+duration icon, show ally and team mate targets too, some optimization (#3971)

    Show nuke icons during replay too (when there's no localPlayer).
    Show alliance request envelope icon, and duration in alliance icon
    (weren't calculated yet).
    Show ally and team mates' targets too (weren't calculated yet).

    Remove unnecessary allocations. Nukes loop allocated two new sets,
    transitive targets was a new set and now uses predicate with fallback to
    localPlayer.targets, localPlayer.allies and localPlayer.embargoes were
    both put in new set instead of using .includes directly.

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    tryout33

commit c82b078
Author: Evan <evanpelle@gmail.com>
Date:   Tue May 19 17:35:25 2026 -0700

    Stagger territory tile rendering across frames (#3973)

    relates to #893

    Territory updates were uploaded in one shot per game tick, producing a
    10 Hz tile update which looked choppy. This change drips each tick's
    tile changes across the ~6 render frames between ticks so the fill flows
    continuously instead of stepping.

    Inside TerritoryPass, each changed tile is hashed by ref into one of N
    buckets (configurable via tileDrip.bucketCount, set to 9 — gives ~50 ms
    of jitter headroom over the tick period without making attacks feel
    laggy). One bucket drains per render frame. The stable per-ref hash
    keeps repeated updates to the same tile in arrival order, so the latest
    owner always wins.

    While in there, moved trail state ownership out of TerritoryPass and
    into TrailPass where it belongs — the territory shader doesn't sample
    trailTex, so the colocation was just code-reuse drift.

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    evan

commit 6a8b6a1
Author: RickD004 <realtacoco@gmail.com>
Date:   Tue May 19 15:40:07 2026 -0600

    Changes for Rebalancing the Taiwan Strait map (#3970)

    Resizes the Taiwan Strait map for v32, to rebalance it for 2 team games:

    Yesterday the map was tested in a stream and it turned out to be
    unbalanced due to the size difference of the landmasses:
    https://youtu.be/gildSwTdd4I?t=2516

    Adds Team spawnzones for 2 teams.

    Also removes and adds new nations , suggested by its map creator
    crunchybbbbb_59469 on Discord

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    tri.star1011

    Taiwan Strait map by crunchybbbbb_59469 on Discord, who i worked with in
    this rebalance

    ---------

    Co-authored-by: FloPinguin <25036848+FloPinguin@users.noreply.github.com>

commit 0ace428
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon May 18 19:43:28 2026 -0700

    Bump the npm_and_yarn group across 1 directory with 3 updates (#3964)

    Bumps the npm_and_yarn group with 3 updates in the / directory:
    [protobufjs](https://github.com/protobufjs/protobuf.js),
    [@opentelemetry/exporter-logs-otlp-http](https://github.com/open-telemetry/opentelemetry-js)
    and
    [@opentelemetry/exporter-metrics-otlp-http](https://github.com/open-telemetry/opentelemetry-js).

    Removes `protobufjs`

    Updates `@opentelemetry/exporter-logs-otlp-http` from 0.216.0 to 0.218.0
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/open-telemetry/opentelemetry-js/releases">@​opentelemetry/exporter-logs-otlp-http's
    releases</a>.</em></p>
    <blockquote>
    <h2>experimental/v0.218.0</h2>
    <h2>0.218.0</h2>
    <h3>:rocket: Features</h3>
    <ul>
    <li>feat(otlp-transformer): replace protobufjs metrics serialization
    with custom implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6629">#6625</a>
    <a
    href="https://github.com/pichlermarc"><code>@​pichlermarc</code></a></li>
    <li>feat(configuration): show all config validation errors, if there are
    multiple <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6683">#6683</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>feat(sdk-node): allow startNodeSDK() without an arg <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6688">#6688</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    </ul>
    <h3>:house: Internal</h3>
    <ul>
    <li>refactor(sdk-logs): alias <code>LoggerProviderConfig</code> to
    <code>LoggerProviderOptions</code> <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6691">#6691</a>
    <a
    href="https://github.com/david-luna"><code>@​david-luna</code></a></li>
    <li>refactor(sdk-logs): use <code>Logger.enabled()</code> within
    <code>Logger.emit()</code> implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6680">#6680</a>
    <a
    href="https://github.com/david-luna"><code>@​david-luna</code></a></li>
    </ul>
    <h2>experimental/v0.217.0</h2>
    <h2>0.217.0</h2>
    <h3>:rocket: Features</h3>
    <ul>
    <li>feat(otlp-transformer): replace protobufjs trace serialization with
    custom implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6625">#6625</a>
    <a
    href="https://github.com/pichlermarc"><code>@​pichlermarc</code></a></li>
    <li>feat(configuration): auto-generate TypeScript types from OTel
    declarative config JSON schema (stable v1.0.0) using
    <code>json-schema-to-typescript</code> and <code>ajv</code> <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6533">#6533</a>
    <a
    href="https://github.com/MikeGoldsmith"><code>@​MikeGoldsmith</code></a></li>
    <li>feat(configuration, sdk-node): <code>startNodeSDK()</code> code path
    now uses <code>log_level</code> configuration to setup a
    DiagConsoleLogger <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6668">#6668</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a>
    <ul>
    <li>Note that allowed values for <code>log_level</code> in a
    configuration YAML file are <em>not</em> the same set as for
    <code>OTEL_LOG_LEVEL</code>. Use <code>log_level: trace</code> to see
    <em>all</em> logs (equivalent of <code>OTEL_LOG_LEVEL=ALL</code>). Use
    <code>log_level: fatal</code> to effectively disable the SDK's internal
    diagnostic logger (equivalent of <code>OTEL_LOG_LEVEL=NONE</code>).</li>
    <li>If <code>log_level</code> is not specified, a diagnostic console
    logger at &quot;info&quot; level will be setup.</li>
    <li>An invalid YAML config file will now result in a noop OTel SDK.</li>
    </ul>
    </li>
    </ul>
    <h3>:bug: Bug Fixes</h3>
    <ul>
    <li>fix(configuration): do not validate <code>OTEL_CONFIG_FILE</code>
    value before using it for file config <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6643">#6643</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve how 'additionalProperties' in JSON
    schema is translated to TS types <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6650">#6650</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): remove stripMinItems and preprocessNullArrays
    from validation/parsing <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6657">#6657</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve handling of enums in generated types <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6659">#6659</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve the technique for removing '| null' on
    types the JSON Schema <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6662">#6662</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(sampler-jaeger-remote): add missing axios dep <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6656">#6656</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(exporter-prometheus): handle malformed URLs in Prometheus
    exporter request handler <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6674">#6674</a>
    <a href="https://github.com/homanp"><code>@​homanp</code></a></li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/06ad0eaaecbd49f5ead871325f852cc2a3454079"><code>06ad0ea</code></a>
    chore: prepare next release (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6703">#6703</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/38ca257e64ebd13f5603d5539f8a48d6d9232037"><code>38ca257</code></a>
    feat(otlp-transformer): replace protobufjs metrics serialization with
    custom ...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/013c60085b84351a4c1e4e4f79e3dd67c56661cd"><code>013c600</code></a>
    chore: prepare next release (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6699">#6699</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/b7a0c63bde39d7916fdb73cbb3d64cf1c93282c5"><code>b7a0c63</code></a>
    feat(semantic-conventions): update semantic conventions to v1.41.1 (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6695">#6695</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/774143b2c6667c6537c000ab48ea5ce998278ca0"><code>774143b</code></a>
    chore(renovate): add minimumReleaseAge to config (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6697">#6697</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/e0dafe0d9fadaccf7dd8d7b02dd85531356e2ac1"><code>e0dafe0</code></a>
    fix(otlp-exporter-base): remove brackets from IPv6 hostname in HTTP
    transport...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/f804c93d1d6d903036b8bf38f8c3713dbbaf0360"><code>f804c93</code></a>
    chore(deps): update github/codeql-action digest to 68bde55 (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6682">#6682</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/95e48e7afcc475ded350b95b43070c54591ecbbb"><code>95e48e7</code></a>
    refactor(sdk-logs): alias <code>LoggerProviderConfig</code> to
    <code>LoggerProviderOptions</code> (...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/907b627d9ada25844b0f06551ecd9bbda5c0ea4f"><code>907b627</code></a>
    feat(sdk-node): allow startNodeSDK() without an arg (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6688">#6688</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/0d1526198fafe7f90078ff353103d0427e6c64d4"><code>0d15261</code></a>
    docs: Add SIG meeting info and welcoming language (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6689">#6689</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.216.0...experimental/v0.218.0">compare
    view</a></li>
    </ul>
    </details>
    <br />

    Updates `@opentelemetry/exporter-metrics-otlp-http` from 0.216.0 to
    0.218.0
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/open-telemetry/opentelemetry-js/releases">@​opentelemetry/exporter-metrics-otlp-http's
    releases</a>.</em></p>
    <blockquote>
    <h2>experimental/v0.218.0</h2>
    <h2>0.218.0</h2>
    <h3>:rocket: Features</h3>
    <ul>
    <li>feat(otlp-transformer): replace protobufjs metrics serialization
    with custom implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6629">#6625</a>
    <a
    href="https://github.com/pichlermarc"><code>@​pichlermarc</code></a></li>
    <li>feat(configuration): show all config validation errors, if there are
    multiple <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6683">#6683</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>feat(sdk-node): allow startNodeSDK() without an arg <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6688">#6688</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    </ul>
    <h3>:house: Internal</h3>
    <ul>
    <li>refactor(sdk-logs): alias <code>LoggerProviderConfig</code> to
    <code>LoggerProviderOptions</code> <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6691">#6691</a>
    <a
    href="https://github.com/david-luna"><code>@​david-luna</code></a></li>
    <li>refactor(sdk-logs): use <code>Logger.enabled()</code> within
    <code>Logger.emit()</code> implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6680">#6680</a>
    <a
    href="https://github.com/david-luna"><code>@​david-luna</code></a></li>
    </ul>
    <h2>experimental/v0.217.0</h2>
    <h2>0.217.0</h2>
    <h3>:rocket: Features</h3>
    <ul>
    <li>feat(otlp-transformer): replace protobufjs trace serialization with
    custom implementation <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6625">#6625</a>
    <a
    href="https://github.com/pichlermarc"><code>@​pichlermarc</code></a></li>
    <li>feat(configuration): auto-generate TypeScript types from OTel
    declarative config JSON schema (stable v1.0.0) using
    <code>json-schema-to-typescript</code> and <code>ajv</code> <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6533">#6533</a>
    <a
    href="https://github.com/MikeGoldsmith"><code>@​MikeGoldsmith</code></a></li>
    <li>feat(configuration, sdk-node): <code>startNodeSDK()</code> code path
    now uses <code>log_level</code> configuration to setup a
    DiagConsoleLogger <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6668">#6668</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a>
    <ul>
    <li>Note that allowed values for <code>log_level</code> in a
    configuration YAML file are <em>not</em> the same set as for
    <code>OTEL_LOG_LEVEL</code>. Use <code>log_level: trace</code> to see
    <em>all</em> logs (equivalent of <code>OTEL_LOG_LEVEL=ALL</code>). Use
    <code>log_level: fatal</code> to effectively disable the SDK's internal
    diagnostic logger (equivalent of <code>OTEL_LOG_LEVEL=NONE</code>).</li>
    <li>If <code>log_level</code> is not specified, a diagnostic console
    logger at &quot;info&quot; level will be setup.</li>
    <li>An invalid YAML config file will now result in a noop OTel SDK.</li>
    </ul>
    </li>
    </ul>
    <h3>:bug: Bug Fixes</h3>
    <ul>
    <li>fix(configuration): do not validate <code>OTEL_CONFIG_FILE</code>
    value before using it for file config <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6643">#6643</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve how 'additionalProperties' in JSON
    schema is translated to TS types <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6650">#6650</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): remove stripMinItems and preprocessNullArrays
    from validation/parsing <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6657">#6657</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve handling of enums in generated types <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6659">#6659</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(configuration): improve the technique for removing '| null' on
    types the JSON Schema <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6662">#6662</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(sampler-jaeger-remote): add missing axios dep <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6656">#6656</a>
    <a href="https://github.com/trentm"><code>@​trentm</code></a></li>
    <li>fix(exporter-prometheus): handle malformed URLs in Prometheus
    exporter request handler <a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/pull/6674">#6674</a>
    <a href="https://github.com/homanp"><code>@​homanp</code></a></li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/06ad0eaaecbd49f5ead871325f852cc2a3454079"><code>06ad0ea</code></a>
    chore: prepare next release (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6703">#6703</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/38ca257e64ebd13f5603d5539f8a48d6d9232037"><code>38ca257</code></a>
    feat(otlp-transformer): replace protobufjs metrics serialization with
    custom ...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/013c60085b84351a4c1e4e4f79e3dd67c56661cd"><code>013c600</code></a>
    chore: prepare next release (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6699">#6699</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/b7a0c63bde39d7916fdb73cbb3d64cf1c93282c5"><code>b7a0c63</code></a>
    feat(semantic-conventions): update semantic conventions to v1.41.1 (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6695">#6695</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/774143b2c6667c6537c000ab48ea5ce998278ca0"><code>774143b</code></a>
    chore(renovate): add minimumReleaseAge to config (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6697">#6697</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/e0dafe0d9fadaccf7dd8d7b02dd85531356e2ac1"><code>e0dafe0</code></a>
    fix(otlp-exporter-base): remove brackets from IPv6 hostname in HTTP
    transport...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/f804c93d1d6d903036b8bf38f8c3713dbbaf0360"><code>f804c93</code></a>
    chore(deps): update github/codeql-action digest to 68bde55 (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6682">#6682</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/95e48e7afcc475ded350b95b43070c54591ecbbb"><code>95e48e7</code></a>
    refactor(sdk-logs): alias <code>LoggerProviderConfig</code> to
    <code>LoggerProviderOptions</code> (...</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/907b627d9ada25844b0f06551ecd9bbda5c0ea4f"><code>907b627</code></a>
    feat(sdk-node): allow startNodeSDK() without an arg (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6688">#6688</a>)</li>
    <li><a
    href="https://github.com/open-telemetry/opentelemetry-js/commit/0d1526198fafe7f90078ff353103d0427e6c64d4"><code>0d15261</code></a>
    docs: Add SIG meeting info and welcoming language (<a
    href="https://redirect.github.com/open-telemetry/opentelemetry-js/issues/6689">#6689</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/open-telemetry/opentelemetry-js/compare/experimental/v0.216.0...experimental/v0.218.0">compare
    view</a></li>
    </ul>
    </details>
    <br />

    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.

    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)

    ---

    <details>
    <summary>Dependabot commands and options</summary>
    <br />

    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore <dependency name> major version` will close this
    group update PR and stop Dependabot creating any more for the specific
    dependency's major version (unless you unignore this specific
    dependency's major version or upgrade to it yourself)
    - `@dependabot ignore <dependency name> minor version` will close this
    group update PR and stop Dependabot creating any more for the specific
    dependency's minor version (unless you unignore this specific
    dependency's minor version or upgrade to it yourself)
    - `@dependabot ignore <dependency name>` will close this group update PR
    and stop Dependabot creating any more for the specific dependency
    (unless you unignore this specific dependency or upgrade to it yourself)
    - `@dependabot unignore <dependency name>` will remove all of the ignore
    conditions of the specified dependency
    - `@dependabot unignore <dependency name> <ignore condition>` will
    remove the ignore condition of the specified dependency and ignore
    conditions
    You can disable automated security fix PRs for this repo from the
    [Security Alerts
    page](https://github.com/openfrontio/OpenFrontIO/network/alerts).

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 6591b05
Author: RickD004 <realtacoco@gmail.com>
Date:   Mon May 18 20:43:02 2026 -0600

    Adds map of Venice 🛶 (#3935)

    Adds map of Venice. A relatively small map (similar land area to World)
    for heavy trade and lots of boating.

    Because of the very low difference of elevation of the zone, terrain is
    instead used to show buildings.

    Map source from OpenStreetMap, already credited in CREDITS.md

    Very requested map, with 2 discord posts suggesting it with +15 upvotes
    each

    <img width="794" height="569" alt="image"
    src="https://github.com/user-attachments/assets/ca7d44f2-cfc9-4e93-b7d4-43dbe62f74d4"
    />

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    tri.star1011

commit 15ac42b
Author: Ryan <7389646+ryanbarlow97@users.noreply.github.com>
Date:   Tue May 19 03:20:29 2026 +0100

    streamer mode bugfix (#3953)

    fixes
    #3572

    streamer mode bufix

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    w.o.n

commit a2aa782
Author: VariableVince <24507472+VariableVince@users.noreply.github.com>
Date:   Tue May 19 04:19:02 2026 +0200

    Display player flags next to their names again (#3965)

    Display flags again.

    - [x] I have added screenshots for all UI updates
    - [x] I process any text displayed to the user through translateText()
    and I've added it to the en.json file
    - [x] I have added relevant tests to the test directory
    - [x] I confirm I have thoroughly tested these changes and take full
    responsibility for any bugs introduced
    regression is found:

    tryout33

commit 17e3ac4
Author: evanpelle <evanpelle@gmail.com>
Date:   Mon May 18 19:15:01 2026 -0700

    make spawn glow follow the player's currently selected spawn tile

    Plumb spawnTile through PlayerUpdate / PlayerState / applyStateUpdate
    so the WebGL spawn overlay can read it directly. The glow was reading
    nameData.x/y (territory centroid for label placement) which only
    recomputes every 2 ticks and only when largestClusterBoundingBox has
    been updated by PlayerExecution — both lag the player's actual spawn
    click. Using spawnTile updates the same tick setSpawnTile() fires.

    Also adds spawnTile to diffPlayerUpdate / applyStateUpdate so changes
    after the initial full snapshot actually propagate (the recent
    diff-only PlayerUpdate path silently dropped any field not enumerated
    in those helpers).

commit 0eb8578
Author: evanpelle <evanpelle@gmail.com>
Date:   Mon May 18 17:39:27 2026 -0700

    Fix nations not spawning in singleplayer when player picks fast

    NationExecution gated its first SpawnExecution by the same
    attackRate/attackTick throttle used for AI actions, so a nation
    could wait up to ~100 ticks before scheduling its spawn. In
    singleplayer the human's spawn ends the spawn phase immediately,
    stranding any nation that hadn't yet reached its attackTick — on
    the next tick its NationExecution sees inSpawnPhase()=false and
    isAlive()=false (no tiles), and deactivates itself.

    First spawn now fires on tick 1, gated by a one-shot flag to
    avoid queuing duplicates. The attackRate cadence is preserved for
    subsequent re-spawns so nations still hop locations during the
    spawn phase.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

UI/UX UI/UX changes including assets, menus, QoL, etc.

Projects

Status: Complete

Development

Successfully merging this pull request may close these issues.

2 participants