Mini Browser
Welcome to Mini Browser, a compact web browser for the WHY2025 badge. It is designed to explore lightweight and server-rendered websites while staying small enough to run comfortably on the badge.
It supports links, bookmarks, Back/Forward history, simple GET and POST forms, bounded cookie support, PNG/JPEG/GIF images, inline image rendering, multiple display modes, 56,352 Unicode glyphs, word-aware wrapping, RTL/Bidi text, Arabic shaping, monochrome emoji, real bold text, Haags, HTTP/TLS page information and full-page screenshots.
The current version is Mini Browser 4.4. It adds find in page, a simplified view for long articles, text zoom, a focus ring for links and fields, pages saved for offline reading, sharing a page as a QR code, a page information screen with a lock for secure pages, and a built-in help page: press WHY+/ (the /? key) to see every key.
Version 4.3 brought loading progress with a stop key (Esc), clear error pages, an instant Back/Forward cache, compressed pages, cookies that stay after a restart, a 2 MB disk cache, downloads, and images that load after the text so you can start reading at once. Version 4.1 added the omnibox (one bar for addresses and searches, with suggestions), a history that survives a restart, and up to five tabs.
Wiby is a search engine focused on simple, lightweight websites and is a good match for Mini Browser.
Google can also be searched directly from Mini Browser. Search result pages may be more complex than Wiby because Google is designed for modern web browsers.
Links and form controls have numbers. Type a number and press Enter to activate it. Use Up and Down to scroll; hold an arrow for continuous scrolling. J and K also scroll one line at a time.
Press WHY+L and type a web address or just some words. An address such as wiby.me opens directly; words such as esp32 badge become a Google search. While you type, matching bookmarks and visited pages appear under the bar: use Down and Up to pick one and Enter to open it, or Esc to cancel.
WHY+T opens a new tab with your bookmarks and recent pages. WHY+Tab or WHY+1 to WHY+5 switch tabs, WHY+A shows all tabs and WHY+W closes one.
While a page loads, the bar shows its progress; press Esc to stop. If a page cannot be loaded, an error page tells you why; press R or Enter to try again. The text appears first and the images follow; the bar shows [img 2/5] while they arrive.
Press WHY+F to find a word on the page: matches light up while you type, n and Shift+N jump to the next and previous match, Esc turns them off. Tab and Shift+Tab move a ring over the links and fields, Enter opens the one with the ring. On a long article a chip offers a simplified view: press WHY+V to read just the article, without menus and sidebars. WHY+= and WHY+- make the text bigger or smaller, WHY+0 returns to 100%.
WHY+P saves the text of a page to read later without a network; WHY+D lists your saved pages and downloads. WHY+U shows a QR code of the page address, so you can open it on your phone. WHY+I shows whether the connection is secure, how long the page took and which cookies the site set. Forgot a key? Press WHY+/ for help.
Press WHY+S to capture the visible 716x716 Mini Browser view, or WHY+Z to capture the complete rendered page. Screenshots are transmitted over USB serial. The repository includes badge_screenshot.py, a standalone macOS/Linux receiver that validates the CRC/FEC-protected transfer and saves it as a PNG.
./badge_screenshot.py /dev/cu.wchusbserial10 ./badge_screenshot.py /dev/cu.wchusbserial10 --full-page
Physical WHY+S and WHY+Z screenshots do not require custom firmware. An optional customized WHY2025 firmware adds host-to-badge keyboard control, so a computer can operate Mini Browser remotely. It also includes scripts for automated browser tests and automatic screenshots.
Customized WHY2025 firmware and test tools
Mini Browser combines a built-in ASCII font with an external GNU Unifont-based MBCJ font containing 56,352 usable glyphs across 101 ranges. Text wrapping preserves complete words where possible, while CJK and overlong tokens safely fall back to glyph wrapping. Hebrew and Arabic are rendered right-to-left, with contextual Arabic shaping. HTML b and strong text are rendered as genuine bold text.
Unordered list markers deliberately remain ASCII * characters, so basic list rendering does not depend on the external Unicode font.
Mini Browser intentionally has no JavaScript engine, CSS layout engine or full HTML DOM. It focuses on ordinary server-rendered HTML, text content, links, PNG, JPEG and GIF images and simple GET and POST forms. Pages that need JavaScript often still read well in the simplified view (WHY+V).
Mini Browser 4.4 - WHY2025 BadgeVMS