Initial commit: Obsidian Web Interface for Claude Code

- Full IDE with terminal integration using xterm.js
- Session management with local and web sessions
- HTML preview functionality
- Multi-terminal support with session picker

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
uroma
2026-01-19 16:29:44 +00:00
Unverified
commit 0dd2083556
44 changed files with 18955 additions and 0 deletions

449
CHAT_GUIDE.md Normal file
View File

@@ -0,0 +1,449 @@
# 💬 Claude Code Chat Interface - Complete Guide
## ✅ Chat Interface is Now Live!
Your Claude Code Web IDE now has a **prominent chat interface** for seamless communication with Claude Code from your browser!
---
## 🌐 Access the Chat
**URL**: https://www.rommark.dev/claude/ide
1. Login with: `admin` / `!@#$q1w2e3r4!A`
2. Click **"💬 Chat"** in the navigation
3. Start chatting!
---
## 🎯 How to Use the Chat Interface
### 1. Start a New Chat Session
```
1. Click "💬 Chat" in the navigation
2. Click "+ New Chat" button
3. A new Claude Code session is created automatically
4. Start typing your message!
5. Press Enter to send
```
### 2. Chat with Claude Code
**What You Can Do:**
- Ask Claude to write code
- Request file operations
- Get help with debugging
- Plan and execute projects
- Ask questions about your codebase
**Example Messages:**
```
"Create a REST API with Express"
"Help me debug this error in my code"
"What files are in the DedicatedNodes folder?"
"Generate a weekly report summary"
```
### 3. Continue from CLI Session
**Important Feature!** - You can seamlessly continue a session from your terminal in the web interface.
#### From Terminal to Web:
```bash
# 1. Start Claude Code in your terminal
cd /home/uroma/obsidian-vault
claude
# 2. Claude will show you the session ID at the top
# Example: Session ID: session-1737264832-abc123def456
# 3. Go to the web interface
# https://www.rommark.dev/claude/ide
# 4. Click "💬 Chat"
# 5. Click "Attach CLI Session"
# 6. Paste your session ID
# 7. Click "Attach"
# 8. Now you're connected! The web will show your conversation history
# 9. Continue chatting from the web - all messages sync both ways!
```
#### From Web to CLI:
```bash
# 1. Start a chat in the web interface
# Click "+ New Chat"
# 2. The session ID will be shown in the chat header
# Example: session-1737264832-xyz789abc123
# 3. In your terminal, set the CLAUDE_SESSION_ID environment variable
export CLAUDE_SESSION_ID=session-1737264832-xyz789abc123
# 4. Start claude in the same directory
claude
# 5. You're now continuing the web session in the terminal!
```
### 4. View Session History
- All chat sessions are automatically saved
- View historical sessions in the sidebar
- Click any session to load and view the full conversation
- Sessions are saved in `Claude Sessions/` folder in your Obsidian vault
---
## 🎨 Chat Interface Features
### Chat Sidebar
- **Session List**: All active and historical sessions
- **Session Info**: Project name, working directory, status
- **Quick Attach**: One-click to attach to any session
### Chat Main Area
#### Header
- **Session Title**: Shows current chat/session name
- **Session ID**: Your unique session identifier
- **Actions**: Clear chat, settings
#### Messages Area
- **User Messages**: Blue bubbles on the right 👤
- **Claude Responses**: Gray bubbles on the left 🤖
- **System Messages**: Info messages with
- **Code Highlighting**: Automatic syntax highlighting
- **Streaming**: Real-time response streaming (dots animation while Claude types)
#### Input Area
- **Large Text Input**: Multi-line message support
- **Send Button**: Click or press Enter to send
- **Shift+Enter**: New line without sending
- **File Attachment**: Coming soon
- **Character Count**: Live character counter
- **Token Usage**: Estimated token usage display
---
## 🔧 Pro Tips
### Keyboard Shortcuts
- **Enter**: Send message
- **Shift+Enter**: New line
- **Escape**: (Coming soon) Focus search
### File References
You can reference files in your conversation:
```
"Read the file @DedicatedNodes/Project.md"
"Show me tasks in @Tasks.md"
```
### Commands
```
/help - Show available commands (coming soon)
/clear - Clear chat
/new - Start new chat
```
---
## 📊 Session Management
### Active vs Historical Sessions
**Active Sessions** (Green status):
- Currently running
- Can send commands
- Real-time output
- Attach and continue chatting
**Historical Sessions** (Gray status):
- Previously terminated
- View-only mode
- Full conversation history
- Can reference but not modify
### Session Storage
All sessions are automatically saved to your Obsidian vault:
```
/home/uroma/obsidian-vault/
└── Claude Sessions/
├── 2026-01-19-session-1737264832-abc123.md
├── 2026-01-19-session-1737265100-def456.md
└── ...
```
Each session file contains:
- Session metadata (ID, status, directory)
- Full conversation transcript
- All commands and outputs
- Timestamp for each action
---
## 🔄 How Web ↔ CLI Sync Works
### Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ Claude Code Service │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Session Manager (In-Memory + File Persistence) │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Session 1 │ │ Session 2 │ │ Session 3 │ │ │
│ │ │ (Active) │ │ (Historical) │ │ (Active) │ │ │
│ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ │
│ └─────────┼─────────────────┼─────────────────┼───────────┘ │
└────────────┼─────────────────┼─────────────────┼──────────────┘
│ │ │
┌────▼────────┐ ┌────▼────────┐ ┌────▼────────┐
│ Web UI │ │ CLI │ │ Files │
│ (WebSocket)│ │ (stdin) │ │ (Vault) │
└─────────────┘ └─────────────┘ └─────────────┘
```
### How Messages Sync
1. **From Web**:
- User types in web chat
- WebSocket sends to server
- Server writes to session's stdin
- Output captured and sent back via WebSocket
- Displayed in real-time
2. **From CLI**:
- User types in terminal
- Output captured by service
- Sent via WebSocket to connected web clients
- Displayed in real-time in browser
3. **Session State**:
- Shared across web and CLI
- Both see same conversation
- File operations sync to vault
- Context tokens tracked
---
## 🎯 Real-World Usage Examples
### Example 1: Start in Web, Continue in CLI
```bash
# 1. Start in web interface
https://www.rommark.dev/claude/ide
→ Click "💬 Chat"
→ Click "+ New Chat"
→ Type: "Create a user authentication system"
→ Press Enter
# 2. Claude starts working...
# 3. Copy session ID from chat header
session-1737264832-abc123def456
# 4. Continue in terminal
export CLAUDE_SESSION_ID=session-1737264832-abc123def456
claude
# 5. Continue the conversation in CLI!
```
### Example 2: Start in CLI, View in Web
```bash
# 1. Start in terminal
cd ~/obsidian-vault
claude
# 2. Note the session ID displayed
Session ID: session-1737264900-xyz789abc123
# 3. Do some work...
"Create a new project file"
# 4. Open web interface
https://www.rommark.dev/claude/ide
→ Click "💬 Chat"
→ Click "Attach CLI Session"
→ Paste session ID
→ See your full conversation!
# 5. Continue chatting from the web now
```
### Example 3: Collaborative Session
```bash
# Team member 1 works in CLI
export CLAUDE_SESSION_ID=session-1737265000-shared123
claude
> "Set up the database schema"
# Team member 2 watches in web
https://www.rommark.dev/claude/ide
→ Attach to session: session-1737265000-shared123
→ See real-time progress
→ Can add their own messages
# Both see the same conversation!
```
---
## 🚀 Quick Start Commands
### Start Chatting Immediately
```bash
# Open browser
https://www.rommark.dev/claude/ide
# Click "💬 Chat" button
# Click "+ New Chat"
# Type your first message:
"Hello Claude! Can you help me build a web API?"
# Press Enter and watch Claude respond!
```
### Continue from Terminal Session
```bash
# In terminal (after starting claude)
# Note the session ID shown
# In web browser:
https://www.rommark.dev/claude/ide
→ Click "💬 Chat"
→ Click "Attach CLI Session"
→ Paste session ID
→ Click "Attach"
# Continue your conversation!
```
---
## 📁 Where Everything is Stored
### Session Files
```
/home/uroma/obsidian-vault/Claude Sessions/
├── 2026-01-19-session-[id].md # Your chat sessions
└── ...
```
### Session File Format
```markdown
---
type: claude-session
session_id: session-1737264832-abc123
status: running
created_at: 2026-01-19T10:30:00.000Z
working_dir: /home/uroma/obsidian-vault
---
# Claude Code Session: session-1737264832-abc123
**Created**: 2026-01-19T10:30:00.000Z
**Status**: running
**Working Directory**: `/home/uroma/obsidian-vault`
**PID**: 12345
## Context Usage
- **Total Tokens**: 1,234
- **Messages**: 15
- **Token Limit**: 200,000
## Session Output
### stdout - 2026-01-19T10:30:05.000Z
```
[Your conversation here...]
```
```
---
## 💡 Best Practices
### 1. Use Descriptive Session Names
When creating sessions, specify your project:
```javascript
metadata: {
project: "DedicatedNodes",
feature: "colo-offers-management"
}
```
### 2. Organize by Project
Create separate sessions for different projects:
- `DedicatedNodes-main`
- `DedicatedNodes-experiments`
- `Personal-website`
### 3. Regular Session Cleanup
- Old sessions are automatically cleaned up after 24 hours
- Important sessions are saved in your vault
- Use historical sessions to reference past conversations
### 4. Token Management
- Monitor token usage in the chat interface
- Start new sessions when approaching 200K limit
- Use concise prompts to save tokens
---
## 🔐 Security Notes
### Session IDs
- Session IDs are unique and random
- Treat them like passwords
- Don't share session IDs publicly
- Each session has its own context
### Authentication
- Web interface requires login
- All API calls protected
- WebSocket authenticated
- Sessions expire after 24 hours
---
## 🎉 You Now Have:
1.**Full Chat Interface** - Prominent "💬 Chat" button in navigation
2.**Real-Time Streaming** - Watch Claude type responses in real-time
3.**CLI Integration** - Continue sessions bidirectionally
4.**Session Management** - View, attach, create, switch sessions
5.**Chat History** - All conversations saved to your vault
6.**Syntax Highlighting** - Code blocks automatically formatted
7.**Mobile Responsive** - Chat works on all devices
---
## 🎯 Quick Reference
| Action | How |
|--------|-----|
| Start new chat | Click "💬 Chat" → "+ New Chat" |
| Continue CLI session | Copy session ID → "Attach CLI Session" |
| Send message | Type and press Enter |
| New line | Shift+Enter |
| Clear chat | "Clear" button |
| View history | Click any session in sidebar |
---
**Get Started Now**: https://www.rommark.dev/claude/ide
Happy chatting with Claude Code! 🎉💬