Skip to content

CodeEditorLand/Sky

Sky

🌌

+

🏞️


Skyβ€πŸŒŒ

VS Code's UI is tightly coupled to Electron's renderer process. Changing a panel requires understanding the full Chromium lifecycle. Hot-reload means restarting the entire renderer.

"Every panel is a component. Instant hot-reload."

License: CC0-1.0 NPM Version Astro Astro Version Effect-TS Effect Version

Sky provides three workbench layouts (full desktop, embedded, minimal) built from Astro components. Tauri reloads Sky instantly on any component change. High-fidelity VS Code UI compatibility with a significantly smaller footprint. No Electron renderer magic. Web components rendered by the OS's own WebView.


What It Doesβ€πŸ”

  • Three workbench layouts. Full desktop, embedded, and minimal deployments from the same component set.
  • Instant hot-reload. Tauri reloads Sky immediately on any component change during development.
  • VS Code UI compatibility. Panels, sidebars, tab bars, and status bars match the VS Code UX.
  • OS-native rendering. Components rendered by WKWebView/WebView2/WebKitGTK, not bundled Chromium.

In the Ecosystemβ€πŸŒŒ +β€πŸžοΈ

graph LR
classDef sky fill:#9cf,stroke:#333,stroke-width:2px;
classDef wind fill:#ffc,stroke:#333,stroke-width:2px;
classDef tauri fill:#f9d,stroke:#333,stroke-width:2px;
classDef mountain fill:#f9f,stroke:#333,stroke-width:2px;
classDef external fill:#ddd,stroke:#666,stroke-dasharray: 5 5;

subgraph "Sky 🌌 (UI Component Layer - Tauri Webview)"
Pages["Pages (index, Browser, Electron, Mountain, Isolation)"]:::sky
Workbenches["Workbench Components (Browser, Mountain, Default, NLS)"]:::sky
WorkbenchImpl["Workbench Implementations (BrowserProxy/, Electron/)"]:::sky
end

subgraph "Wind πŸƒ (Service Layer - Tauri Webview)"
PreloadJS["Preload.js (Environment Shim)"]:::wind
WindServices[Wind Effect-TS Services]:::wind
TauriIntegrations[Wind/Tauri Integrations]:::wind
end

subgraph "Tauri Shell & Mountain 🌌 (Rust Backend)"
TauriWindow[Tauri Window API]:::tauri
TauriEvents[Tauri Event System]:::tauri
MountainCore[Mountain Rust Core]:::mountain
end

subgraph "External"
VSCodeComponents[VSCode Core UI Components from Output]:::external
end

Pages --> Workbenches
Pages --> WorkbenchImpl
Workbenches --> PreloadJS
WorkbenchImpl --> PreloadJS
Workbenches -- Consumes services from --> WindServices
WorkbenchImpl -- Consumes services from --> WindServices
WindServices -- Uses --> TauriIntegrations
TauriIntegrations -- Calls --> TauriWindow
TauriIntegrations -- Listens to --> TauriEvents
TauriWindow -- IPC --> MountainCore
TauriEvents -- Emits from --> MountainCore
Workbenches -- Loads --> VSCodeComponents
WorkbenchImpl -- Loads --> VSCodeComponents
Loading

Project Structureβ€πŸ—ΊοΈ

Sky/
β”œβ”€β”€ Source/
β”‚   β”œβ”€β”€ pages/ # Page routes
β”‚   β”‚   β”œβ”€β”€ index.astro # Home page (default workbench entry)
β”‚   β”‚   β”œβ”€β”€ Browser.astro # A1: Browser workbench page
β”‚   β”‚   β”œβ”€β”€ BrowserProxy.astro # A1: Browser + services proxy page
β”‚   β”‚   β”œβ”€β”€ Electron.astro # A3: Electron + polyfills page
β”‚   β”‚   β”œβ”€β”€ Isolation.astro # Isolated mode page
β”‚   β”‚   └── Mountain.astro # A2: Mountain providers page (RECOMMENDED)
β”‚   β”œβ”€β”€ Workbench/ # Workbench component implementations
β”‚   β”‚   β”œβ”€β”€ Default.astro # Deprecated entry point
β”‚   β”‚   β”œβ”€β”€ Browser.astro # Browser workbench component
β”‚   β”‚   β”œβ”€β”€ BrowserTest.astro # Test workbench component
β”‚   β”‚   β”œβ”€β”€ Mountain.astro # A2: Mountain workbench component (RECOMMENDED)
β”‚   β”‚   β”œβ”€β”€ NLS.astro # Natural Language Support component
β”‚   β”‚   β”œβ”€β”€ BrowserProxy/ # A1: Browser Proxy implementation
β”‚   β”‚   β”‚   β”œβ”€β”€ Bootstrap.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ Layout.astro
β”‚   β”‚   β”‚   β”œβ”€β”€ ServicesProxy.ts
β”‚   β”‚   β”‚   β”œβ”€β”€ WindPreload.ts
β”‚   β”‚   β”‚   └── Workbench.ts
β”‚   β”‚   └── Electron/ # A3: Electron implementation
β”‚   β”‚       β”œβ”€β”€ Bootstrap.ts
β”‚   β”‚       β”œβ”€β”€ Layout.astro
β”‚   β”‚       β”œβ”€β”€ Polyfills.ts
β”‚   β”‚       β”œβ”€β”€ WindPreload.ts
β”‚   β”‚       └── Workbench.ts
β”‚   β”œβ”€β”€ Function/ # Utility functions and base components
β”‚   β”‚   β”œβ”€β”€ Debug.ts # Build-time debug utilities
β”‚   β”‚   β”œβ”€β”€ Shared.ts # Shared utilities
β”‚   β”‚   β”œβ”€β”€ Meta.astro # Meta component
β”‚   β”‚   └── Markup/
β”‚   β”‚       └── Base.astro # Base markup layout
β”‚   └── env.d.ts # TypeScript definitions
β”œβ”€β”€ Public/ # Static assets served directly
β”‚   β”œβ”€β”€ Manifest.json
β”‚   β”œβ”€β”€ robots.txt
β”‚   └── Favicon/
β”œβ”€β”€ Target/ # Build output directory
β”œβ”€β”€ .env.example # Environment variables template
β”œβ”€β”€ astro.config.ts # Astro configuration
β”œβ”€β”€ package.json
└── tsconfig.json # TypeScript configuration

Developmentβ€πŸ› οΈ

Sky is a component of the Land workspace. Follow the Land Repository instructions to build and run.


Licenseβ€βš–οΈ

CC0 1.0 Universal. Public domain. No restrictions. LICENSE


See Also

Funding & Acknowledgementsβ€πŸ™πŸ»

Sky is a core element of the Land ecosystem. This project is funded through NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

The project is operated by PlayForm, based in Sofia, Bulgaria.

PlayForm acts as the open-source steward for Code Editor Land under the NGI0 Commons Fund grant.

Land PlayForm NLnet NGI0 Commons Fund
Land PlayForm NLnet NGI0 Commons Fund

Project Maintainers: Source Open (Source/Open@Editor.Land) | GitHub Repository | Report an Issue | Security Policy

About

Skyβ€πŸŒŒβ€+ Landβ€πŸžοΈ

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors