First tagged cut of Wun, a Clojure-first server-driven UI framework
shipping web + iOS + Android clients off one wire.
What's in 0.1.0
Server-driven UI runtime
- Pedestal-based Clojure server with SSE patch broadcasting
- Capability negotiation with WebFrame fallback at the smallest containing subtree
- Optimistic morphs: same
:morphruns on server (authoritative) and client (predictive) - Per-connection screen stack with
:wun/navigate/:wun/pop/:wun/replace - Per-screen
:meta(page title, description, theme-color) — LiveView-style - Path configuration:
:present :modalrenders as a SwiftUI sheet / Compose Dialog - Hot-cache persistence (localStorage / UserDefaults / java.util.prefs) so reload doesn't blank
- Server-side intent dedup (LRU 1024) makes client retries safe
- Reconnect with exponential backoff on iOS / Android; replay-pending on SSE open
Native clients
- SwiftUI macOS / iOS demo with WKWebView + WunBridge for in-frame intent dispatch
- Compose Multiplatform Desktop demo with offline dimming + modal Dialog
- reagent web client with Hotwire-style
bodyoffline class
DX
wunCLI (babashka):doctor,status,dev,run,add component/screen/intent,new app/pack,upgrade,migrations,releasewun status— per-component coverage matrix across web/iOS/Android/server-htmlinstall.shone-liner installer- Auto-upgrade with 24h cache + 1h decline cooldown
- Migration scripts under
migrations/for breaking-change codemods
AI integration
CLAUDE.md/AGENTS.mdfor coding-agent orientationskills/— narrow how-to playbooks (add screen with form, wire an intent, etc.)mcp/server.mjs— Model Context Protocol server exposing 5 tools to Claude Desktop / Cursor / Cline / Continue
Docs
- Live at https://holy-coders.github.io/wun/
- Astro + Starlight, ~17 pages, pagefind search
Consume
;; deps.edn
{wun/wun-shared {:git/url "https://github.com/Holy-Coders/wun.git"
:git/tag "v0.1.0" :git/sha "0b1d6c96aadb39c84069a27da519aa1b7c32de16"
:deps/root "wun-shared"}}// Package.swift
.package(url: "https://github.com/Holy-Coders/wun.git", from: "0.1.0")// build.gradle.kts (with maven("https://jitpack.io") on resolvers)
implementation("com.github.Holy-Coders.wun:wun-android:v0.1.0")Heads-up
- Surface area is intentionally small (three macros + the wire format).
Expect refinement, not stability, before 1.0. - Master is the development branch — we cut releases when something's
worth pinning to.