Skip to content

feat(extensions): add local network transfer diagnostics - #4988

Closed
tang-vu wants to merge 1 commit into
Osmantic:public-betafrom
tang-vu:feat/beta-local-network-speedtest-20260914
Closed

tang-vu wants to merge 1 commit into
Osmantic:public-betafrom
tang-vu:feat/beta-local-network-speedtest-20260914

Conversation

@tang-vu

@tang-vu tang-vu commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Ready for independent review (2026-09-15). Candidate 7c9f0f6952788a1b6febc9b61f7998f18ec11103 has a successful GitHub check rollup and no base-branch conflict at this review snapshot. This supersedes earlier draft-status wording only. All validation gaps, migration requirements, live gates and independent human review requirements below remain in force; this is not a merge-ready approval.

Add OpenSpeedTest as an optional local browser-to-ODS network diagnostic on loopback port 7825, using the exact upstream v2.0.6 multi-architecture image digest and its UID 101 runtime.

Why this matters

Slow remote dashboards and document transfers can originate in the client-to-host network path. A locally served upload/download test helps an operator investigate that path without confusing it with LLM inference speed or the host's Internet connection. The recipe publishes only HTTP, disables optional ACME provisioning, drops capabilities and caps resource use. It stores no result history. The README explains intentional remote access, the absence of application authentication, resource/proxy effects on measurements, and stopping the service when finished.

Overlap check

Searched open and closed upstream PRs for OpenSpeedTest and network speed test, the production-file index for extensions/library/services/openspeedtest, and tracked configuration/manifests for port 7825. No existing PR provides this transfer diagnostic. Uptime Kuma #4900 monitors availability; TLS diagnostic #4903 checks certificate expiry. Their behavior does not measure browser-to-host transfer throughput. Other extension additions share generated catalog and library README changes; regenerate the catalog after combining them.

Validation

  • Exact installed Compose recipe and pinned image on Linux amd64: HTTP application served, real 30 MiB download is uncompressed/non-cacheable with no ETag, real 2 MiB upload returns 200, missing resource returns 404, and the same checks pass after container recreation. Catalog discovery and checked-in entry also pass: 2 tests in 66 seconds. Fixture containers, anonymous test volumes and network were removed.
  • A path-filtered GitHub workflow repeats the real-image HTTP test. Scoped pre-commit and git diff --check pass. make gate reproduces the existing root/WSL no-sudo fixture failure; the complete local gate is not claimed green.
  • Inspected the image's actual UID, NGINX configuration, transfer payload and available healthcheck executable. Upstream v2.0.6 uses NGINX 1.26.2; the exact image is pinned rather than silently following the latest tag.

Awaiting independent review. This evidence verifies transfer endpoints and lifecycle, not browser timing accuracy or physical NIC capacity. Browser runs, physical LAN/Wi-Fi measurements, reverse proxies, ARM and native macOS/Windows activation remain unverified. Rollback removes this optional service or restores its previous image pin; there is no application data migration. Upstream image/source: https://hub.docker.com/r/openspeedtest/latest and https://github.com/openspeedtest/Docker-Image.

Canonical catalog regeneration also restores metadata for the already tracked, disabled-by-default pixel-inference manifest. This does not add or enable that service; the integration catalog retains one entry.

Final candidate 7c9f0f6952788a1b6febc9b61f7998f18ec11103: 33 successful CI checks, 4 conditionally skipped; no pending or failed checks.

Batch integration receipt

This is one of 30 independently branched public-beta PRs. The published synthetic integration head is 61f4c6fccc81bea697f4941683fefb5089ba77f4, built from baseline d49ad4bbc760be319de7f4c9b9a93b1f18fe3922 in this reproducible order:

#4946 → #4948 → #4951 → #4954 → #4972 → #4960 → #4961 → #4957 → #4964 → #4967 → #4968 → #4971 → #4975 → #4976 → #4984 → #4982 → #4990 → #4988 → #4989 → #4997 → #5003 → #5006 → #5007 → #5009 → #5012 → #5011 → #5013 → #5014 → #5020 → #5021

Reconciliation preserved all 146 files owned by a single PR byte-for-byte against their exact candidate heads. The eight shared paths preserve both CLI STT/TTS commands and help, every added Makefile test, both environment schema additions and all Extensions UI behavior. LanguageTool and Kroki both remain headless API entries. Canonical regeneration yields 76 catalog entries and 47 library manifests; all README rows are retained. Shared-file changes need these additive resolutions when merged independently.

Combined validation: 2,852 API tests passed / 1 skipped; 1,082 UI tests passed; 47 manifests passed; all 12 added Makefile commands passed; 12 catalog boundary tests passed / 12 opt-in runtime tests skipped in this combined run. Individual exact-image results remain documented above. UI lint/build, scoped secret hooks, diff checks, four platform smoke tests and installer simulation passed. Compose plans for NVIDIA/AMD/Apple each contain 20 services and no duplicate published bindings across the core plus 12 new recipes; this is static plan evidence, not simultaneous startup or GPU inference.

The first unrestricted UI run timed out in two tests under concurrent load; the complete rerun used --maxWorkers=2 with unchanged assertions and timeouts and passed. ESLint reports zero errors and 603 warnings, including the existing JSX usage-detection pattern. Full local make gate still fails the no-sudo Docker baseline covered by #3158. BATS records 416 passed / 5 failed on this root/WSL host (platform detection, root preflight and a 15 GiB versus 20 GiB free-space expectation). Neither full local gate nor BATS is described as green.

This integration receipt supplements each PR's own regression and does not waive its independent review, live hardware/browser/upgrade gates or rollback requirements. The PRs remain drafts; none was merged upstream.

This was referenced Sep 14, 2026
@tang-vu
tang-vu marked this pull request as ready for review September 15, 2026 01:31
@Lightheartdevs

Copy link
Copy Markdown
Collaborator

Thanks for this contribution. public-beta was promoted into main on 2026-09-24 and no longer receives changes, so we're closing pull requests that target it. This isn't a judgment on the change itself. If it's still needed, please rebase onto main and open a focused PR. See #7253 for details and the contribution policy.

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