A modern, cross-platform desktop IDE by ElysianNodes, powered by Electron + Monaco 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 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
- π 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)
- Node.js 18+
- npm 8+
- Linux:
libgtk-3-dev,libwebkit2gtk-4.0-dev(for AppImage builds) - Windows: No extra deps needed
# 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 develysian-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
npm run build:linuxOutput: dist/
npm run build:winTo cross-compile for Windows from Linux, install Wine:
sudo apt install wine
npm run build:all| 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 |
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 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' }});| 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 |
Access via Settings button in activity bar or Ctrl+,:
- Account: Re-trigger ElysianNodes login
- Application: Font size slider, theme selector
- Editor: Monaco-specific settings
- First-launch prompts for ElysianNodes sign-in
- Login state persisted in localStorage
- Settings panel allows re-authentication
- Webview isolation for secure login flow
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
- ElysianNodes β Hosting & Services
- Electron Documentation
- Monaco Editor
- xterm.js