Repository navigation
Sweef 0.1.0-alpha (alpha)
Pre-release
Pre-release
Sweef 0.1.0-alpha (ALPHA)
This is an alpha release. Sweef is a young independent browser engine. Expect missing features,
sites that do not render correctly, and rough edges. Sweef offers to open such pages in your system
browser. Please do not rely on it for banking or other sensitive browsing yet.
Commit: 5af96f74b4f6
Install
| Platform | File | Notes |
|---|---|---|
| Linux (Debian/Ubuntu) | sweef_0.1.0-alpha_linux_<arch>.deb |
sudo apt install ./sweef_...deb |
| Linux (Fedora/openSUSE) | sweef_0.1.0-alpha_linux_<arch>.rpm |
sudo dnf install ./sweef_...rpm |
| Linux (any) | sweef_0.1.0-alpha_linux_<arch>.AppImage |
chmod +x and run |
| Linux (any) | sweef_0.1.0-alpha_linux_<arch>.tar.gz, or install.sh |
user-level install, no root |
| macOS 12+ | sweef_0.1.0-alpha_darwin_universal.dmg |
unsigned alpha: Gatekeeper will block it, see docs/install.md |
| Windows 10/11 | sweef_0.1.0-alpha_windows_<arch>_setup.exe or .zip |
unsigned alpha: SmartScreen will warn (see docs/install.md) |
<arch> is amd64 or arm64. Full instructions, uninstall steps and the unsigned-binary
workarounds are in docs/install.md.
Verify your download
sha256sum -c SHA256SUMS --ignore-missing
gh attestation verify <file> --repo sweefbrowser/sweef # build provenance (SLSA)Known alpha limitations
- Installers are unsigned: macOS Gatekeeper and Windows SmartScreen will show warnings, and Linux packages are not GPG-signed.
- No automatic updates yet: download the new version to update.
- See the README for rendering-fidelity numbers and known gaps.
Changes
- ci(release): macOS packaging may fail without blocking the release (5af96f7)
- ci(release): do not block the release on the macOS ad-hoc signature check (c458529)
- ci(release): run the same platform-split tests as ci.yml (ff03500)
- fix(media): MediaRecorder start/pause/resume events never trail data or stop (cd3633c)
- chore(release): v0.1.0-alpha (373cc2a)
- feat(intl): match Node 22 for dates, numbers, calendars and collation (0328fa5)
- perf(size): compress embedded data and trim the release binary by 4 MiB (abc8662)
- feat(media): MediaRecorder and BlobEvent (WebM VP8/Opus, Ogg Opus) (5015e32)
- fix(crypto): generate RSA keys of at least 2048 bits (018e275)
- docs(readme): binary size, Intl, voice processing, Fullscreen/Media Session/Clipboard and the MediaRecorder gap (e98109a)
- feat(web): Intl on CLDR data, voice processing, Fullscreen and Media Session, Async Clipboard, native WebSocket (2f6e522)
- test(app): wait for the first paint before asserting a page pixel (9c2f335)
- test(net): give non-Linux runners a 300 ms bound for the large-page snapshot cost (e552873)
- docs(readme): bring the claims up to date with the web platform work (fe4f700)
- fix(media): WebCodecs gets I420 planes from H.264 and VP9 again (7171b55)
- perf(media): real-time 1080p H.264 with frame threads, faster kernels and a fast video blit (e9c4bae)
- fix: range check at the Atomics.wait conversion, script-URL helper for window targets, regexp loopback guard in the fidelity tool (0fd53ba)
- fix: bound frame sizes in the CDM protocol, wrap Atomics.wait values arithmetically, loopback-only fetches in the fidelity tool (7a1f74c)
- test(cdm): keep Widevine discovery tests away from the machine's own Chrome (1c28a80)
- fix(engine): one host-call dispatcher per VM instead of one callback per host function (32ee325)
- frames/popups: same-origin location reads, BroadcastChannel and storage events across windows, window.close only for script-opened windows, docs and changelog (dcbd64d)
- EME Clear Key with CENC decryption in MSE; docs for threads, WebCodecs and EME (3997891)
- feat(media): CDM backends for EME (Clear Key, Widevine host, PlayReady and FairPlay stubs) (92d172a)
- fix(ui): strip markup and control characters from internal-page query parameters (d4b5fbf)
- feat(webcodecs): VideoDecoder/Encoder, AudioDecoder/Encoder, VideoFrame, AudioData, ImageDecoder (ae8b773)
- app: frames and popups in the desktop browser; frame policy (X-Frame-Options, frame-ancestors, schemes, agent read filter) (705ed19)
- ci(codeql): show the source locations of each finding (08013c0)
- engine: render and drive <iframe> documents, add window.open, popups and cross-window messaging (5ef94b7)
- fix(ui): only numbers and known icon names reach SVG markup (86ed742)
- style: gofmt wasm.go (98ff25a)
- feat(wasm): threads - shared memories, atomics, and posting Modules and Memories to workers (1d463cb)
- feat(js): cross-origin isolation, SharedArrayBuffer and Atomics across VMs (2a44929)
- perf(canvas): move getImageData/putImageData pixels as ArrayBuffers (a1fa974)
- fix(ui): call only settings sections from the fixed list; append strings as text (f94ade2)
- fix(ui): guard state merges against prototype keys, append only real nodes, look up settings sections safely (aac8593)
- fix(render): layout self-check compares geometry, not the computed-style pointer (a612039)
- fix: escape selector strings, keep download names inside the downloads dir, block vbscript and top-level data: link navigation (d64620d)
- fix: RPC result shapes and single first load, getComputedStyle from the cascade, variable font weight, flex abspos alignment, quirks body fill, compatMode (84e06bc)
- ci(codeql): list findings in the job log (a9b7b00)
- ci(security): accept the Go project's patent grant in dependency review (425c575)
- test: make pulse path and PLI tests portable to Windows (518be1b)
- fix(engine,render): real img load/error events and natural size, max-width:100% images in shrink-to-fit boxes (77348e1)
- fix(audio): pure-Go PulseAudio playback on Linux so the binary stays statically linked (85bef87)
- fix(ci): Windows: case-insensitive loopback interface filter, bounded ICE gathering in tests, shut test stores down before TempDir cleanup (e51e79f)
- fix(style): keep case of grid area and line names (f54d8fe)
- test(media): allow for the frames a looping clip loses at each pass (c0ddfc0)
- fix(sync): arm persisted registrations when their origin loads, time waits from attempt start, race-free test log (7b81413)
- docs(media): audio output and media streaming; inline event handler attributes; portable test timers (ed8fd18)
- perf(media): resynchronise a late decoder on the newest due key frame (dd4f6cc)
- fix(js): send request headers and binary bodies, XML documents, SVG and EME interfaces, special-scheme relative URLs (9410674)
- fix(security): compare funcref handle as uint64 (3105136)
- fix(security): funcref values never reach JavaScript as raw pointers (handle table) (44eac00)
- fix(security): guard IDB key-path injection inside the loop, bound function refs; make the open/close leak test settle (f52147a)
- perf(media): decode ahead of the clock, skip late non-reference frames, parallel H.264 deblocking (0069dec)
- fix(security): CodeQL findings: IDB key-path prototype pollution guard, RSA key at least 2048 bits, bounded integer conversions in wasm, vbscript: iframe scheme (0d3ecaa)
- feat(js): CompressionStream, Streams, microtask checkpoint between scripts; fix mute fade-in and pause/resume (47be1ef)
- fix(sw): list clients in creation order so WindowClient.navigate/focus hit the right tab (95bf54d)
- docs(storage): state partitioning policy table, frames, workers, changelog (a29bd34)
- feat(push): chrome prompt, site info entry, settings page, sweef pushd, docs and previews (1b8fb7b)
- feat(notify): permission prompt, site settings, Do not disturb and window hooks in the app (30d87c1)