| Commit | Description |
|---|---|
e4822e5 |
Replace overrides.css with full purple polish version |
30e5bcc |
Chat input: inner padding 0, center-align placeholder text, bottom padding lift |
d901a4a |
Revert chat input changes |
e307914 |
Fix: remove duplicate btn-chat-sessions, add modal-box.lg CSS, fix chat input bar padding |
1cf71dd |
Orin IDE - AI-powered web IDE with 14 new features |
Goal: Build Orin IDE into a full-featured web-based IDE with AI capabilities.
Features Implemented:
- AI Terminal (
aiterminal.js) — Natural language to shell commands via WebSocket - AI Code Review (
aireview.js) — Ctrl+Shift+R toggle, severity-based decorations - AI Explain on Hover (
aiexplain.js) — Ctrl+Hover tooltip explanations (does NOT overwrite original AIExplain) - AI Commit Message (
aicommit.js) — Generate conventional commit messages from git diff - AI Refactor (
airefactor.js) — Inline widget with floating overlay (does NOT overwrite original AIRefactor) - Multi-Cursor — Built into Monaco (Ctrl+D, Alt+Click)
- File Favorites (
favorites.js) — Pin files to top of tree - Shortcuts Panel (
shortcuts.js) — Ctrl+K shows all keyboard shortcuts - Snippets Manager (
snippetsmgr.js) — Create/edit/search/insert code snippets - Terminal Themes (
termthemes.js) — Theme-synced terminal colors - Voice Commands (
voicecommands.js) — "open file X", "run project", "install X", "save" - File Icons (
fileicons.js) — Language/asset-specific colored icons - Breadcrumb (
breadcrumb.js) — Clickable file path navigation - Auto-Save Indicator (
autosave-indicator.js) — Yellow dot on unsaved tabs
Key Decisions:
AIExplainTooltipandAIRefactorInlineare separate objects that do NOT overwrite originals- Terminal sessions use localStorage (like Termux)
- AI Terminal executes via
TermMgr.runFallback()over WebSocket - Ctrl+P = Quick Open, Ctrl+Shift+P = Command Palette
Features:
- OllamaMgr in providers.js for Ollama API integration
- OllamaPanel for model management
- Ollama in Model Picker, Top Bar, Chat, Agents
- Android Termux small models: phi3:mini, gemma2:2b, qwen2.1.5b, tinyllama
- Models prefixed with
ollama/in storage, prefix stripped for API calls
Features:
- ChatSessions in features.js (pin, search, timeline, export/import)
- AgentSessions in agents.js
- Session data stored in localStorage (
ci_chat_sessions,ci_agent_sessions) - Active badge, timeline grouping, session preview
- Export single/all as JSON, import from JSON
Features:
- Workspace state stored in
ci_workspacekey - Auto-save on tab changes
- restoreWorkspace/saveWorkspace in editor.js
Rewrite of terminal.js:
- Sessions stored in localStorage (
ci_term_sessions,ci_term_active) - Session bar UI with tabs
- Create/switch/delete/rename sessions
- Output replay on switch
- Command history per-session
- Sessions persist until user explicitly deletes
Features:
- Request cancellation via AbortController
- 40-line context window
- Top-level imports/declarations gathering
- 3 completion variants
- Precise cache keys
- Temperature 0.05
- Ctrl+Shift+I toggle
Features:
- Second Monaco instance
- Draggable splitter
- Second tab bar
- Ctrl+\ toggle
Features:
- Monaco CodeActionProvider
- Fix/Explain/Refactor/Tests/Document options
- Context menu integration (ContextMenuAI)
Backend changes (server.js):
POST /api/import-zip— JSON+base64 approach- Legacy multipart support via
POST /api/export/import archiverv8{ ZipArchive }class fix
Key fix: archiver v8 changed from require('archiver') function to { ZipArchive } class export.
Attempted: Full CSS rewrite with glassmorphism effects Result: Reverted — broke CSS selectors and chat UI Lesson: Never rewrite entire CSS files; only modify existing selectors
Attempted: Add --glass-* variables and backdrop-filter without changing structure
Result: Reverted per user request — user preferred clean purple theme
Issues Fixed:
- Duplicate
id="btn-chat-sessions"— removed redundant button (line 700) - Missing
.modal-box.lgCSS — addedmax-width: 720px - Chat input bar broken — overrides.css stripped padding/gap from
.chat-row
Changes:
- Inner padding set to 0
- Center-aligned placeholder text (
text-align: center) - Bottom padding lift (
.chat-input-wrappadding: 0 0 12px 0) overrides.cssreplaced with full purple polish version
main.css → sidebar.css → editor.css → terminal.css → chat.css → modals.css → mobile.css → agents.css → overrides.css
overrides.css loads LAST and uses !important to override earlier styles.
| Module | File | Purpose |
|---|---|---|
| EditorMgr | editor.js | Monaco editor management |
| FileTree | filetree.js | File explorer with favorites |
| ChatMgr | chat.js | AI chat with sessions |
| AgentsMgr | agents.js | Multi-agent system |
| TermMgr | terminal.js | Terminal sessions |
| ThemeMgr | theme.js | Theme system (6 themes) |
| ModelPicker | providers.js | Model selection + Ollama |
| QuickOpen | quickopen.js | Ctrl+P fuzzy search |
| ContextMenuAI | features.js | Right-click AI actions |
| AICompletions | aicompletions.js | Inline code suggestions |
| SplitEditor | spliteditor.js | Dual editor panes |
| Key | Purpose |
|---|---|
ci_term_sessions |
Terminal session data |
ci_term_active |
Active terminal session |
ci_chat_sessions |
Chat session data |
ci_agent_sessions |
Agent session data |
ci_chat_pinned |
Pinned chat sessions |
ci_workspace |
Workspace state |
ci_theme |
Current theme |
ci_model |
Current AI model |
ci_provider |
Current provider |
| Endpoint | Method | Purpose |
|---|---|---|
/api/import-zip |
POST | Import project (JSON+base64) |
/api/export-zip/:proj |
GET | Export project as ZIP |
/api/export/import |
POST | Legacy multipart import |
terminal:exec |
WebSocket | Execute terminal commands |
- All init calls in app.js wrapped in individual try-catch
API.execCommand()uses WebSocket for streaming outputAPI.execCmd()uses POST endpoint (broken — endpoint doesn't exist)fileIcon()global function delegates toFileIcons.render()getSelectedCode()andreplaceSelectedCode()in features.jsrenderMD()in utils.js for markdown renderingCtxobject in utils.js is localStorage wrapper
- URL:
git@github.com:nandandas2407-web/Ide.git - Branch:
main - License: MIT, Copyright 2026 Nandan Das
git clone git@github.com:nandandas2407-web/Ide.git
cd Ide
npm install
node server.js