89eedf5522
Introduce a working v0 Nebula Shell prototype (Tauri frontend) and redesign docs. Adds a complete frontend under src/ (views: home, lock, library, settings, overlays), core adapters (input, nav, passkey, router, state), global styles and shell guidelines, and view-specific HTML/CSS/JS. Update README with prototype notes, install/run/build instructions and controller testing tips. Update package.json to add dev/build scripts and add @nebulaproject/core as a dependency. Also include a detailed REDESIGN_DOCUMENTATION.md describing the Xbox-inspired horizontal dashboard, component patterns, and developer notes.
434 lines
10 KiB
Markdown
434 lines
10 KiB
Markdown
# Nebula OS v0 – Windows-first Development Plan
|
||
|
||
## Nebula Shell Prototype (Current)
|
||
|
||
This repository now includes a working v0 Nebula Shell prototype in the Tauri frontend (`src/`) with:
|
||
|
||
- Lock Screen with controller/keyboard PIN keypad (`1234` for v0)
|
||
- Home dashboard tile grid (Library, Settings, Power)
|
||
- Settings split-pane stub (category list + content panel)
|
||
- Library stub view with controller back behavior
|
||
- Start/Menu power overlay that traps focus and closes with Back
|
||
- Unified input actions (`up/down/left/right/accept/back/menu`) from keyboard + gamepad
|
||
|
||
### Dashboard refresh (Xbox-inspired Nebula)
|
||
|
||
The shell now uses a premium horizontal dashboard language inspired by console UI patterns:
|
||
|
||
- Left-aligned horizontal app tile rail (Library, Settings, Power)
|
||
- Dynamic nebula background stack (gradient, starfield, fog, vignette)
|
||
- Shared top bar with reactive accent line and profile/time status
|
||
- Layered tile focus states (scale, cyan glow, ripple, elevation)
|
||
- Smooth page/focus transitions with cubic-bezier motion curves
|
||
- Immersive lock screen with large clock/date and input-revealed PIN panel
|
||
- Settings redesign with top category rail + card-based content panel
|
||
|
||
Animation and component architecture notes are in [src/styles/shell-guidelines.md](src/styles/shell-guidelines.md).
|
||
|
||
### Install
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
### Run (Windows dev)
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
### Build
|
||
|
||
```bash
|
||
npm run build
|
||
```
|
||
|
||
### Controller testing notes (Windows)
|
||
|
||
- Connect an Xbox-compatible controller before launching dev mode.
|
||
- Navigation: D-pad or left stick.
|
||
- Actions: `A` = Accept, `B` = Back, `Start` = Menu.
|
||
- Keyboard mirror for development: arrow keys, Enter, Escape/Backspace.
|
||
|
||
### Nebula Core integration status
|
||
|
||
`@nebulaproject/core` is installed and used through runtime adapters in:
|
||
|
||
- `src/core/input.js`
|
||
- `src/core/nav.js`
|
||
- `src/core/state.js`
|
||
|
||
If Nebula Core exports are available, the shell uses them for input/navigation/glyphs/theme.
|
||
If not, local fallback adapters keep the shell fully functional.
|
||
|
||
### Local Nebula Core development (Windows-safe)
|
||
|
||
Current npm package `@nebulaproject/core@0.1.3` re-exports internal `@nebula/*` packages that are not published, so local linking is recommended for active core development.
|
||
|
||
1. Clone Nebula Core monorepo next to this repo.
|
||
2. Build Nebula Core packages.
|
||
3. Link from the core repo and consume in this repo:
|
||
|
||
```bash
|
||
# In Nebula-Core repo
|
||
npm link
|
||
|
||
# In Nebula-OS repo
|
||
npm link @nebulaproject/core
|
||
```
|
||
|
||
Alternative (more deterministic): use `file:` dependency in `package.json`:
|
||
|
||
```json
|
||
{
|
||
"dependencies": {
|
||
"@nebulaproject/core": "file:../Nebula-Core/packages/core"
|
||
}
|
||
}
|
||
```
|
||
|
||
Then run:
|
||
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
### Linux VM build (high-level)
|
||
|
||
- Install Rust, Node.js, and Tauri Linux prerequisites in the VM.
|
||
- Clone this repo in Linux VM.
|
||
- Run `npm install`.
|
||
- Run `npm run dev` for integration checks in Linux session.
|
||
- Run `npm run build` to produce Linux artifacts.
|
||
|
||
## Vision
|
||
|
||
Nebula OS is a **controller-first, open source operating system experience** built on Linux.
|
||
|
||
It has two equally important jobs:
|
||
|
||
1. **A custom controller-first way to navigate the OS** (like a console shell)
|
||
2. **An open source library and launcher layer** for games and apps
|
||
|
||
Nebula OS is not a skin that launches Steam.
|
||
It is an independent UI layer that:
|
||
|
||
* Acts as the primary **controller-first shell** for the OS
|
||
* Provides a unified Home experience for **games, apps, and media**
|
||
* Integrates first-install Nebula apps such as **Nebula Browser** and **Nebula Launcher**
|
||
* Exposes **system settings** through controller-friendly panels
|
||
* Manages game libraries directly (Steam, GOG, Epic, and others)
|
||
|
||
Nebula OS v0 focuses on building the foundation for this console-grade OS shell.
|
||
|
||
---
|
||
|
||
# Core Principles
|
||
|
||
1. Controller-first, not controller-compatible
|
||
2. Replace proprietary frontends with an open interface
|
||
3. Separate system layer from UI layer
|
||
4. Build modular infrastructure for long-term independence
|
||
5. Develop iteratively, but architect for autonomy
|
||
|
||
---
|
||
|
||
# What Nebula OS v0 Actually Is
|
||
|
||
Nebula OS v0 consists of:
|
||
|
||
* Base OS: Ubuntu LTS (or Ubuntu-based)
|
||
* Desktop Environment: KDE Plasma (recommended)
|
||
* Display Manager: SDDM
|
||
* Two login sessions:
|
||
|
||
* Nebula Desktop
|
||
* Nebula Game UI
|
||
* Nebula Shell (Tauri + HTML/CSS/JS)
|
||
* Nebula Library (core application responsible for:
|
||
|
||
* Game discovery
|
||
* Installation
|
||
* Updates
|
||
* Launching
|
||
* Compatibility management)
|
||
|
||
Unlike SteamOS, Nebula OS does not rely on launching Steam Big Picture.
|
||
Nebula Library is the primary game management layer.
|
||
|
||
---
|
||
|
||
# High-Level Architecture
|
||
|
||
## Desktop Mode
|
||
|
||
A standard KDE session for:
|
||
|
||
* Productivity workflows
|
||
* File browsing and system tools
|
||
* Development and troubleshooting
|
||
* Advanced configuration
|
||
|
||
Desktop Mode remains a normal Linux desktop.
|
||
|
||
## Game UI Mode
|
||
|
||
A dedicated login session that launches **Nebula Shell** fullscreen.
|
||
|
||
Game UI Mode contains:
|
||
|
||
* Lock screen with controller PIN entry
|
||
* Nebula Home dashboard
|
||
* Nebula Library
|
||
* Controller-friendly Settings
|
||
* Power and session controls
|
||
|
||
Game UI Mode is the **console experience** for the entire OS.
|
||
|
||
## System Integration Layer (behind the UI)
|
||
|
||
Nebula OS needs a clean boundary between UI and system operations.
|
||
|
||
Recommended approach:
|
||
|
||
* A small privileged backend service (later) that exposes safe operations:
|
||
|
||
* Wi-Fi and networking
|
||
* Audio and output device selection
|
||
* Display resolution and scaling
|
||
* Bluetooth pairing
|
||
* Storage overview
|
||
* Power controls
|
||
* The UI talks to that layer through a stable API
|
||
|
||
v0 scope can start with non-privileged read-only data and a few safe commands.
|
||
|
||
---
|
||
|
||
# Technology Stack
|
||
|
||
## UI Layer
|
||
|
||
* Tauri
|
||
* HTML
|
||
* CSS
|
||
* JavaScript
|
||
|
||
Why Tauri:
|
||
|
||
* Lightweight
|
||
* Native system integration via Rust backend
|
||
* Cross-platform development
|
||
* Efficient resource usage
|
||
|
||
## Controller Input
|
||
|
||
* Web Gamepad API
|
||
* Custom focus/navigation system
|
||
|
||
Controller mappings:
|
||
|
||
* D-pad / left stick: navigation
|
||
* A: activate
|
||
* B: back
|
||
* Start: menu
|
||
* Shoulder buttons: future navigation layers
|
||
|
||
Keyboard mirrors controller during development.
|
||
|
||
---
|
||
|
||
# Nebula Shell – The OS UI Layer
|
||
|
||
Nebula Shell is the **controller-first OS shell**.
|
||
|
||
It is the primary interface in Game UI Mode and should feel like a console dashboard, not a desktop.
|
||
|
||
Nebula Shell responsibilities:
|
||
|
||
* Home dashboard (games, apps, recent activity)
|
||
* App launcher for integrated Nebula apps (Nebula Browser, Nebula Launcher, Nebula Library, Settings)
|
||
* System navigation (network, audio, display, storage, accounts)
|
||
* Power menu and session switching (Game UI ↔ Desktop)
|
||
* Notifications and downloads (later)
|
||
* Controller-first focus navigation everywhere
|
||
|
||
Nebula Shell is built with Tauri + HTML/CSS/JS.
|
||
|
||
---
|
||
|
||
# Nebula Library – The Game and App Management Layer
|
||
|
||
Nebula Library is the **content manager** inside Nebula OS.
|
||
|
||
It is not a bridge to proprietary UIs.
|
||
It should eventually handle:
|
||
|
||
* Steam installs via SteamCMD and/or open APIs
|
||
* GOG installs via open or community tooling
|
||
* Epic installs via open tooling (for example Legendary)
|
||
* Proton/Wine configuration and per-title settings
|
||
* Game launch parameters and runtime selection
|
||
* Updates, integrity checks, and metadata
|
||
|
||
Initial v0 scope:
|
||
|
||
* Library UI skeleton and data model
|
||
* Local entries (manual add)
|
||
* Launch local executables
|
||
* Foundation for compatibility and store backends
|
||
|
||
Long-term direction:
|
||
|
||
Nebula Library becomes a unified open source platform for managing games and apps.
|
||
|
||
---
|
||
|
||
# Development Strategy
|
||
|
||
Nebula OS is developed in two environments:
|
||
|
||
## Windows (Primary UI Development)
|
||
|
||
Used for:
|
||
|
||
* Building Nebula Shell UI
|
||
* Implementing controller navigation
|
||
* Designing lock screen
|
||
* Designing Library UI
|
||
* Building system state architecture
|
||
|
||
UI and logic are platform-agnostic.
|
||
|
||
## Linux VM (Integration & Replacement Layer)
|
||
|
||
Used for:
|
||
|
||
* Building Linux binaries
|
||
* Session integration
|
||
* SteamCMD integration testing
|
||
* Proton/Wine configuration
|
||
* System-level testing
|
||
|
||
Rule:
|
||
|
||
Develop UI on Windows.
|
||
Build and test Linux features inside the VM.
|
||
|
||
---
|
||
|
||
# Phase Roadmap
|
||
|
||
## Phase 1 – Nebula Shell (Controller Console Layer)
|
||
|
||
Objective:
|
||
Build a polished, console-grade Game UI independent of store integration.
|
||
|
||
Deliverables:
|
||
|
||
* Lock screen with PIN keypad
|
||
* Home dashboard
|
||
* Library screen (mock data)
|
||
* Settings screen
|
||
* Power menu
|
||
* Controller navigation grid system
|
||
* Fullscreen window behavior
|
||
|
||
No external integrations yet.
|
||
|
||
---
|
||
|
||
## Phase 2 – Session Integration
|
||
|
||
Objective:
|
||
Make Nebula Shell a selectable login session.
|
||
|
||
Milestones:
|
||
|
||
* Nebula Game UI appears at login
|
||
* Launches fullscreen
|
||
* Exiting returns to login
|
||
* Controller works reliably
|
||
|
||
---
|
||
|
||
## Phase 3 – Nebula Library Foundations
|
||
|
||
Objective:
|
||
Begin true replacement behavior.
|
||
|
||
Milestones:
|
||
|
||
* Launch local Linux games
|
||
* Integrate Proton/Wine execution layer
|
||
* Add SteamCMD support for installing Steam titles
|
||
* Track installed game metadata
|
||
* Unified library view
|
||
|
||
This is where Nebula begins diverging from SteamOS.
|
||
|
||
---
|
||
|
||
## Phase 4 – Store Integrations
|
||
|
||
Objective:
|
||
Add real backend integration without proprietary UI.
|
||
|
||
Potential directions:
|
||
|
||
* SteamCMD for Steam installs
|
||
* Legendary (Epic CLI) integration
|
||
* Heroic backend reuse (without UI dependency)
|
||
* OpenGOG community tools
|
||
|
||
Nebula Library becomes the single UI.
|
||
|
||
---
|
||
|
||
# Security Strategy
|
||
|
||
Game UI lock screen:
|
||
|
||
* Local PIN authentication
|
||
* Optional profile system (future)
|
||
|
||
Linux account authentication remains system-level.
|
||
|
||
---
|
||
|
||
# What Nebula OS Is Not
|
||
|
||
* Not a Steam skin
|
||
* Not Big Picture mode
|
||
* Not a launcher aggregator
|
||
* Not dependent on proprietary UIs
|
||
|
||
It is an open system layer that manages games directly.
|
||
|
||
---
|
||
|
||
# Immediate Action Plan
|
||
|
||
1. Build Nebula Shell UI on Windows
|
||
2. Implement controller navigation framework
|
||
3. Build lock screen system
|
||
4. Build Library UI skeleton
|
||
5. Set up Linux VM
|
||
6. Create Nebula Game UI login session
|
||
7. Begin local executable launching support
|
||
8. Research SteamCMD integration
|
||
|
||
---
|
||
|
||
# Success Criteria for v0
|
||
|
||
Nebula OS v0 is successful when:
|
||
|
||
* You can log into Nebula Game UI
|
||
* The entire UI is controller navigable
|
||
* Lock screen works
|
||
* You can launch locally managed games
|
||
* You can return to Desktop Mode
|
||
|
||
From there, Nebula Library evolves into a true open source game management platform.
|