Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkyOS

Real-time aircraft sky preview for desktop — three view modes for monitor or ceiling projection (Phase 1).

View modes

Mode Renderer Description
Dome Three.js (@skyos/renderer) 3D sky dome with GLB aircraft models, trails, horizon
Ceiling Skylight Canvas (@skyos/skylight) 2D ceiling projection (map or sky dome), stars, moon, ISS, runway overlay
Map MapLibre (apps/desktop) Debug map with aircraft positions

Ceiling mode is ported from skylight-main — Canvas 2D, altitude-colored glyphs, comet trails, and optional sky layer (stars, sun, moon, planets, satellites). Use the toolbar to switch 穹顶 / 平面 projection, rotate bearing, and mirror X/Y for projector calibration.

Stack

  • Desktop: Tauri v2
  • UI: React, TypeScript, Tailwind CSS v4, shadcn/ui (base-nova), Tabler icons
  • Dome: Three.js (@react-three/fiber)
  • Ceiling: Canvas 2D (@skyos/skylight) — astronomy-engine, satellite.js
  • Backend: Rust (sky-core, aircraft-provider, airport-data)
  • Stream: WebSocket v2 ws://127.0.0.1:9731/sky (typed snapshot / config / tle)
  • Config: @skyos/config (SkyConfig, merge, persistence at %APPDATA%/skyos/config.json)
  • TLE: Tauri get_tle command (Celestrak cache for ISS / visual satellites)
  • Remote: optional LAN control SPA at /control/ (see below)

Develop

Requires Rust (Cargo on PATH), pnpm, and WebView2 (Windows).

pnpm install
pnpm dev

Runs tauri dev for the desktop app with hot reload.

If you see program not found: cargo, install Rust via rustup and open a new terminal.

Frontend-only (no aircraft data):

cd apps/desktop
pnpm dev

UI components

shadcn/ui lives in apps/desktop/src/components/ui/. Add more with:

cd apps/desktop
pnpm dlx shadcn@latest add <component>

LAN remote control

Two independent toggles in Data Sources → 内网遥控:

Setting Effect
启用遥控页 Binds HTTP/WS to 0.0.0.0, serves apps/remote at /control/, generates remoteAccessToken
配置双向同步 Allows patchConfig from control clients; when off, phone UI is read-only
  1. Build the remote SPA: pnpm --filter @skyos/remote build
  2. In the desktop app, enable 启用遥控页 and copy the token
  3. On your phone (same Wi‑Fi), open the LAN URL shown in the status bar (e.g. http://192.168.x.x:9731/control/)
  4. Paste the token — full live-tune settings (no ceiling preview)

Allow inbound TCP on port 9731 in Windows Firewall if the phone cannot connect.

Project layout

apps/desktop/          Tauri shell + React UI
apps/remote/           Mobile control SPA (mounted at /control/)
packages/config/       SkyConfig, merge, WS message types
packages/types/        Shared TypeScript types
packages/ui/           UI primitives
packages/renderer/     Dome scene + SkylightCeilingView wrapper
packages/skylight/     Skylight ceiling renderer (geo, celestial, Canvas)
packages/coordinates/  Lat/lon → ENU → projection math
crates/                Rust: sky-core, aircraft-provider, airport-data

See docs/architecture.md.

Data

Live mode uses Airplanes.live (non-commercial). See docs/data-sources.md.

Sky Dome 3D models

Copy GLB files into apps/desktop/public/models/ (airplane.glb + per-type files like b738.glb). See apps/desktop/public/models/README.md.

Coordinates

  • Dome: @skyos/coordinates + sky-core — lat/lon → ENU meters → unit sphere; azimuth/elevation UV for legacy helpers
  • Ceiling: @skyos/skylightmap (flat ground plan) or sky (look-up dome with altitude-aware motion); runways drawn at true geographic position with real lengthMeters / widthMeters (OurAirports)

Tests

pnpm --filter @skyos/config test
pnpm --filter @skyos/renderer test
pnpm --filter @skyos/skylight test
pnpm --filter @skyos/coordinates test
cargo test -p aircraft-provider
cargo test -p skyos-desktop

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages