Repository navigation
mgbrowser v0.9.32 Experimental Preview
End-to-end live Google Search compatibility (https://www.google.com/ -> search
query -> SearchGuard knitsail challenge & SG_SS cookie -> HTTP 200 SERP
with inline data:image/ maps/thumbnails -> click first organic result ->
destination), strict <noscript> suppression whenever scripts_enabled == true,
sloppy direct-eval dynamic-binding slot isolation in boa_engine 0.22.0,
WebIDL prototype/brand/event/image/window surface completion, 256 KiB
data:image/ attribute materialization, styled Display::Inline descendant
geometry & 2,000,000-step worker compute_boxes layout parity, and the
explicit boa-interactive-page-v1 desktop script profile. Exact-source
publication and public-install receipts are recorded in the dated work log.
Linux x86_64 / X11 or XWayland, glibc 2.35 or newer. Rust 1.91.1, locked
dependencies, Apache-2.0 license, and pure-Rust implementation backends (zero
C/C++ bindings or new crates).
Root-Cause Fixes & Live Google Search Parity (v0.9.32)
- Never Activate
<noscript>Whenscripts_enabled == true(crates/mg-chassis/src/lib.rs):- Removed the
v0.9.31fallback that projected<noscript>elements and
followed<noscript><meta http-equiv="refresh">to
/httpservice/retry/enablejs("Turn on JavaScript to keep searching") when
initial scripts hitRealmState::Fatal. Per HTML §4.12.2,<noscript>is
rendered strictly and exclusively when scripting is disabled
(--disable-scripts/scripts_enabled == false).
- Removed the
- Sloppy Direct-
evalDynamicvarSlot Isolation (vendor/boa_engine-0.22.0/):- Fixed an upstream
boa_engine 0.22.0bug where sloppy directeval("var x = ...")
inside a repeatedly invoked function mutated the sharedCodeBlock
compile-timeScopeso subsequent calls createdFunctionEnvironmentslots
treating earlierevalvardeclarations as undeleted static bindings and
mis-evaluatingtypeofinGetNameOrUndefined— causing SearchGuard's
knitsailVM to silently abort ~50% of cold sessions at ~143 admissions
withHTTP 429instead of completing ~222 admissions withHTTP 200.
- Fixed an upstream
- Complete WebIDL Prototype, Event, Image & Window Surface (
crates/mg-sparkle/src/js_browser/boa/):- Installed branded
Window,Navigator(PluginArray,MimeTypeArray),
HTMLIFrameElement(contentWindow,contentDocument),HTMLMediaElement/
HTMLVideoElement/HTMLAudioElement,HTMLImageElement(naturalWidth,
naturalHeight,complete,currentSrc,decode, legacy layout
reflections),Element/Nodenamespace/attribute/visibility methods, 42
auditedWindowproperties/methods ([Global]/[Replaceable]descriptors,
getSelection,requestIdleCallback), and fullMouseEvent/UIEvent
properties (screenX/screenY,x/y,offsetX/offsetY,
layerX/layerY,movementX/movementY,view,which,
getModifierState), while preventing modern handles (navigator,history,
mevent:*,subdoc:*,abortsignal:*,xhr:*) from leaking through
host.get.
- Installed branded
- Inline
data:image/(<= 256 KiB) & Worker Layout Geometry (crates/mg-sparkle/):- Raised
data:image/srcattribute and inline image materialization limits
to256 KiB(<= 8large> 4 KiBinline images,<= 1 MiBaggregate) so
Google SERP inline base64 maps and thumbnails (19inline images up to
77 KiB) render cleanly. - Updated
geometry_style::node_rect,collect_live_stylesheets,
ensure_layout_cached, andstyled_layout::compute_boxes(2,000,000
layout budget + descendant box unions forDisplay::Inlineanchors) so
getBoundingClientRect()and Playwrightlocator.click()hit-test organic
SERP links accurately.
- Raised
- Interactive Desktop Script Profile (
boa-interactive-page-v1):- Interactive desktop browsing (
mgbrowserdefault GUI launch or
--interactive-script-profile) usesResourceProfile::InteractivePageV1
(32Mopcodes,16 MiBcumulative source,64 MiBoutstanding /512 MiB
cumulative worker allocations,5 CPU s,768 MiBRLIMIT_AS,10 s
active time) with identical seccomp,RLIMIT_NOFILE = 3, and
RLIMIT_FSIZE = 0confinement, while preservingboa-page-process-v1
unchanged across all library defaults, worker selftests, WPT runners, and CI
gates.
- Interactive desktop browsing (
- Preserved WPT Coverage:
- Static WPT reftest coverage (
558 PASS / 391 FAIL / 62 UNSUPPORTEDof
1,011) and Window WPT coverage (16/16files,79/79final subtests)
remain intact with zero regressions, within the unchanged< 8 MiBrelease
archive limit.
- Static WPT reftest coverage (