Best viewed in Nordstjernen
small, steady, independent · written from scratch in C · no JIT, no telemetry

Northstar Browser 1.0.7 released!

Today, 8 August 2026, we are pleased to announce the release of Northstar 1.0.7. Northstar is the free-software edition of the Nordstjernen project: a single-window, single-page, single-process desktop browser built from the same clean-room C engine, licensed under the GNU General Public License, version 3 or later. It runs on Linux, macOS and Windows.

This release teaches the browser to print, rebuilds the about:start sky and earth, and closes the layout and framing gaps that kept WebAssembly-driven applications from running at all — frames can now reach their parent, each framed document carries its own Content-Security-Policy, and fetch() resolves with a real Response.

Northstar Browser version 1.0.7 is available now! Read the full release notes here, or jump straight to the downloads. This release adds Linux binaries — a portable zip, an AppImage and a Debian package — alongside the Windows build.

It ships alongside Nordstjernen 1.0.23, the source-available flagship built from the same engine.

« About the Northstar Browser · Back to nordstjernen.org

Northstar 1.0.7's about:start start page — the rebuilt sky-and-earth splash above a search box
Northstar 1.0.7’s about:start page — the splash rebuilt for the release, with a scattering atmosphere and a settled earth below it. more screenshots »

highlights

the splash

The sky was a two-stop vertical ramp drawn as one filled rectangle per scanline, which is both the slowest way to write a gradient and the one that bands worst. It is now a multi-stop atmosphere rendered as an array, with forward scattering around the sun, a haze band along the horizon and a scatter of stars that fades out as the sky brightens towards it. The north star hangs in the dark of the zenith, cool against the warm sun on the other side of the frame, and twinkles on its own period so the two never pulse together.

The earth had been a soft blur: its terrain came from one 1024² noise field sampled through three fixed mip taps, so coastlines dissolved and nothing on land read as relief. It is built at 2048² now from a continent field, a coastline field and ridged noise for mountain ranges, shaded from the height gradient, and sampled with a real trilinear filter across the whole mip chain — so there are coastlines with a shallow shelf inside them, snow that sits on the peaks rather than across whole regions, and deserts and forests that follow a moisture field. Aerial perspective now decays with distance the way it should, which had been inverted.

The land is settled, in the manner of a turn-based strategy map: capitals are scattered across it at a minimum separation and the ground divided between them by a Voronoi partition whose distances are warped by noise, so frontiers wander the way drawn ones do rather than meeting at straight bisectors. Each nation takes the lowest colour none of its neighbours holds, and wears it as a wash over its territory, a bolder line along its frontiers and a lighter one down its coast, with a capital and up to four towns marked inside. It rides as its own premultiplied overlay above the terrain and fades out with distance, so the markers do not turn into confetti where the texture repeats near the horizon, and passing cloud covers them the way cloud covers everything else.

layout and CSS

printing

The engine gets the parts of CSS that a printer needs. @media print now matches — the media type was hardcoded to screen, so a page’s print stylesheet was simply ignored. @page sets the sheet size from a name (A4, letter, legal, ledger, the A and B series), from one or two lengths, or from portrait/landscape, along with its margins. break-before, break-after and break-inside — with the legacy page-break-* spellings mapping onto them and always becoming page — decide where a sheet may end.

A sheet is cut at a forced break if there is one before the page is full; otherwise the cut is pulled up above any box it would have split, which is every leaf box, every line of a paragraph, and anything asking for break-inside: avoid. Printing restores the on-screen layout afterwards, so the page a reader is looking at does not reflow under them.

frames, JavaScript and the web platform

text layout

Text layout is ns-pango 2f975d8, and a paragraph now measures the same whether or not another paragraph shaped its words first. The shaping cache decided where a run could be cut by reasoning about Unicode — a space either side of the boundary, or an ideograph — but Unicode does not know what a font does, and Liberation Sans and Liberation Serif, which fontconfig hands out for Arial, Helvetica and Times New Roman, kern the space against the letter that follows it and put the adjustment on the space. A cached piece ending in one therefore carried a width that belonged to whatever word had followed it that time, and served it in front of another: “Type of” came out 1024 units narrow once “Type A” had been laid out, and which paragraph was wrong depended on what the process had rendered earlier.

HarfBuzz answers this directly — asked for unsafe-to-concat flags it marks the clusters whose glyphs depend on the text beyond them — so a piece is now stored only when the shaper cleared both of its cuts, and an item whose pieces do not all survive that is stored whole instead. Verified by rendering the 45 pages in data/render-tests/ with the cache on and with it off: identical layout on every one.

documentation and known limitations

docs/compliance.md records where the engine stands against the HTML and CSS specifications, how to reproduce the web-platform-tests scores, and the known structural gaps. docs/building.md gains a section on how a dependency is actually resolved and how to move a pin — lexbor and quickjs-ng take a system copy whenever the build finds one new enough and only fall back to the wrap, while ns-pango is always the subproject, because the renamed symbols are the whole reason it can sit beside the system Pango that GTK loads.

about Northstar

Free software. Northstar is licensed under the GNU GPL, version 3 or later — use it, read it, change it, share it.

One process, one page. All rendering happens in a single compact process — about 160,000 lines of original C, excluding the vendored WAMR, Wuffs and audio decoders — prioritizing auditability. On Linux it runs behind a Landlock filesystem sandbox (plus PR_SET_NO_NEW_PRIVS) with a default-deny seccomp syscall filter. No JIT.

Standards-first. The same engine lineage as Nordstjernen: lexbor v3.0.0 for HTML/CSS, quickjs-ng v0.16.1 for JavaScript, ns-pango for text, WAMR for WebAssembly, Wuffs for image decoding. Modern CSS (flex, grid, transforms, gradients, keyframes, scroll snap), Shadow DOM, custom elements, the Navigation API, service workers and WebExtensions. Behaviour is measured against the spec text, section by section.

What it leaves out. Compared with Nordstjernen: no multi-window browsing, no per-tab renderer processes, no WebGL or WebGPU, no embedded PDF viewer. Audio playback (MP3, MP2, Ogg Opus/Vorbis) is included, and video is MPEG-1 only — an ISO standard whose patents have expired, so it costs no dependency and no licence, but also not a format the modern web serves.

It sends no telemetry and no update pings, and includes no AI-style web APIs.

Read the full Northstar documentation, or see the comparison of Nordstjernen and Northstar on the home page.

news

8 AUG 2026 · Northstar 1.0.7 released — printing, a rebuilt about:start sky and earth, CSS Scroll Snap, frames that talk to their parent, and quickjs-ng 0.16.1. Release notes »

8 AUG 2026 · Nordstjernen 1.0.23 released — printing with @page and print stylesheets, correct offsetLeft/offsetTop, CSS Scroll Snap, and quickjs-ng 0.16.1. Announcement » · Release notes »

31 JUL 2026 · Northstar 1.0.6 released — a rebuilt grid, an indexed CSS cascade, faster text through ns-pango, Web Audio that renders, and relative colour syntax. Announcement » · Release notes »

31 JUL 2026 · Nordstjernen 1.0.22 released — real-site layout fixes, faster text and regular expressions, and a much more capable Android app. Announcement » · Release notes »

28 JUL 2026 · Northstar 1.0.5 released — in-engine SVG, WebP/APNG, MPEG-1 video playback, and much better HTML, CSS and JavaScript compatibility. Announcement » · Release notes »

23 JUL 2026 · Northstar 1.0.4 released — a maintenance release. Release notes »

22 JUL 2026 · Northstar 1.0.3 released — Media Queries Level 4, CSSOM used values, and use-after-free fixes. Announcement » · Release notes »

download

Latest tagged release: Northstar 1.0.7 — released 8 August 2026. full release notes »

Windows northstar-1.0.7-windows-x86_64.zip — self-contained, no installer
Linux (portable) northstar-1.0.7-linux-x86_64.zip
Linux (AppImage) northstar-1.0.7-x86_64.AppImage
Debian / Ubuntu northstar_1.0.7_amd64.deb
macOS build from source with meson — see the build instructions
Source 1.0.7.tar.gz · 1.0.7.zip
All releases github.com/nordstjernen-web/northstar-browser/releases

The Windows build needs no installer and no MSYS2 — extract it anywhere and run northstar.exe. Windows marks anything downloaded from the internet as blocked, so before extracting, right-click the .zip, choose Properties, tick Unblock at the bottom of the General tab and press OK. Doing it on the archive first saves repeating it on northstar.exe, since the mark is copied to every file extracted from a blocked archive.

On macOS, build from source with meson — see the README or the build instructions.