|
|
f0d8db9b68
|
Add native SX desktop browser — renders s-expressions to pixels
A 5.9MB OCaml binary that renders SX pages directly using SDL2 + Cairo,
bypassing HTML/CSS/JS entirely. Can fetch live pages from sx.rose-ash.com
or render local .sx files.
Architecture (1,387 lines of new code):
sx_native_types.ml — render nodes, styles, layout boxes, color palette
sx_native_style.ml — ~40 Tailwind classes → native style records
sx_native_layout.ml — pure OCaml flexbox (measure + position)
sx_native_render.ml — SX value tree → native render nodes
sx_native_paint.ml — render nodes → Cairo draw commands
sx_native_fetch.ml — HTTP fetch via curl with SX-Request headers
sx_native_app.ml — SDL2 window, event loop, navigation, scrolling
Usage:
dune build # from hosts/native/
./sx_native_app.exe /sx/ # browse sx.rose-ash.com home
./sx_native_app.exe /sx/(applications.(native-browser))
./sx_native_app.exe demo/counter.sx # render local file
Features:
- Flexbox layout (row/column, gap, padding, alignment, grow)
- Tailwind color palette (stone, violet, white)
- Rounded corners, borders, shadows
- Text rendering with font size/weight
- Click navigation (links trigger refetch)
- Scroll with mouse wheel
- Window resize → re-layout
- URL bar showing current path
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-03-27 17:01:22 +00:00 |
|