Skip to content

feat(beacon): add city teleport menu - #8211

Open
SageHaven wants to merge 1 commit into
Scottcjn:mainfrom
SageHaven:bounty/1524-city-teleport-menu
Open

feat(beacon): add city teleport menu#8211
SageHaven wants to merge 1 commit into
Scottcjn:mainfrom
SageHaven:bounty/1524-city-teleport-menu

Conversation

@SageHaven

Copy link
Copy Markdown

BCOS Checklist (Required For Non-Doc PRs)

  • Tier: BCOS-L1
  • New JavaScript and test files include SPDX-License-Identifier: MIT
  • Test evidence is listed below

What Changed

Implements the City teleport menu Track C item (10 RTC) from rustchain-bounties#1524.

  • Adds an accessible terminal-style city dropdown to the Atlas HUD.
  • Populates every canonical city, grouped by the existing Atlas region order and sorted by city name.
  • Builds options with DOM nodes and textContent, avoiding HTML interpolation.
  • Reuses the existing selectCity path so a menu choice flies the camera to the city's 3D center, opens its detail panel, and updates the deep link.
  • Resets the command-style dropdown after each selection so the same destination can be chosen again.
  • Keeps the control interactive above the canvas and bounded on narrow screens.

This PR claims only the City teleport menu task. It does not bundle another #1524 track.

Acceptance Criteria Mapping

  • Dropdown: #hud-city-teleport is always available in the Atlas HUD after boot.
  • Any city: options are generated from the canonical CITIES and REGIONS exports; the live-data check listed all eight cities exactly once across six regions.
  • Instant camera navigation: change events resolve an exact city ID and call the existing selectCitygetCityCenterlerpCameraTo path.
  • No-build stack: vanilla JavaScript/DOM/CSS only, with no new dependency or build step.

Validation

  • node --check site/beacon/ui.js && node --check site/beacon/city-teleport.mjs — PASS
  • node --test tests/beacon_city_teleport.test.mjs — PASS, 5 tests
  • python3 -m unittest -v tests.test_beacon_city_teleport — PASS, 3 tests
  • python3 -m unittest -v tests.test_beacon_atlas — PASS, 14 tests
  • python3 -m unittest -v tests.test_beacon_atlas_behavior — PASS, 31 tests
  • git diff --check — PASS

The existing behavior suite emits SQLite ResourceWarning messages after its 31 passing tests; this focused frontend change does not alter that pre-existing database lifecycle.

Limitations

  • Chrome, Firefox, and mobile Safari are not installed on the VPS, so manual WebGL/browser interaction was not claimed. The feature uses standard DOM APIs and the Atlas's already-tested city camera path, and it passed syntax, pure behavior, integration, canonical-data, existing Atlas, and frontend-safety checks.

Payout

  • Asset/network: RTC / RustChain
  • Receive address: RTC90182c386cc09a24c03ffd58e62c39ac4ea750bc

Implemented and validated with autonomous AI assistance under the @SageHaven agent identity.

@github-actions

Copy link
Copy Markdown
Contributor

Welcome to RustChain! Thanks for your first pull request.

Before we review, please make sure:

  • Non-doc PRs have a BCOS-L1 or BCOS-L2 label
  • Doc-only PRs are exempt from BCOS tier labels when they only touch docs/**, *.md, or common image/PDF files
  • New code files include an SPDX license header
  • You've tested your changes against the live node

Bounty tiers: Micro (1-10 RTC) | Standard (20-50) | Major (75-100) | Critical (100-150)

A maintainer will review your PR soon. Thanks for contributing!

@github-actions github-actions Bot added BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) BCOS-L2 Beacon Certified Open Source tier BCOS-L2 (required for non-doc PRs) tests Test suite changes size/L PR: 201-500 lines and removed BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) BCOS-L2 Beacon Certified Open Source tier BCOS-L2 (required for non-doc PRs) tests Test suite changes labels Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/L PR: 201-500 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant