Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Ready for review at All nine GitHub checks passed. The six-browser matrix finished with 715 passed and 29 browser-specific skips. Validation and Lighthouse are green; local checks also covered both production and subpath preview builds, 33 IATA polygons, all 13 province outlines, archived data, old links, firmware variants, and saved-draft recovery. The map and configurator now share MeshMapper's IATA data. Please pay particular attention to the Canada-wide catalogue change, the ON/QC-only shared scope, and the local-versus-bridge flood policy. This does not claim that every local network has migrated. Before merge: the production owner still needs to deploy and verify the gateway retirement described in |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8799f3eee0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| properties: { | ||
| code: zone.code, | ||
| tag: zone.code.toLowerCase(), | ||
| name: zone.name.replace(/, CA$/, ""), |
There was a problem hiding this comment.
Populate the map label expected by the renderer
Every boundary produced by this importer, including the committed snapshot, exposes properties.name but not properties.label. The interactive map still reads feature.properties.label in loadInteractiveMap for both the tooltip and the location selected on click, so hovering displays YOW - undefined and clicking a zone records coordinates instead of its city name. Emit label here or normalize name into label before rendering.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 5c3d54ba1a1a1cfed857c034f3bdfd2028834340. The shared map renderer now uses name (or nameFr in French) when label is absent, for both hover text and the clicked location. It also disables polygon click bubbling: the background map handler was otherwise overwriting the selected name with coordinates.
English/French regressions verify the displayed name and selected location on desktop Chromium and mobile WebKit. The approved boundary snapshot is unchanged. The fix is deployed to the preview map.
|
PR #108 is now deployed to the Canadaverse test site at Verified against the public host:
This is a preview-only deployment. Meshcore.ca production and its submission gateway were not changed; the production-owner gateway verification remains a pre-merge requirement. Preview deployment and verification are now a required handoff step for future meshcore.ca work. |
|
|
Added and deployed the six complementary IATA starter regions at
Try them on the preview map or read the starter-region guide. The 33 MeshMapper geometries remain unchanged. The six additions are separately labelled MeshCore Canada starter regions, use the same flat scope syntax, and do not generate Verification for this exact commit:
Production meshcore.ca and its submission gateway were not changed. The gateway owner's pre-merge verification remains required. |
|
All seven follow-up improvements are now included in
Preview artifact: Review entry points: region map, migration checker in step 4, French map, and ON/QC guide. The pre-existing production-gateway retirement step remains a production-owner action before merge, as documented in the PR. The new weekly review workflow activates after merge and never publishes boundaries automatically. |
|
The incorrect gap boundaries are fixed in The reported point now resolves to YKF, Goderich to YXU, and Kincardine to YLK. Sudbury remains YSB around Sudbury. Gap assignments now consider all eligible regional centres, including existing MeshMapper regions, instead of making newly added hubs absorb the rest of a province. Published MeshMapper polygons are unchanged. Added areas remain separate, labelled planning extensions using the nearby IATA code. The map, configurator, profiles and directory distinguish published boundaries from planning areas in English and French. Saved coordinate links carrying the old incorrect YSB assignment cannot generate commands until corrected. The Canada overview and map height are also fixed. Verification for this exact candidate:
Preview artifact SHA-256: If you copied a configuration for an affected gap location from the previous preview, regenerate and review it. The existing production-gateway retirement step remains an owner action before merge, as documented in the PR. |
Preserve MrAlders0n's clarification and align English/French configurator and reference wording. Keep legacy URLs and forwarding commands compatible; cover boundary and shared-IATA cases.
|
Folded #112 into this PR at The guide, configurator and reference now use city repeater / edge repeater consistently in English and French. A location on the outer boundary alone stays city mode; edge mode is for regular links between different IATA regions. Ottawa and Gatineau still count as one region ( The preview is deployed and verified at this exact commit. Try the configurator or the updated guide.
The previous preview is retained for rollback. Production, brokers and radios are unchanged. The production-owner gateway step documented above is still required before merging #108. |
|
Hey, heads up, we just shipped a proper zones API so you don't have to scrape the homepage anymore: https://wiki.meshmapper.net/zones-api/
A few things this fixes vs the current fetch script:
It's cached for an hour and has an ETag, so your weekly check is basically free. Let me know if you need anything else in it. |
Preserve the shared IATA generator while including neighbour lookup, cleanup choices and expandable explanations in both languages.
Cache public API responses with ETags, review null boundaries and 2-6 character region codes, and preserve the approved map snapshot. Fix polygon labels and prevent background clicks from overwriting selected region names.
|
Updated at @MrAlders0n — the importer now uses the official Zones API, not the homepage or private map endpoints. It follows the returned region URLs, supports 2–6-character codes and null boundaries, and records group metadata. The weekly review caches responses for an hour, uses ETags after expiry, and spaces requests below the shared limit. HTTP errors stop the run without replacing its candidate. All 33 live API boundaries validated. A second import passed with network requests blocked, confirming cache reuse. The approved map snapshot remains unchanged: the API's shape differences are within its documented rounding precision, and future boundary changes still require review rather than automatic publication. Also included:
All nine GitHub checks passed. CI recorded 930 browser passes, one Firefox navigation test that passed on retry, and 29 platform-specific skips. That Firefox journey then passed three live-preview runs with retries disabled. All 100 hosted desktop/mobile regressions passed, along with verification of 131 public pages and 17 asset hashes. The previous preview is retained for rollback. Production, brokers and radios are unchanged. #108 remains unmerged pending community discussion and approval, plus the existing production-owner gateway verification. No Discord or forum messages were posted. |
Gate personal companion scope changes on the announced Phase 2, preserve standard-settings opt-in, distinguish scope-only output, and clarify Phase 3 and planning assignments in English and French.
|
Aligned the rollout guidance at
All nine GitHub checks passed: 967 browser passes, 29 platform-specific skips, no flaky tests. Local checks included 203 unit/helper tests and 72 targeted browser checks. All 12 focused live-preview checks passed with retries disabled, plus public verification of 131 pages and 17 assets. An initial run hit Cloudflare 502 pages; the origin stayed healthy, affected routes recovered, and the unchanged checks then passed. No server settings or test thresholds were changed. Previous preview retained for rollback. Production, brokers and radios are unchanged. Community review and the existing production-owner gateway verification remain required before merging. |
|
The configurator and region map now share the ON/QC proposal's colours, rounded cards, buttons and command-copy controls in both languages and themes. The scope labels use the same blue, green, purple and dashed-neutral styling. This reuses the existing shared design tokens; no new dependency. Preview is updated to All nine GitHub checks passed. The browser run recorded 989 passes, two mobile Safari timeouts that passed on retry, and 29 platform skips. Both timed-out journeys also passed three hosted repetitions each with retries disabled. The 28 focused hosted language/theme/contrast/rollout checks passed without retries, and public verification matched all 131 pages and 18 key assets with no application errors or CSP violations. Boundaries, generated commands, rollout guidance and opt-in settings are unchanged. Production is untouched; the previous preview ( |
|
#114 is incorporated into #108 and deployed to preview at
All nine CI checks passed: 999 browser passes, four mobile WebKit styling cases that passed on retry after 30-second timeouts, and 29 platform skips. All 32 focused hosted English/French checks passed with retries disabled, including those four styling cases. Public verification matched all 131 pages and 18 assets, with no application errors or CSP violations. The 203 unit/helper tests and 2,584 independent geographic checks also passed. The previous preview ( |
|
Quinte feedback addressed in The proposal now uses the shared catalogue for all 24 ON/QC IATA codes, not four hardcoded area choices. Quinte ( The English and French pages now have a city/IATA finder near the top, a scope summary, direct command links and shareable settings. Search failures clear old commands, ambiguous places require a choice, and proposed areas remain labelled. Live Quinte, Belleville and Trenton searches resolve to
Verification: all nine GitHub checks passed, 203 local unit/helper tests passed, all 60 new finder cases passed across six browser configurations, and all 60 focused hosted checks passed with retries disabled. CI had one existing French migration timeout on mobile WebKit that passed on retry; it also passed on preview without retries. Public checks verified 131 pages and 18 asset hashes with no application errors or CSP violations. No boundary, rollout-phase or production changes. The configurator's standard settings remain opt-in, |
|
Implemented the region/proposal UX update and the requested preparation/activation split.
English proposal · Proposition en français · Configurator Verified candidate: The browser matrix now tests each firmware setup independently, and WebKit jobs use a dedicated worker to avoid contention. Timeouts, retry policy, assertions and performance thresholds are unchanged. The previous preview ( Please review the revised cutover timing in particular. #108 is still open; a preview deployment is not a rollout announcement. The existing production-owner gateway verification remains a pre-merge requirement. |
Summary
Unifies Canada's region map and configurator with MeshMapper IATA codes, with a clearer English/French proposal and a preparation-first rollout. Includes #112 and #114 and the subsequent review feedback.
Candidate:
6c7562e5e8c6b02f62a44a1557c14887cefe9cd9.Preview: Canadaverse test site. Production is unchanged; this PR remains open for community review.
Preparation and coordinated activation
This deliberately replaces the earlier instruction to block unscoped floods during Phase 1.
*) or the default scope. Matching entries can move to the flat structure; back up and inspect the current list first. The migration checker checks the combined list against the firmware limits.canandnaremain reserved labels, not companion defaults or a promise of international routing. No commands are sent to a radio.Clearer operator and user journeys
rolloutprofile record requires a dated public announcement; all current records remain explicitly unconfirmed. No maintainer, adoption or readiness is inferred from map publication or radio traffic.Try Quinte in English, Quinte in French, or the preparation-first configurator.
Preserved IATA implementation
onqc+ reservedcan/nascopes. Cross-province zones require the repeater's actual province. Neighbouring city scopes are optional; U.S. paths remain explicit and separate from Canadian geography.Verification
ytr/on; Gatineau resolves toyow/qc.Preview artifact SHA-256:
6d14d8f49bb0c852e94179843a509f82405d697ba5df37aa008d600e52a48b45.The previous preview,
c0e3054, is retained for rollback. No server restart, production deployment, broker change or radio change is part of this update.Before merge
Community review of the revised activation timing is still required. This page is a proposal, not a rollout announcement.
The production owner must also deploy and verify the existing gateway-retirement changes: obsolete boundary submissions return 410 without external writes, immutable previews remain accessible, and community submissions still work. Preserve the ledger, secrets, endpoint and ports. See gateway instructions and IATA maintenance guidance.