Skip to content
This repository was archived by the owner on Dec 2, 2025. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

85 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hyperion IDE (codename MikoIDE)

In Development License Platform C++ CEF Chromium TypeScript React Bun Windows

A modern, high-performance IDE built with C++ and React/TypeScript, featuring Chromium Embedded Framework (CEF) for seamless web-native integration. The project includes multiple executables: the main Hyperion IDE, terminal utilities (mikoterminal, termibench), and web helper components (mikowebhelper).

Features

  • πŸš€ Native Performance: C++ backend with CEF-powered React frontend for optimal speed
  • 🎨 Modern UI: Clean, responsive interface built with React, Redux Toolkit, and Tailwind CSS
  • πŸ–₯️ Custom Window Management: Borderless window with custom title bar and drag regions
  • πŸ“¦ Binary Resource Embedding: Web assets compiled directly into the executable via miko:// protocol
  • πŸ” Monaco Editor: Advanced code editing with syntax highlighting and IntelliSense
  • 🎯 Multi-Target Building: Automated build system for main app and utility tools
  • πŸ–ΌοΈ Off-Screen Rendering: CEF OSR for seamless integration with native window management
  • πŸ”§ Terminal Integration: Built-in terminal utilities (mikoterminal, termibench)
  • 🌐 Web Helper Components: Dedicated web helper processes for enhanced functionality

Architecture

Hyperion/
β”œβ”€β”€ app/                                # C++ Native Application
β”‚   β”œβ”€β”€ main.cpp                        # Application entry point with CEF initialization
β”‚   β”œβ”€β”€ client/                         # CEF browser client implementation
β”‚   β”‚   β”œβ”€β”€ platform/                   # Platform-specific code
β”‚   β”‚   β”‚   β”œβ”€β”€ windows/                # Windows-specific code
β”‚   β”‚   β”‚   β”‚   └── windowsplatform.cpp # Windows platform-specific code
β”‚   β”‚   β”‚   β”œβ”€β”€ linux/                  # Linux-specific code
β”‚   β”‚   β”‚   β”‚   └── linuxplatform.cpp   # Linux platform-specific code
β”‚   β”‚   β”‚   └── sysplatform.cpp         # System platform-specific code
β”‚   β”‚   β”œβ”€β”€ client.cpp                  # Main client 
β”‚   β”‚   β”œβ”€β”€ offscreenrender.cpp         # CEF Offscreen Rendering  
β”‚   β”‚   β”œβ”€β”€ renderermethod.cpp          # Renderer methods
β”‚   β”‚   β”œβ”€β”€ windowed.cpp                # SDL Window Management   
β”‚   β”‚   β”œβ”€β”€ mikoclient.cpp              # CEF Client (HyperionClient class)
β”‚   β”‚   └── app.cpp                     # CEF application class
β”‚   β”œβ”€β”€ resources/                      # Binary resource management
β”‚   β”‚   β”œβ”€β”€ resources.cpp               # Resource provider for miko:// protocol
β”‚   β”‚   β”œβ”€β”€ webapp.cpp                  # Embedded web application resources
β”‚   β”‚   β”œβ”€β”€ editor.cpp                  # Embedded editor resources
β”‚   β”‚   └── menuoverlay.cpp             # Embedded menu overlay resources
β”‚   β”œβ”€β”€ renderer/                       # Graphics rendering
β”‚   β”‚   β”œβ”€β”€ linux/                      # Linux-specific renderer
β”‚   β”‚   β”‚   └── vulkan_renderer.cpp     # Vulkan renderer for Linux
β”‚   β”‚   β”œβ”€β”€ windows/                    # Windows-specific renderer
β”‚   β”‚   β”‚   └── dx11_renderer.cpp       # DirectX 11 renderer for CEF integration
β”‚   β”‚   β”œβ”€β”€ renderer_factory.cpp        # Renderer factory for platform selection
β”‚   β”‚   └── renderer_interface.cpp      # Renderer interface for platform-specific implementations
β”‚   β”œβ”€β”€ utils/                          # Utilities and configuration
β”‚   β”‚   β”œβ”€β”€ logger.cpp                  # Logging system
β”‚   β”‚   └── config.hpp                  # Application configuration
β”‚   β”œβ”€β”€ internal/                       # Internal communication
β”‚   β”‚   └── simpleipc.cpp               # Inter-process communication
β”‚   β”œβ”€β”€ bootstrap/                      # Application bootstrap
β”‚   β”‚   β”œβ”€β”€ platform/                   # Platform-specific code
β”‚   β”‚   β”‚   β”œβ”€β”€ windows/                # Windows-specific code
β”‚   β”‚   β”‚   β”‚   └── windows_dialog.cpp  # Windows dialog implementation
β”‚   β”‚   β”‚   β”‚   └── windows_splash.cpp  # Windows splash screen implementation
β”‚   β”‚   β”‚   β”œβ”€β”€ linux/                  # Linux-specific code
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ linux_dialog.cpp    # Linux dialog implementation
β”‚   β”‚   β”‚   β”‚   └── linux_splash.cpp    # Linux splash screen implementation
β”‚   β”‚   β”œβ”€β”€ ui_factory.cpp              # UI factory for platform selection
β”‚   β”‚   β”œβ”€β”€ ui_interface.cpp            # UI interface for platform-specific implementations
β”‚   β”‚   └── bootstrap.cpp               # Initialization and setup
β”‚   β”œβ”€β”€ cli/                            # Command-line utilities
β”‚   β”‚   β”œβ”€β”€ core/                       # Core utilities and configuration
β”‚   β”‚   └── main.c                      # Command-line entry point
β”‚   β”œβ”€β”€ terminal/                       # Terminal UI
β”‚   β”‚   β”œβ”€β”€ processmanager.cpp          # Process management for terminal utilities
β”‚   β”‚   β”œβ”€β”€ renderer.cpp                # Terminal renderer
β”‚   β”‚   └── terminalbuffer.cpp          # Terminal buffer management
β”œβ”€β”€ mikobench/                          # React/TypeScript Frontend
β”‚   β”œβ”€β”€ src/                            # WEBUI Source code directory
β”‚   β”‚   β”œβ”€β”€ rootui/                     # Main application UI
β”‚   β”‚   β”‚   β”œβ”€β”€ App.tsx                 # Root application component
β”‚   β”‚   β”‚   β”œβ”€β”€ components/             # UI components (TitleBar, Navbar, Statusbar)
β”‚   β”‚   β”‚   β”œβ”€β”€ contexts/               # React contexts (WorkbenchContext)
β”‚   β”‚   β”‚   └── mikoide/                # Core IDE components (Workbench, TabBar)
β”‚   β”‚   β”œβ”€β”€ editor/                     # Code editor implementation
β”‚   β”‚   β”‚   β”œβ”€β”€ MonacoEditor.tsx        # Monaco editor integration
β”‚   β”‚   β”‚   β”œβ”€β”€ core/                   # Editor core functionality
β”‚   β”‚   β”‚   └── tabbar/                 # Editor tab management
β”‚   β”‚   β”œβ”€β”€ components/                 # Reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ DOMEditor.tsx           # DOM-based editor
β”‚   β”‚   β”‚   β”œβ”€β”€ DOMTabBar.tsx           # Tab bar component
β”‚   β”‚   β”‚   └── LanguageSwitcher.tsx    # Language selection
β”‚   β”‚   β”œβ”€β”€ overlays/                   # UI overlays
β”‚   β”‚   β”‚   β”œβ”€β”€ command/                # Command palette
β”‚   β”‚   β”‚   └── menu/                   # Context menus
β”‚   β”‚   β”œβ”€β”€ store/                      # State management
β”‚   β”‚   β”‚   β”œβ”€β”€ index.ts                # Redux store configuration
β”‚   β”‚   β”‚   └── editorSlice.ts          # Editor state slice
β”‚   β”‚   β”œβ”€β”€ providers/                  # React providers
β”‚   β”‚   β”‚   └── QueryProvider.tsx       # Query provider for data fetching
β”‚   β”‚   └── shared/                     # Shared utilities
β”‚   β”‚       β”œβ”€β”€ context.ts              # Shared context definitions
β”‚   β”‚       └── menu.ts                 # Menu utilities
β”‚   └── buildweb.ts                     # Custom build script for web assets
└── tools/                              # Build and Development Tools
    β”œβ”€β”€ build.ts                        # Multi-project CMake build automation
    β”œβ”€β”€ clean.ts                        # Project cleanup utility
    β”œβ”€β”€ cpplint.ts                      # C++ Linting Utility
    β”œβ”€β”€ prod.ts                         # Production build and packaging
    └── utils/                          # Build utilities
        β”œβ”€β”€ buildtobin.ts               # HTML to C++ binary converter
        └── iconconvert.ts              # Icon format converter

Prerequisites

  • Windows 10/11 with MSVC (Visual Studio 2019 or later)
    (MSVC Build Tools are sufficient, full Visual Studio not strictly required)

  • Linux with GCC/Clang
    (all required dev packages such as build-essential, cmake, gtk3-dev, vulkan-sdk, libx11-dev will be auto-installed by build.ts)

  • CMake 3.19+
    (tested up to 3.30 β€” required for FetchContent and modern CMake features)

  • Bun.js (latest)
    (used for build tooling, TypeScript transpile, and resource bundling)

  • Git with submodule support
    (clone with --recurse-submodules to avoid missing dependencies)

Quick Start

1. Clone the Repository

git clone --recursive https://github.com/mikofure/hyperion.git
cd mikoide

2. Install Dependencies

bun install

3. Build the Project (Windows/Linux is auto-detected)

Option A: Full Build (Recommended)

# Complete build process for application (auto platform detected)
bun run build:app

Option B: Step-by-Step Build

# 1. Build React frontend
bun run build

# 2. Convert web assets to C++ binary resources
bun run buildtobin

# 3. Build main application (if linux is pre-install dependencies)
bun run build:cmake

4. Run MikoIDE

# Windows
.\build\Release\Hyperion.exe

# Linux
./build/Release/Hyperion

Development

Available Scripts

Frontend Development

  • bun run dev - Start development server for React frontend
  • bun run build - Build production React frontend
  • bun run preview - Preview built frontend

Backend Development

  • bun run build:cmake - Build specific CMake project (main, mikoterminal, termibench, mikowebhelper, hyprn)
  • bun run clean:cmake - Clean specific CMake project

Resource Management

  • bun run buildtobin - Convert HTML/CSS/JS to C++ binary resources
  • bun run iconconvert - Convert PNG icons to ICO format

Production Builds

  • bun run build:app - Complete development build
  • bun run tools/prod.ts --portable - Build portable executable
  • makensis shared\windows\installer.nsi - Build with installer for Windows

Project Structure Details

Frontend (mikobench/)

Built with modern React ecosystem:

  • React 18.3 with TypeScript for component architecture
  • Redux Toolkit for state management
  • Tailwind CSS 4.1 for styling
  • Monaco Editor for advanced code editing
  • Vite 7.1 for fast development and building
  • Custom build pipeline that generates single-file HTML for embedding

Backend (app/)

Native C++ application featuring:

  • Chromium Embedded Framework (CEF) for rendering React frontend
  • SDL3 for cross-platform window management and input handling
  • DirectX 11 renderer for optimal graphics performance
  • Vulkan renderer for cross-platform graphics support
  • OpenGL renderer for fallback support
  • Direct2D Native UI renderer for Windows
  • GTK3/Cairo renderer for Linux
  • Off-Screen Rendering (OSR) for seamless CEF integration
  • Binary Resource Provider for embedded web assets via miko:// protocol
  • Custom window management with borderless design and drag regions
  • Inter-process communication for component integration
  • Terminal utilities including mikoterminal and termibench
  • Web helper processes for enhanced functionality

CLI Tools (app/cli/)

Command-line utilities providing:

  • mikoterminal - Terminal application with advanced features
  • termibench - Terminal benchmarking and performance testing
  • mikowebhelper - Web helper process for browser integration
  • hyprn - CLI tool for system operations and utilities

Build System

The project uses a sophisticated build system:

CMake Configuration

  • FetchContent for automatic dependency management
  • Multi-platform support (Windows focus, Linux/macOS compatible)
  • Automatic CEF download and extraction
  • SDL3 integration with proper configuration
  • Resource embedding system for web assets

TypeScript Build Tools

Custom build automation providing:

  • Multi-project builds with dependency management
  • Parallel compilation for faster builds
  • Verbose logging for debugging build issues
  • Cross-platform compatibility checks
  • Resource conversion pipeline

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Use Bun.js for all JavaScript/TypeScript operations
  • Use CMake for all C++ builds (MSVC on Windows and GCC/Clang on Linux)
  • Follow existing code style and conventions
  • Add tests for new features
  • Update documentation as needed

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • Built with modern C++ and TypeScript
  • Powered by CMake and Bun.js
  • LSP integration for enhanced development experience
  • Chromium Embedded Framework for seamless web-native integration

Credits

see in credit.md


MikoIDE - Modern IDE for Modern Development πŸš€

About

A modern, cross-platform Integrated Development Environment (IDE) built with cutting-edge web technologies and native performance.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages