What is Wayfarer?
Wayfarer is the latest web browser for MorphOS, based on a recent branch of WebKit.
Based on a 2021 WebKitGTK tree, supports most modern websites
WebCrypto for WhatsApp web interface support
Encryption of passwords via cryptostorage.library
Support for custom / self-signed server certificates
WebAudio and audio playback including HLS
Video playback including MediaSource support
Download and Bookmarks managers
Built-in AdBlock Plus files support
Written in ObjectiveC
Who is responsible for the project?
Wayfarer is written by Jacek Piszczek wayfarer [at] wayfarer icu.
Additional code by Harry Sintonen, including but not limited to updating our compiler suites, libnix, pthreads and Netstack which made the port possible.
AndrÃ© Siegel for his fantastic Wayfarer logo artwork and the website design
jPV for the Odyssey Bookmarks/Sessions importer
icons8.com for the toolbar icons
What tech does Wayfarer use?
Wayfarer is a port of a modern mid-2021 branch of Apple's WebKit. The WebKit integration and the browser application itself are written in Objective-C.
How can I support the project?
By donating to paypal.me/wayfarerbrowser
What are the hardware and software requirements of Wayfarer?
Wayfarer requires MorphOS 3.15 and at least 1GB of RAM. A 1.5GHz or faster CPU with Altivec highly recommended.
How to setup Wayfarer as default browser?
The configuration is very simple. Copypaste the following lines:
OPEN URL "%u"
OPEN URL "%u" NEWPAGE
How can I update the installation?
Simply overwrite the files with the ones from the archive. Your settings & caches are safe. Do copy ALL files included in the LHA when updating.
Wayfarer crashed. Should I send a bugreport?
Absolutely! The bugreports offer tremendous help when looking for bugs and it is thanks to them that Wayfarer is becoming more stable with each release.
Why can't I have two instances of Wayfarer running at the same time?
Wayfarer needs exclusive access to local storage, caches and SQL databases.
Why does Youtube only show one quality?
Youtube requires Media Source support, which will be added at a later date.
Why does Youtube use so much CPU?
Youtube does a lot of refreshing of its contents. Try switching to another tab, that ought to reduce the CPU load.
Why doesn't audio work on website X?
Website may either require specific spoofing (try Chrome), require Media Source support, require DASH support or for any many other reasons. When testing, see if it works on another device in Chrome, Safari or Firefox. Try tweaking the media-related settings. By default you will see a popup when a website tries to load an audio stream - that is a good indication that it is at least trying. You might want to tweak the invisible playback blocking and user gesture requirement on websites that load a stream but don't seem to start playing. If nothing works and if the stream isn't blocked outside of your country, you should post the link on morph.zone.
Why don't MOD players and other tracker websites work?
Most likely because tracker websites rely on Web Assembly, which is not and will not be supported.
Why doesn't video work ?
There are a lot of different types of streams (direct links to vides, MediaSource, HLS, etc) and some may not yet be supported. Support for more stream types will be added in future releases.
Make sure you copy the included cgxvideo.library to MOSSYS:Libs (NOT Libs:!)
Video stalls or is choppy
The stream is most likely too much for your CPU. Try reducing the quality, if the website allows it. Deblocking filter settings also have a big impact on video decoding performance, try setting it to Skip All Frames.
Why doesn't Spotify work?
Spotify requires DRM EME extensions like Widevine or Fairplay. While not technically impossible, the associated licensing / certification costs are prohibitive.
What to tweak/try if video doesn't work?
You can try the following steps. A page needs to be reloaded for those changes to be applied!
- Toggle Media Source support
- Toggle HLS support
- Toggle VP9 support
How do I play a Youtube Live stream?
Force Youtube into mobile mode by spoofing as Safari/iOS. Navigate to m.youtube.com (make sure the spoofing is set there too!). Enable Media Playback and HLS Streaming Support for m.youtube.com.
How do I play 720p/1080p streams on Youtube?
You need to use the desktop Youtube website and enable Media Playback and Media Source Playback.
Something does not work. What to do?
Please post on morph.zone.
Implemented Web Notifications and Download notifications via Magic Beacon. See the FAQ for more information
Added browser tab pinning (via tab context menu). Disables tab close button and hotkeys
Use Clipboard unit 1 for HTML paste operations like Odyssey does
Linked against OpenSSL 3.0
Fixed a WebAudio crash on bahn.de
Enabled Intersection Observer (fixes github.com)
Fixed an issue which caused some of the settings to display wrong state when opening settings for a given host directly from the menu
Implemented a warning (yellow shield icon) for mixed HTTPS/HTTP website content
Updated OpenSSL to 1.1.1l
Fixed a bug in Curl backend / networking that caused WebSockets to fail
Removed MorphOS 3.14 threading workarounds
Lowered WebAudio audio thread priority
Fixed Download Image As... to popup a requester
Disabled Download As window's menu
Fixed double-clicking on downloaded items in Downloads view where Download As was used
Implemented Download As...
WebAudio support for sample playback (while Google Translate text to speech works just fine, most online MOD players will be too slow)
Implemented a Media flags popup
Improved SSL certificate verification to avoid cases where a website wouldn't load due to cert not matching the hostname, but cert viewer window would assume the cert is fine and would not present buttons allowing to ignore/save cert
Worked around an issue that prevented further popups from showing up if the main window was resized while a popup was up
Reload button state wasn't properly refreshed when switching between tabs
Fixed a crash and status bar issues when browsing page history for cached pages
Certificate viewer may now be localized
Reimplemented fullscreen support to display contents on a separate screen
Implemented HLS stream A/V synchronization for streams that contain no timestamps
MediaSource playback improvements, including workarounds for broken websites
Implemented code to stall the video pipeline when audio stalls
Fixed a crash in ffmpeg h264 decoder
Fixed duration handling in the Media Source player
Disabled focus frame on some elements since it wasn't always redrawn correctly
Fixed a low-memory related crash in the PNG decoder
Tweaked ICU data checks to try and detect broken installations
Added a workaround for Wayfarer not shutting down (may still be up to 30s)
Fixed setting media playback variables after prefs were reset
ICU files will now be loaded from PROGDIR if missing in MOSSYS
Updated EasyList adblocker data
Fixed wheel scrolling in subframes
Fixed a race condition in HLS player
Fixed a widely reported crash in H264 decoding
Fixed a potential crash in bookmarks code
Rebased to latest stable WebKitGTK (2.32.1)
Implemented Dark Mode
Fixed a crash in HLS video playback
Worked around an issue preventing sites from loading, etc after quit confirmation requester got cancelled
Fixed webkit message log functionality that crashed if the resulting message contained formatting sequences
Changed rendering of elements like checkmarks that were missing on some websites
Out-of-RAM crashes no longer bring up the Send Bugreport messagebox
Fixed a crash on player exit
Fixed an issue where player settings weren't correctly applied when loading pages
Fixed an issue where wrong player settings were used in some code paths
Fixed a problem with quitting Wayfarer
Mitigated a problem with TLS that would often cause crashes when Wayfarer was used alongside Iris
Addressed some potential ffmpeg abort() calls as seen in bugreported crashes
Fixed to trim long titles in Tabs menu
Implemented video playback statistics (Youtube's Stats for Nerds will now show decoded frame counts, etc)
Fixes in HLS Live playback on YT
Reduced frame drops when playing video
Fixed to correctly display rotated photos
Fixed to update page's url when traversing history
Updated ffmpeg to 4.4
Improved player's handling of bogus stream data
Partially mitigated a player memory leak
Media playback settings are now per-host
Removed the media playback popup requester mode
Various improvements in the player pipeline, including improved HLS
Disables screensaver while playing video
Fixed a crash when shutting down the video decoder
Enabled Media playback on PowerPC CPUs without Altivec
Improved audio seeking
Fixed switching between playing multiple streams
A lot of MediaSource player improvements, fixes in quality change, seeking, re-play
Fixed playback of HLS videos
Fixed a regression in cURL code
HLS support can now be disabled in settings
Fixed a regression in cURL code
Fixed a crash in media playback initialization
Minor player improvements
Disabled media playback support for CPUs other than the G4 and G5 family
Overlay based video playback, requires updated cgxvideo.library (included in the archive)
Experimental MediaSource support
Added a Media settings tab
Improved HLS audio playback
Implemented basic fullscreen (window) mode
Implement redraw throttling to prevent pages from taking up all the CPU time for redraws
Updated to the latest FFMpeg4
Updated to latest OpenSSL and cURL
Fixed Wayfarer being stuck on quit forever
Fixed issues with invalid download sizes for large files or with unknown size
Fixed Tab->Move to New Window...
Fixed an bug where chunked file uploads would fail
Improved resource cleanup on page hibernation
Optimized Curl cache warm-up to be several magnitudes faster
Don't popup download requesters for webpage components that have no valid mime type and aren't the main url itself
Updated EasyList filter data
Optimized not to attempt loading media at all if the page settings are set to block it
Reworked localizable string formats to use @key@ instead of %d, etc to avoid crashes with incorrect translations
Improved handling of custom/unsupported protocols
Fixed Offline Storage settings UI
Fixed Recently closed tabs menu
Fixed a networking crash
Fixed a memtrash in the loader code when closing Wayfarer on its own screen
Fixed a potential crash in AHI code
Implemented an audio player, including audio in video files
Codec coverage basically the same as in Odyssey, with Opus and MPEG-TS support added
Implemented HLS chunk-based media playback for many live radio streams
Configurable popup on media load, with download option
Fixed a case where mouse pointer would no longer change above links after scrolling with mmb
Fixed not to mangle the file path after resuming a download with name prefix set
Fixed to disable menus in several popup windows
Fixed to ensure the Sessions folder is always present
Worked around a race condition in MUI where it would crash trying to show a help bubble for a tab being closed at the same time
Added jpeg2k support via OpenJPEG
Reports browser locale based on system locales
Added a Translation service support w/ settings
Added session quicksave hotkeys
Improved wheel scrolling and mouse cursor code
Adjusted page/wheel scrolling deltas to be in-line with WebCore's suggested values
Scrolling page content is now possible with mmb pressed
Esc key deactivates the WebKit container, instead of being swallowed
Improved the cURL thread loop
Various UI improvements in the Printing Mode
Improved shutdown times
Linked against latest OpenSSL 1.1.1i and cURL 7.74.0
Fixed RMB to not select word under cursor if there already is a selection in editable components
Fixed pasting text into editors handling paste via JS/DOM Events
Fixed a crash in FavIcon loader
Fixed a crash when logging into AppleID
Fixed a crash when closing a window with tabs that are pending website load
Fixed early startup issues where OpenURL could send OPEN commands before Wayfarer fully initializes
Fixed a race condition in curl cache handling
Fixed a use-after-free when closing a window or loading a session
Worked around a bug causing some localized strings to be empty
Download name scheme is stored when a download begins, so subsequent settings changes won't affect it
Page reload actually skips curl caches now
Command keys are no longer eaten by webkit
Loader now catches all ObjC terminal errors
Implemented an optional online version check
Added a Safari/iPad spoofing option
Tweaked to save settings periodically after edits
Added Local Storage and Application Cache settings
Enabled Application Cache
Worked around servers that compress file downloads
Fixed a crash when opening host settings from menu
Fully WSIWYG printing system
Spell checking support
Networking thread optimized to use less CPU
Built with optimized OpenSSL for faster HTTPS connections
Added tons of help bubbles across the app
Added an option to log console messages to ramdebug
Added quit requester options to the Settings tab
Added a setting to popup downloads tab on new downloads
Tries to use current tab for Downloads/Settings/Bookmarks if empty
Added an Error column to the download list
Added a context menu to the download list (copy path/url)
Download URL updates on redirects
'Download' Context menu will now use OpenURL for ftp/mailto links
Fixed resuming of downloads after error
Fixed to handle multiselection in the download list
Improved the Stop/Reload button; Reload forces a full reload (disregarding disk caches)
Fixed ctrl key handling in the text editor
Fixed a nasty 5 random-address bytes memtrash at the end of JS Promise handling that was the main source of instability on pages like PayPal, ebay, etc
Fixed a use-after-free in WTF's file system support
Fixed a crash when editing quicklink submenus
Prevents re-opening screen when loading a session
Disabled a bunch of memtrashing code paths in audio processing support
Fixed an out-of-mem crash in WebCore's JPEG decoder
Fixed a crash when adding quicklinks
Fixed size overflow on >4GB downloads
Fixed a potential browser crash after a hibernation
Wayfarer now starts via a loader app
Added an early loading splash window, shutdown splash window (via loader)
Crashes in Wayfarer are caught by the loader which cleans up the windows and as many resources as possible, usually allowing a restart of the application
Implemented a way to send bugreports directly after a crash, including debug information and the most recently visited URLs
Added Eruda web inspector integration
It's now possible to select a session to load on application start or automatically re-store the previous state
Sessions store the active tab
Enabled the Intersection Observer in WebCore
Reduced the number of SQL file writes
Separate interpolation setting for image links
Quicklink buttons respect favicon settings, update on favicon changes
Added a file requester to the downloads path in Settings
Added quit confirmation requester settings
Fixed navigating to wayfarer:// links without explicitly doing it from the menu
Fixed CPU clock detection code
Fixed a double-start issue where the 2nd instance would not quit
Fixed a potential crash in favicon code
Fixed right shift key handling in some hotkeys
Fixed tab button backgrounds
Fixed ghost effects after closing tabs on some MUI configurations
Fixed an issue where adding a link to bookmarks via menu would try to insert it to a wrong tree node in a Bookmarks tab
Rolled back some compilation setting tweaks since they were causing issues on some G4 cpus
Minor performance improvements, mostly on G5
Fixed lists in settings displaying no text, sometimes crashing
Fixed url string background offsets
Activate an exiting tab instead of adding a new one for downloads/bookmarks/settings
Fixed tab buttons becoming invisible or corrupt on some configs
Fixed an issue where adding a link to quick links via menu would display them in a wrong location in the Bookmarks tab
Fixed quicklink buttons to respect releasing mouse of of button bounds
Implemented Quick Links
Enabled support for WebP images
Fixed blob: support
Fixed file name encoding and cookie issues in downloads
Fixed Bookmarks menus to show more depth levels
Fixed a crash on exit caused by the password autofill manager
Fixed a crash on exit in WebCore's fileapi
Fixed Copy image URL context menu function
Implemented Search Engines settings UI
Implemented a 'Do not ask to save passwords' setting
Space+Shift does reverse scroll now
Updated to latest OpenSSL and nghttp2
Fixed handling of IDN/Unicode chars typed into the URL bar
Fixed loading of files from the Curl cache, which in some cases resulted in images failing to decode (or decode as text)
Fixed the default CSS file load path (caused default radios and checkmarks to be missing on some sites)
Fixed an issue with sticky border scrollers
Fixed not to leak the volume name when uploading files straight from the volume root path
Implemented workarounds for OpenURL callers that don't pass correctly escaped URIs (like YAM)
Updated the OWB importer
Initial public release for MorphOS 3.14