Commit graph

17 commits

Author SHA1 Message Date
Till Wegmueller
f0c367c829 Add Phase 1 remote display pipeline design spec 2026-04-07 15:09:03 +02:00
Till Wegmueller
258435cb04 Add Phase 0.5 VM testing implementation plan 2026-04-04 20:57:51 +02:00
Till Wegmueller
e5ad9349bb Add Phase 0.5 VM testing setup design spec 2026-04-04 20:50:53 +02:00
Till Wegmueller
e55df6306d Add Phase 0 foundation implementation plan
Detailed 9-task plan covering workspace scaffold, Smithay compositor,
Wayland protocol handlers, Winit backend, rendering, input handling,
and framebuffer capture with ExportMem.
2026-04-04 18:08:32 +02:00
Till Wegmueller
f3f584e8a7
Add article: WayRay as a modern successor to Sun Ray
Long-form article for the project website covering SunRay history,
why it mattered, what went wrong, and how WayRay modernizes every
aspect: QUIC transport, content-adaptive encoding, smartphone
proximity tokens, pluggable window management, federation, protocol
gateways, and illumos as primary platform.
2026-03-29 17:08:48 +02:00
Till Wegmueller
f702cbf4e7
Add ADR-016: GPU pipeline future-proofing for cloud gaming
Ensure today's CPU-first design doesn't block a future zero-copy
GPU encoding path (DMA-BUF → VAAPI/NVENC, sub-5ms encode latency).

Key design constraints:
- FrameSource enum: Cpu and DmaBuf variants (build Cpu now, DmaBuf later)
- FrameEncoder trait: accepts both, encoder picks preferred source
- Pipelined render→encode→send (no synchronous blocking)
- Adaptive frame cadence: OnDamage (desktop) vs Fixed (gaming)
- Damage tracking forks: pixel diff for CPU, Wayland hints for GPU

No GPU code built now -- just trait interfaces that preserve the path.
2026-03-29 13:29:32 +02:00
Till Wegmueller
643c4f042d
Rename binaries to illumos-style short names
Follow illumos CLI naming conventions (zoneadm, svcadm, dladm):

  wayray-server           → wrsrvd
  wayray-client           → wrclient
  wayray-ctl              → wradm
  wayray-greeter          → wrlogin
  wayray-session-launcher → wrsessd
  wayray-gateway          → wrgw
  wayray-wm-floating      → wr-wm-floating
  wayray-wm-tiling        → wr-wm-tiling

Updated across all 23 documentation files, ADRs, book pages,
roadmap, and CLAUDE.md. Added binary name table to CLAUDE.md.
2026-03-29 00:34:19 +01:00
Till Wegmueller
c32ed5531d
Add ADR-015: Virtual desktops, RDP integration, and protocol gateways
Three-tier RDP integration:
- Tier 1: FreeRDP as Wayland app (works today)
- Tier 2: FreeRDP RAIL mode (seamless Windows apps in WM)
- Tier 3: Protocol gateway (VPN + RDP + seamless, managed service)

Protocol gateway handles full lifecycle: VPN tunnel establishment,
RDP session start, RAIL window translation to foreign surfaces.
Each gateway in isolated network namespace/zone. Connection profiles
per customer with security policies (clipboard, file transfer, etc.)

Protocol-agnostic adapter trait supports RDP, VNC, SPICE, SSH X11,
and WayRay federation as pluggable remote protocol sources.

Includes "maintenance engineer's day" scenario showing multi-customer
workflow with virtual desktops, gateway connections persisting across
session suspend/resume, and cross-site mobility.
2026-03-29 00:31:00 +01:00
Till Wegmueller
204c200bc9
Add direct remote access scenario and token-based server routing
When at a friend's or customer's site, the client connects directly
to the user's own server over the internet -- no local server involved,
no federation needed. The thin client is just a screen + network.

- ADR-014: Add scenarios 4b/4c (friend's house, BYOD on-site),
  server selection UI, three-category taxonomy (direct remote,
  federation, sandboxing)
- ADR-013: BLE beacon payload now includes server address so the
  phone tells any terminal where to find the user's desktop
2026-03-29 00:08:34 +01:00
Till Wegmueller
8653c01518
Add ADR-014: Federation and foreign surface integration
Unified mechanism for two related problems:
- Federation: windows from remote WayRay servers appear in local
  desktop (B2B invites, cross-org app sharing, visiting consultants)
- Sandboxing: windows from isolated local environments (illumos zones,
  containers) appear alongside trusted local windows

Three display modes:
- Desktop-in-desktop (full remote session in a window)
- Merged windows (seamless per-window integration with local WM)
- App embedding (future: subsurface portal)

Trust-level visual indicators (Local/Trusted/Sandboxed/Untrusted),
input isolation per trust level, B2B invite flow, server-to-server
mutual TLS federation, and OIDC-based dynamic trust chains.

Same ForeignWindow protocol for both remote (QUIC) and local (Unix
socket) sources. illumos zones as natural sandboxing primitive.
2026-03-29 00:03:51 +01:00
Till Wegmueller
141f8220d7
Update ADR-013: NFC charging pad as smart card reader
Add wireless charging pad mode -- phone on Qi pad acts as smart card
in a reader slot. NFC provides crisp insert/remove semantics without
RSSI ambiguity. Combined NFC+BLE mode for heartbeat during brief
NFC interrupts. Configurable per-deployment: centimeter range (pad)
vs meter range (pocket) vs combined.
2026-03-28 23:28:55 +01:00
Till Wegmueller
7db68df21f
Add ADR-013: Smartphone as BLE proximity token
Phone acts as wireless smart card -- walk up to terminal, session
appears; walk away, session suspends. No insertion, works from pocket.

- BLE beacon with encrypted rotating session token
- RSSI-based proximity detection with configurable thresholds
- Anti-flapping timers: T_attach (2s) and T_detach (10s)
- Security: HMAC timestamps, token rotation, optional NFC tap
- Companion app (Android/iOS): one-time OIDC setup, background BLE
- Implements same TokenProvider trait as smart cards (ADR-004)
- NFC as explicit complement, WiFi/mDNS as software fallback
2026-03-28 23:25:54 +01:00
Till Wegmueller
a04c04a22c
Add ADR-012: Cloud authentication via OAuth/OIDC greeter
The greeter bridges cloud identity to local user context:
- Device Authorization Grant (RFC 8628) as recommended flow
  for thin clients (QR code, no browser needed on server)
- Authorization Code with PKCE as alternative
- Claims-to-user mapping (IdP sub/email/groups -> local uid/gids)
- Auto-provisioning on first login (useradd, ZFS home dataset)
- Pluggable auth architecture (local, OIDC, smart card, Kerberos)
- Ephemeral pre-auth session for greeter display
- Session launcher interface unchanged regardless of auth method
2026-03-28 23:17:54 +01:00
Till Wegmueller
f005dccd67
Update ADR-011: Add bare-metal framebuffer backend (Tier 0)
illumos has /dev/fb0 via the gfxp_bitmap driver on UEFI GOP systems,
exposing the classic SunOS fbio(4I) interface. Userspace can mmap the
framebuffer and write pixels directly -- proven by xf86-video-illumosfb.

New four-tier architecture:
- Tier 0: Bare-metal /dev/fb0 (illumos fbio + Linux fbdev). No X11.
- Tier 1: X11 SHM (portable fallback, also dev mode)
- Tier 2: Loopback shared memory (co-located optimization)
- Tier 3: DRM/KMS (Linux, rare illumos)

Includes implementation sketch with SIMD non-temporal stores for
write-combining memory (SSE2/AVX2/AVX-512 runtime selection).
2026-03-28 22:43:40 +01:00
Till Wegmueller
4e31f172fb
Add ADR-011: Local display mode for illumos workstations
WayRay must work as a local desktop compositor, not just remote.
Three-tier approach:

- Tier 1: Custom X11 SHM backend (PixmanRenderer + XShmPutImage).
  Works on any illumos system with X11, even VESA-only GPUs.
- Tier 2: Loopback optimization for co-located server+client,
  shared memory buffer ring skipping encode/decode entirely.
- Tier 3: DRM/KMS backend for Linux or accelerated illumos GPUs.

Same compositor core, different output backend. Validated by
cocoa-way (Smithay on macOS) using the same headless+present pattern.
2026-03-28 21:47:55 +01:00
Till Wegmueller
a373ea1c41
Add greeter/session-launch architecture, clarify scope boundary
WayRay is a compositor, not a DE or login system. GNOME/KDE cannot
run on WayRay (they ARE compositors). The desktop is composed from
independent Wayland clients (pluggable WM + panel + launcher + apps).

- ADR-010: Greeter as Wayland client, external session launcher
  handles PAM/user env (like greetd for Sway)
- Clarify scope: WayRay owns compositor session + token binding,
  not user auth, home dirs, or environment setup
- Update roadmap with greeter phase and session.toml config
- Update architecture overview with scope boundary section
2026-03-28 21:35:18 +01:00
Till Wegmueller
167c6c17c6
Add project documentation, architecture decisions, and usage book
Comprehensive documentation for WayRay, a SunRay-like thin client
Wayland compositor targeting illumos and Linux:

- CLAUDE.md: project context and conventions
- docs/ai/plans: 6-phase implementation roadmap
- docs/ai/adr: 9 architecture decision records (Smithay, QUIC,
  frame encoding, session management, rendering, audio, project
  structure, illumos support, pluggable window management)
- docs/architecture: system architecture overview with diagrams
- docs/protocols: WayRay wire protocol specification
- book/: mdbook user guide (introduction, concepts, server/client
  guides, admin, development)
- RESEARCH.md: deep research on remote display protocols
2026-03-28 20:47:16 +01:00