Repository navigation
mgbrowser v0.9.30 Experimental Preview
mgbrowser v0.9.30 Experimental Preview
Responsive CSS Grid ([named-lines], fit-content(), repeat(auto-fill | auto-fit, ...)), generalized intrinsic box sizing (min-content, max-content,
fit-content), CSS box-shadow and text-shadow Gaussian blur rendering,
multi-stop (2..=16) linear/repeating-linear/radial/repeating-radial gradients,
CSS 2D transform (translate, scale, matrix), clip: rect(...) /
clip-path: inset(... round ...) and text-overflow: ellipsis, pure-Rust HTML5
<canvas> 2D immediate-mode rasterization and PNG export, browser-hosted ES
<script type="module"> execution, DOM Observers (MutationObserver,
ResizeObserver, IntersectionObserver) and CustomElementRegistry
(window.customElements), @font-face unicode-range subset filtering,
large-page (> 1 MiB) CDP utility-world automation (news.google.com), honest
Linux desktop User-Agent compatibility (www.npr.org), independent per-tab
page zoom (25%..=500%), persistent user-local localStorage, and tab session
snapshot & restore. 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
new crate dependencies).
CSS Visual Parity, Responsive Grid & Intrinsic Sizing (v0.9.30)
- Named Grid Lines,
fit-content()&repeat(auto-fill | auto-fit)(crates/mg-sparkle/):- Parses explicit
[line-name]line lists ongrid-template-columnsand
grid-template-rows, synthesizes implicit<area>-start/<area>-end
lines fromgrid-template-areas, resolvesgrid-column/grid-rownamed
lines andspan <name>placements, mapsfit-content(<length-percentage>)
tracks, and expandsrepeat(auto-fill | auto-fit, ...)track definitions
against container dimensions while collapsing emptyauto-fittracks to
0px(rendering MDN Web Docs--layout-no-sidebar-extendedin full styled
layout without readable-flow fallback).
- Parses explicit
- Generalized Intrinsic Sizing & HTML5
<canvas>Replaced Layout (crates/mg-sparkle/):- Supports
min-content,max-content, andfit-contentkeywords across
width,height,min-width,min-height,max-width,max-height, and
flex-basisacross block, inline, flex, and grid formatting contexts, plus
HTML5<canvas>300x150intrinsic fallback and HTMLwidth/height
attribute sizing.
- Supports
- Shadows, Multi-Stop Gradients, 2D Transforms, Clipping & Ellipsis (
crates/mg-sparkle/):box-shadow(0..=8reverse-painted layers) with analytical rounded-rect
signed-distance Gaussian blur, outer border-box cutout masking, andinset
padding-box clipping;text-shadow(0..=4layers) with blurred glyph
rasterization beneath text runs.- Multi-stop (
2..=16)linear-gradient,repeating-linear-gradient,
radial-gradient, andrepeating-radial-gradientbackgrounds with CSS
Images 3 stop fixup and color-transition midpoints. - CSS 2D
transform(translate,translateX,translateY,translate3d,
scale,scaleX,scaleY,matrix) withtransform-origin, stacking
context creation, andposition: fixedcontaining-block establishment. - Screen-reader
clip: rect(...)andclip-path: inset(... round ...)
zero-area visual hiding and rounded inset clipping, plus single-line
text-overflow: ellipsis(U+2026) truncation.
- Measured WPT Coverage:
- Static flexbox reftest lane advances from
541to 558 PASS / 391 FAIL /
62 UNSUPPORTED of 1,011 (+17genuine new passes overv0.9.29, zero
losses;expectations.jsonmanually ratcheted to protect all558passes
and949runnable cases). - Separate real-Browser Window lane retains 16 / 16 files and 79 / 79 final
subtests (100%).
- Static flexbox reftest lane advances from
HTML5 <canvas> 2D, ES Modules, DOM Observers & Web Components (v0.9.30)
- Pure-Rust HTML5
<canvas>2D Engine (crates/mg-sparkle/src/js_browser/boa/canvas.rs,crates/mg-chassis/):- Implements
HTMLCanvasElement.getContext('2d')(<= 2048x2048,<= 1,048,576
pixels, worker-memory-accounted premultiplied RGBA buffer):fillRect,
strokeRect,clearRect, subpaths (beginPath,moveTo,lineTo,
quadraticCurveTo,bezierCurveTo,arc,arcTo,ellipse,rect,
roundRect),Path2D, nonzero/evenodd scanlinefill& dashed/joined
stroke,clip, affineDOMMatrixstate stack,CanvasGradient&
CanvasPattern, shadow blur, Porter-DuffglobalCompositeOperation,
zero-FD embedded bitmapfillText/strokeText/measureText,
getImageData/putImageData/drawImage, pure-Rust LZ77+Huffman PNG
encoding (toDataURL/toBlob), and livedocument.resourcesprojection
into Sparkle's styled layout painter.
- Implements
- Browser-Hosted ES
<script type="module">, Observers & Custom Elements (crates/mg-sparkle/src/js_browser/boa/,crates/mg-chassis/):- Preloads bounded inline and external
<script type="module">graphs (<= 16
modules,<script type="importmap">specifier resolution, live namespace
bindings,import.meta.url, and parent-brokered same-origin dynamic
import(), withnomodulesuppression in browser sessions while keeping
standaloneBoaPageRealm::start/boa_workerassertions untouched). - Implements microtask-batched
MutationObserver(childList,attributes,
characterData,subtree), layout-syncedResizeObserverand
IntersectionObserver, andCustomElementRegistry(customElements.define,
get,whenDefined,upgrade,connectedCallback,disconnectedCallback,
attributeChangedCallback), plusElement.animate/getAnimationsand
window.visualViewport.
- Preloads bounded inline and external
Real-Site Compatibility, Large-Page CDP & Desktop Session UX (v0.9.30)
@font-faceunicode-rangeFiltering, Wikipedia Sprite/SVG/JS Compatibility & Large-Page CDP (crates/mg-sparkle/,crates/mg-chassis/):- Filters
@font-facerules against document text codepoints before fetching
font binaries so multi-subset stylesheets (such as MDN's Cyrillic/Greek/Latin
font sheets) download matching subsets instead of exhaustingMAX_FONTSon
unused scripts. - Updates
USER_AGENTto"Mozilla/5.0 (X11; Linux x86_64) mgbrowser/0.9.30",
resolving CDN crawler-signature TLS tar-pitting on sites such aswww.npr.org. - Adds
window.Image(new Image(width?, height?)), raises the browser-session
addEventListenercap to2,048memory-accounted listeners (while keeping
the standaloneBoaPageRealm::startcontract cap at32), supports bounded
external/inline SVG<style>blocks and acyclic internal<use href="#id">
sprite references, resolves intrinsicbackground-size: autoand
background-positionoffsets with element-box clipping for CSS sprites,
multipliescoloralpha (color: transparent) during text painting,
suppresses spurious gradient diagnostics for MediaWiki's transparent
linear-gradient(transparent, transparent), url(...)fallback idiom, and
replaces per-reply full-HTML string materialization with zero-allocation
serialized-byte validation (www.wikipedia.orgexecutes all page scripts
and renders its SVG wordmark sprite with0JS/CSS/SVG errors or warnings). - Synthesizes a bounded (
<= 128 KiB,<= 2,500nodes)<script>-free DOM
snapshot when opening an on-demand CDP automation session on oversize (> 1 MiB) HTML documents or after page-script budget exhaustion so Playwright
page.title()and utility-world queries succeed well within the 2-second
active wall budget on pages likeen.wikipedia.org,news.google.com, and
developer.mozilla.org.
- Filters
- Per-Tab Page Zoom, Persistent
localStorage& Session Restore (crates/mg-chassis/,src/):- Independent per-tab page content zoom (
25%..=500%,Alt+=/Alt+-/
Alt+0,Ctrl+MouseWheel, address-bar zoom badge, and Hamburger Menu zoom
row) separate from whole-browser UI scale. - Atomic
0o600(O_NOFOLLOW,flock,<= 512 KiB) user-local persistence
forwindow.localStorage(local-storage.json, cleared onCtrl+Shift+Delete)
and open-tab session snapshots (session.json, restorable via Menu ->
Restore session,chrome://newtab, or--restore-session).
- Independent per-tab page content zoom (
Remaining Limitations
- Modern-web compatibility remains bounded: cross-origin dynamic
import(),
WebGL/WebGPU, HTML5<video>/<audio>codecs, Service Workers, cross-origin
CORS preflights, CSS 3D transforms/keyframe animations, and full Chromium
multi-process site isolation are not implemented. - Resource budgets (
16stylesheets,32requests,2 MiBtotal resources,
1 MiBpage script source,2048px/1,048,576-pixel image/canvas cap) and
the seccomp-confined script worker (RLIMIT_NOFILE = 3,RLIMIT_FSIZE = 0,
not a whole-browser sandbox) remain unchanged. Do not use this preview for
banking, sensitive authenticated browsing, or arbitrary hostile websites.