Skip to content

Jimputinfn/elysiancode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Elysian Code

A modern, cross-platform desktop IDE by ElysianNodes, powered by Electron + Monaco Editor.

Elysian Code

✨ Features

Core Editor

  • 🎨 VS Code-inspired dark UI β€” familiar layout, clean aesthetic
  • ⚑ Monaco Editor β€” full syntax highlighting, IntelliSense, bracket pairing, minimap
  • πŸ“ File Explorer β€” open folders, navigate the tree, create/rename/delete files and folders
  • πŸ“‘ Tabbed editing β€” multi-file tabs, dirty indicators, middle-click to close
  • πŸ” Search panel β€” search across all files in the open folder
  • ⌨️ Rich keybindings β€” VS Code-like shortcuts for productivity

Integrated Tools

  • πŸ–₯️ Integrated terminal β€” xterm.js + node-pty, multi-terminal support, resize handle
  • πŸ€– ElysianAI panel β€” Ctrl+L toggles a right-side panel with the ElysianAI chat interface
  • βš™οΈ Settings panel β€” configure font size, theme, and account settings
  • πŸ” Account integration β€” seamless ElysianNodes login with re-authentication option

Security & Architecture

  • πŸ”’ Secure by design β€” contextIsolation enabled, no nodeIntegration
  • 🌐 Monaco from CDN β€” fast loading, no local bundling required
  • πŸ“¦ Cross-platform builds β€” .deb, .AppImage (Linux) and .exe/.msi (Windows)

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm 8+
  • Linux: libgtk-3-dev, libwebkit2gtk-4.0-dev (for AppImage builds)
  • Windows: No extra deps needed

Quick Start

# Clone and install
git clone <repository-url>
cd elysian-code
npm install

# Run in development mode
npm start

# Or with DevTools for debugging
npm run dev

πŸ—οΈ Project Structure

elysian-code/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   └── main.js          # Electron main process (BrowserWindow, IPC handlers, pty)
β”‚   β”œβ”€β”€ preload/
β”‚   β”‚   └── preload.js       # contextBridge β€” safely exposes IPC to renderer
β”‚   └── renderer/
β”‚       β”œβ”€β”€ index.html       # App shell
β”‚       β”œβ”€β”€ css/
β”‚       β”‚   └── main.css     # All styles (VS Code dark theme)
β”‚       └── js/
β”‚           β”œβ”€β”€ utils.js     # Shared helpers (path, toast, debounce, lang map)
β”‚           β”œβ”€β”€ fileicons.js # SVG icon map per file extension
β”‚           β”œβ”€β”€ filetree.js  # File explorer sidebar
β”‚           β”œβ”€β”€ tabs.js      # Tab management
β”‚           β”œβ”€β”€ editor.js    # Monaco editor wrapper (CDN loading)
β”‚           β”œβ”€β”€ terminal.js  # xterm.js terminal panel
β”‚           β”œβ”€β”€ search.js    # Folder-wide search
β”‚           β”œβ”€β”€ menus.js     # Top menu bar + context menus
β”‚           └── app.js       # Boot, keybindings, resizers, AI panel, login modal
β”œβ”€β”€ assets/
β”‚   └── icons/
β”‚       β”œβ”€β”€ icon.png
β”‚       └── icon.ico
β”œβ”€β”€ package.json
└── README.md

πŸ“¦ Building

Linux (.deb + AppImage)

npm run build:linux

Output: dist/

Windows (.exe NSIS installer + .msi)

npm run build:win

To cross-compile for Windows from Linux, install Wine: sudo apt install wine

All platforms

npm run build:all

⌨️ Keybindings

Action Shortcut
File Operations
New File Ctrl+N
Open Folder Ctrl+K Ctrl+O
Save Ctrl+S
Save As Ctrl+Shift+S
Close Tab Ctrl+W
Navigation
Cycle Tabs Ctrl+Tab
Toggle Sidebar Ctrl+B
Explorer Panel Ctrl+Shift+E
Search Panel Ctrl+Shift+F
Settings Panel Ctrl+,
Editor
Find in File Ctrl+F
Replace in File Ctrl+H
Format Document Shift+Alt+F
Toggle Word Wrap Alt+Z
Increase Font Size Ctrl++
Decrease Font Size Ctrl+-
Reset Font Size Ctrl+0
Panels
Toggle Terminal `Ctrl+``
Toggle AI Panel Ctrl+K

πŸ›οΈ Architecture

Security Model

All Node.js/OS access goes through a strict contextBridge boundary:

Renderer (renderer process)
    ↓ window.electronAPI.*
Preload (contextBridge)
    ↓ ipcRenderer.invoke()
Main process (ipcMain.handle())
    ↓ fs, node-pty, dialog
  • No nodeIntegration β€” renderer cannot access Node APIs directly
  • contextIsolation: true β€” prevents prototype pollution
  • CSP enforced β€” content security policy for additional protection

Monaco Editor Integration

Monaco is loaded from CDN using script tags to work with contextIsolation:

// Monaco loads via require.js from CDN
// Works with contextIsolation: true
require.config({ paths: { vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.44.0/min/vs' }});

πŸ› οΈ Tech Stack

Component Library/Version
Shell Electron 28
Editor Monaco Editor 0.44 (CDN)
Terminal xterm.js 5.3 + node-pty 1
Packaging electron-builder 24
Styling Vanilla CSS (VS Code theme)
IPC contextBridge + ipcMain
Module Loader RequireJS 2.3.6

πŸ”§ Configuration

Settings Panel

Access via Settings button in activity bar or Ctrl+,:

  • Account: Re-trigger ElysianNodes login
  • Application: Font size slider, theme selector
  • Editor: Monaco-specific settings

Login Integration

  • First-launch prompts for ElysianNodes sign-in
  • Login state persisted in localStorage
  • Settings panel allows re-authentication
  • Webview isolation for secure login flow

🀝 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

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.

πŸ”— Links

About

Code editor with bit of AI

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors