PPC MacSurf ~ A NetSurf Port With Native TLS 1.3

Relating to a PowerPC app

ptricky

New Tinkerer
Apr 3, 2026
3
6
3
Minnesota
macsurf.org
Hey everyone,

I've been chipping away at a project for a while now, and with the recent release of version 1.4, I figured it was finally time to share it here and get some wider testing.

It’s called MacSurf. It’s a native Mac OS 9 browser built from a fork of NetSurf, compiled in CodeWarrior 8. My main goal with this was to completely avoid proxy servers or remote-rendering tricks as I wanted something that actually runs on the metal and talks directly to the modern web. I’ve been doing most of my testing on a g3 imac.

Getting to 1.4 took a lot of plumbing, but the core foundation is there now. It has native TLS 1.2/1.3 baked in using a custom BearSSL setup, so modern HTTPS works right out of the box. It handles actual CSS3 and ES5 JavaScript natively (via Duktape), and I wired it up to the QuickTime Graphics Importer so PNGs and GIFs have real alpha transparency.

That said, it’s definitely still an alpha and the modern web is heavy. Lighter pages and retro sites render beautifully, but throwing a massive modern DOM at a 25-year-old machine is a great way to blow through an application memory partition. The JS engine works, but keeping it from completely choking a G3 on heavy React sites is the next big mountain I'm trying to climb. I have been spending most of my time targeting simpler sites like 68kmla to tackle css and javascript issue, it's very much a work in progress.

I've got compiled builds and all the source code up on GitHub. If anyone feels like grabbing a release and taking it for a spin, I'd love to hear how it handles on your specific hardware. Because I know it's the first thing people discuss, I do use claude and gemini to help me build the code, I couldn't do it on my own without it. I completely understand that is a deal breaker for a lot of people so I want to mention that up front. With that said all the code is there, including the md files, if you want to see what is going on with the app.
 

Attachments

  • MacSurf.sit
    852 KB · Views: 28

ptricky

New Tinkerer
Apr 3, 2026
3
6
3
Minnesota
macsurf.org
MacSurf 2.0 has been released!

A whole family of cross-signed HTTPS sites now validate on the Mac, including macintoshgarden.org , which loads here over a secure connection. And image-heavy forum pages that used to take a minute or two now come up in a few seconds thanks to viewport-gated lazy image loading. The address bar gained type-ahead autocomplete with a suggestions dropdown, and there are now real History and Bookmark manager windows.

http://macsurf.org/builds/MacSurf2.sit
https://macsurf.org/builds/MacSurf2.sit
https://github.com/mplsllc/macsurf/releases

What MacSurf can as of today:
  • Loads more of the HTTPS web. The TLS stack now reorders out-of-order
    certificate chains, so cross-signed sites (macintoshgarden.org among them) open securely instead
    of falling back to plain http.
  • Fast on heavy pages. Off-screen images load only as you scroll to them,
    cutting big forum threads from minutes down to seconds.
  • Type-ahead address bar. Autocomplete from your history as you type, with
    a dropdown listing the other matches.
  • History and Bookmark managers. A persistent, clearable, day-grouped
    history (Cmd-H) and a folder-based bookmark manager with drag-and-drop (Cmd-B).
  • Modern JavaScript on-device (macQJS). Real ES2023 via a QuickJS port,
    no transpiling, no offload.
  • Native HTTPS. A hand-written TLS 1.3 stack (macTLS) with the full Mozilla
    CA bundle, talking straight to live sites over Open Transport.
  • Real text input. A blinking cursor, click-drag selection, Cut/Copy/Paste,
    and Tab between form fields.
  • Logins stick. Sign in to a forum or account and stay signed in, cookies
    and sessions persist.
  • Modern CSS. CSS Grid, flexbox, custom properties (var()),
    gradients, shadows, transforms, and downloadable web-font icon glyphs.
  • A refreshed interface. A new toolbar, animated loading Puffin icon and
    progress bar, a pill-shaped address bar, and a downloads manager.
home.png
 

Attachments

  • MacSurf2b.sit
    1.2 MB · Views: 17
  • Like
Reactions: Byte Knight

ptricky

New Tinkerer
Apr 3, 2026
3
6
3
Minnesota
macsurf.org

Version 2.0.5 “Hackaday”​

A polish release over 2.0 — the batch of fixes and CSS work that makes modern pages
actually look right. The headline is in the name: point MacSurf at hackaday.com
and the front page renders on the G3 at real desktop width, with the correct fonts and the article
cards laid out. The fix underneath it was browser-wide — every author font size had been drawing
about 25% too small, and CSS em/rem and @media width queries
were all measuring against the wrong number, which is why so many sites came up cramped into a narrow
column. MacSurf now measures type in real device pixels like every other browser. On top of that: a
large jump in modern CSS (justified text, soft hyphens, logical properties, box-alignment shorthands,
grid auto-sizing, and more — several never done on a classic Mac before), tracker/ad-network
blocking, and a much more capable on-device JavaScript engine. Drop it in over 2.0.

A large jump in CSS. MacSurf now handles a cluster of modern layout and text features it didn't before — several that no other classic-Mac browser has done, and a few the upstream NetSurf engine doesn't ship either:

  • Justified text that spreads words to both margins
  • Soft hyphens — long words break with a "-" at the line end
  • tab-size, so code and pre-formatted text line up
  • Flexbox cross-axis alignment, and the box-alignment shorthands (place-items, place-content, place-self)
  • CSS Logical Properties (margin-inline, padding-block, inset-*)
  • Grid columns that auto-size to their content
  • Smaller touches: caret-color, text-decoration color/style/thickness, text-align-last, and a real background: none reset
A more capable JavaScript engine. Under the Hackaday headline is a long run of engine work: real fetch() and XMLHttpRequest backed by the network, Promise chains that resolve past their first step, document.cookie wired to the real cookie jar, real DOM traversal and querySelector, and the document load lifecycle (readyState, DOMContentLoaded, load) behaving the way pages expect.

Closed issues​

Closes #62, #201, #212, #227, #230, #232, #234, #235, #239, #244, #247, #249, #251, #252, #253, #268, #270, #271, #272, #273, #275, #276, #277, #278, #282, #283, #284, #285, #286, #287, #288, #289, #291, #292, #293, #294, #295, #296, #297, #298, #300, #301, #302, #304.

Partial (the headline sub-feature shipped, remainder still tracked): #255 (background-clip box values; background-clip:text deferred), #256 (image-rendering; box-decoration-break deferred), #279 (justify-items; Grid Round 2 placement/minmax open), #280 (<img src=*.svg>; CSS background:url(*.svg) open).
 

Attachments

  • MacSurf205.sit
    1.2 MB · Views: 2
  • 68kmla.png
    68kmla.png
    65.9 KB · Views: 2
  • hackernews.png
    hackernews.png
    42.9 KB · Views: 3
  • hackaday-imac.jpg
    hackaday-imac.jpg
    1.6 MB · Views: 3
  • hackaday-new.png
    hackaday-new.png
    120.9 KB · Views: 3
  • macgarden.png
    macgarden.png
    104.1 KB · Views: 3
  • Wow
Reactions: Arbystpossum