Skip to content

Consolidate basic Atlas and performance-enhanced Topology for dev1 - #183

Draft
n30nex wants to merge 25 commits into
dev1from
codex/release-core-20261021
Draft

n30nex wants to merge 25 commits into
dev1from
codex/release-core-20261021

Conversation

@n30nex

@n30nex n30nex commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Combine current dev with the existing basic Atlas/observer cards and Topology work from #179. Optional collected telemetry and Flutter intake support remain in a separate dependent draft stack.

Topology retains dense graph layers, live moving packet cores/glow, Public-message bubbles, camera continuity, exact cursors and TRACE quality. It now reuses projected active-segment geometry between frames, invalidates it on camera changes, and retains only currently animated segments. Missing RF measurements stay absent rather than becoming synthetic zeros. The core app stays on the Web 2.1 compatibility line.

Validation: current native CI, build/lint and targeted renderer/lifecycle tests pass. The renderer regression proves geometry reuse while packet animation continues. The test-only virtualizer teardown fix drains pending scroll timers before jsdom disappears instead of suppressing unhandled failures. These checks do not claim a universal FPS improvement.

This must be paired with the consolidated backend's Topology/evidence contracts. Core Atlas works without the optional telemetry gateway. The draft includes current upstream cursor, retry/error and MeshMapper label changes.

Refs #181. Consolidates #179 and its existing Atlas/Topology ancestry. No production deployment or review request is made by opening this draft.

This PR presents the same core head against dev1. Its larger diff includes current upstream database/client changes missing from that branch. It is a paired migration candidate, not an image-only update of the stopped historical dev1 stack.

The follow-up enforces the frame budget during camera interaction, avoids unchanged idle paints, releases inactive canvas buffers while restoring the camera, indexes observer lookup for chatter, and coalesces animation of identical packet/path hearings. Raw reports, trails, distinct paths, glows and Public chatter remain.

Current qualification and promotion gates - 23 October

The full project roadmap, issue/PR disposition and staged promotion plan are in docs #43, tracked by docs #45. Core server #266/#267 and web #182/#183 are one paired candidate; optional server #268/#269, web #184/#185, docs #44 and Flutter #11 remain a separate rollout.

Current application heads pass native CI. Canadaverse now runs server 054e08de7d7fd581e55544e0326ca92596b9a990 and web 8dcb7f2f233c8ac4086c1ebe02f81d348630321b (2.5.1-n30nex.1), including preview extras. Its complete native frontend suite passed 1,560 tests in 172 files. Public verification matched all 34 assets and both source archives, with both MQTT brokers connected, six retained telemetry histories, and invalid-signature/unenrolled submission rejection. Preview artifacts are local builds of exact clean native-CI-qualified source; this is not a stable release.

On a restored snapshot, the committed global Topology query median improved from 1.3691 s to 0.9836 s (28.2%), with the same 9,975 edges. All six unique-traffic raster cases retained identical pixels. These are query/CPU-raster checks, not browser/GPU FPS or production throughput measurements. The later public 24h sample returned the same 9,346 links in 5.619 s cold and 0.191 s warm; earlier severe shared-host I/O pressure caused timeouts. Cold-load capacity, target-browser/device checks and production-shaped migration/recovery soak remain acceptance gates.

Production/dev/dev1 were inspected read-only. Dev1 services are stopped. This preview update changed no schema, retention, intake/worker, credentials or radio ownership. Prior restored-database qualification is recorded separately; no fresh browser or physical mobile/background qualification is claimed here. Dependency advisories and the separate Vite #186 candidate still need their own resolution and qualification. No org merge or release approval is implied.

n30nex and others added 23 commits October 13, 2026 03:57
…171)

* Add live map lit-node and label helpers

* Add solid lit icons with a built-in ring

* Light crossed nodes as solid icons, newest on top

* Show idle repeaters and companions as dots in Live Map

* Disable the clustering control during Live Map

* Turn clustering off while Live Map is on

* Keep the live map helpers lint-clean

* Let a click on a lit icon win over the dot beneath it

* Tidy live map clicks, comments and filtered selection
* Speed up the Nodes table: mount only on-screen rows and sort with a shared collator

* Fit the Nodes table beside the detail panel and tidy virtualization

Name takes a 22% share and the table's floor drops to 52rem, so 1280 and
1366 px laptops no longer scroll sideways with a node open. Long names get
a title. Card dividers follow list position so heights stay put, cards and
rows cache sizes apart, getItemKey stays stable, and the table reports its
full row count to screen readers. Tests share one layout stub instead of a
global offsetHeight shim.
Chrome on macOS lays an emoji out 1em wide but paints Apple's about 1.25em
wide at small sizes on standard-density screens, so it overlapped the next
letter (☠️Grunt, 🍓Strawberry). Each emoji in a node, observer or sender
name, and in channel messages, now sits in its own span that gets 0.3em of
extra room below 1.5x density. Retina screens render unchanged.
Map and Nodes fetch a region at the server's 200 cap instead of 50, a
quarter of the requests. A 429 now pauses paging until Retry-After and
retries the refused page, instead of stopping with "Some nodes failed to
load".
* Send pageCursor next to cursor for packets, nodes and observers

* Page nodes by the exact cursor when the server sends one

* Page packets by the exact cursor when the server sends one

* Retry a busy 503 or a 429 after the server's Retry-After

* Bump version to 2.1.0

* Recover from an invalid pageCursor; cap 503 waits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants