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:
449
CHAT_GUIDE.md
Normal file
449
CHAT_GUIDE.md
Normal 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! 🎉💬
|
||||
Reference in New Issue
Block a user