[pull] main from jason5ng32:main - #117
Merged
Merged
Conversation
Frontend accepted 6-12 hex chars while the backend requires a full 48-bit MAC, so OUI-prefix inputs passed local validation only to get a 400 upstream, surfacing as a generic fetch error. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
On close, reka-ui's DialogContentModal refocuses the pre-open activeElement with a bare focus() (no preventScroll). Safari doesn't focus links on click, so it records the outer tabindex container as the trigger and closing scrolled the page back to that container's top. Prevent close-auto-focus like SheetContent already does, and disable vaul's Safari-only position:fixed body lock (noBodyStyles) — its rAF scroll restore is unreliable on WebKit and reka-ui's lock already covers background scrolling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New /api/ooni-blocking backs the reworked Censorship Check: OONI matches domains against the exact tested hostname, so the handler merges the apex and www. variants (probe_cc x blocking_type) and classifies each country into confirmed / likely / signs tiers calibrated on real 30-day data. Window is server-computed and day-aligned so the 6h edge cache holds; 5xx from OONI's occasionally flaky API gets one fast retry, timeouts do not. Adds the requireValidDomain() guard (lowercases for one canonical cache key). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ime tests Default view is now 30 days of OONI observations (tiered per-country rows with blocking methods) instead of an ad-hoc probe run. The realtime module becomes a checkbox picker over three sections (flagged / heavily-censored / usually-open) feeding one Globalping run - raw results, no verdict; rows pre-padded to probes-per-country to avoid reflow. Degrades gracefully when the OONI upstream errors: banner + presets stay usable. Probe availability comes from a session-cached Globalping country list. OONI joins the footer acknowledgements (CC BY 4.0); copy reworked in all four locales. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New /api/globalping-probes proxies Globalping's probe list and reduces it server-side to the country picker's shape (which countries have an online probe, bucketed into five continents) — a ~1.4KB payload instead of the multi-hundred-KB raw list on the visitor's connection. Coverage changes slowly and the pickers fail open, so the route sits behind a week of edge cache. Aggregation is a pure function in common/ with its own spec. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ship New GlobalpingCountryPicker renders the caller's suggestion sections plus the full per-continent catalog of probe-having countries (from the backend inventory), all over one v-model selection with section-level select-all and a sticky tally. Caps are soft: past the limit (30 for MTR/latency, 12 for censorship) the tally turns red and the run button locks. MTR and Global Latency keep their curated 28-country spread as the default-selected suggestion; CensorshipCheck migrates its inline picker to the component and gains the free catalog. Left picker column matches the results column's height once results exist (absolute-fill trick, min-height floor). Also folds CensorshipCheck's render-function table back into the template. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ping / MTR / censorship descriptions now name GlobalPing as the probe network in all four locales. Adds the shared `globalping` locale section (picker tally, presets, continents), drops the censorshipcheck keys the shared picker superseded, and updates the v7.2.0 changelog entry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The docs center now carries the full env-var reference and deployment guides, so the READMEs keep only the two settings a first deploy must get right (MaxMind, ALLOWED_DOMAINS) and link out for the rest. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A nav search box (desktop, rotating preset questions) and question icon (mobile) open the GitBook assistant with the visitor's query as its first message. The embed script loads on demand, never at page load. Gated on VITE_DOCS_URL at build time and configs.originalSite at runtime. Greeting, suggestions and the sidebar action follow the UI locale; theming follows the page color-scheme. Launcher and panel are pinned bottom-left on the FAB baseline with a height cap so they never overflow the viewport; DocsAssistant.vue adds a mobile backdrop and scroll lock, syncing state from the panel since the embed fires no open/close callbacks. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Links to the docs site from VITE_DOCS_URL; hidden when unset so forks don't show a dead link. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Registers a get_my_test_results tool so questions like "is this normal?" are answered against the visitor's actual data instead of generic docs. It reuses the report collector's schema-shaped snapshots, so no new data pipeline and the same whitelist (lookup tools stay out by design), and reports which sections have not been run yet so the assistant can suggest them. Reading is gated behind the embed's confirmation button — those snapshots carry the visitor's IP. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New section covering what the assistant sends to GitBook, that reading on-page results requires explicit confirmation, and that the conversation never passes through our servers. Carries its own gate (VITE_DOCS_URL + originalSite) rather than riding the report-sharing one, so a deployment never reads about a feature it doesn't ship. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The embed ships a pill with a text label anchored to the viewport edge; the FAB dock hugs the 1600px content area instead, so the two drifted apart on wide screens. Mirrors the dock's inset formula and restyles the launcher into the same 2.25rem circle, dropping the label and the pill's padding so the icon keeps its size-4 box instead of being squeezed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )