claude-ws 0.1.8 β†’ 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,72 +1,93 @@
1
1
  # Claude Workspace
2
2
 
3
- **A beautifully crafted workspace interface for Claude Code.**
3
+ **Visual workspace for Claude Code with Kanban board, code editor, and Git integration.**
4
4
 
5
- Powerful workspace for Claude Code. Work from anywhere with consistent performance. Intuitive workflow, flexible plugins.
5
+ Local-first SQLite database. Real-time streaming. Plugin system for custom agents and skills.
6
6
 
7
7
  ---
8
8
 
9
9
  ## Why Claude Workspace?
10
10
 
11
- ### 🌍 Work Everywhere
12
- Coffee shop. Airport lounge. Hotel WiFi. Beach with spotty signal. Claude Workspace runs locally with SQLiteβ€”no cloud dependency, no latency spikes. Your workflow travels with you.
13
-
14
- ### ⚑ Consistent Performance
15
- Same snappy experience whether you're on fiber at home or tethering from your phone. Lightweight footprint. Instant startup. Responsive UI while Claude streams. Performance you can rely on, anywhere.
16
-
17
- ### 🎯 Unique Workflow
18
- Each task is a conversation. Each conversation has checkpoints. Rewind to any point, branch off, continue later. Your AI workflow adapts to how you think.
19
-
20
- ### ✨ Intuitive Management
21
- Drag-and-drop across columns. Watch responses stream live. Navigate conversation history. File browser with git status. Everything where you expect it.
22
-
23
- ### πŸ”Œ Flexible Plugins
24
- Agent Factory manages Claude skills, commands, and agents per project. Install what you need. Your toolkit, your rules.
25
-
26
- ### πŸ”‹ Powered by Claude Code
27
- Native CLI integration. Real-time streaming. File attachments. Full persistence. All the power, none of the friction.
11
+ | Feature | Benefit |
12
+ |---------|---------|
13
+ | 🌍 **Work Everywhere** | SQLite-based local storageβ€”no cloud dependency, works offline anywhere |
14
+ | ⚑ **Consistent Performance** | Lightweight footprint, instant startup, responsive UI on any connection |
15
+ | 🎯 **Unique Workflow** | Conversation checkpointsβ€”rewind, branch, and continue at any point |
16
+ | ✨ **Intuitive Management** | Drag-and-drop Kanban, live streaming, file browser with Git status |
17
+ | πŸ”Œ **Flexible Plugins** | Agent Factoryβ€”install only the skills and agents your project needs |
18
+ | πŸ”‹ **Claude Code Native** | Full CLI integration with real-time streaming and file attachments |
28
19
 
29
20
  ---
30
21
 
31
22
  ## Features
32
23
 
33
- | Feature | Description |
34
- |---------|-------------|
35
- | **Task Board** | Drag-and-drop tasks: To Do β†’ In Progress β†’ In Review β†’ Done |
36
- | **Real-time Streaming** | Watch Claude's responses stream live via Socket.io |
37
- | **Checkpoints** | Save conversation states, rewind to any point |
38
- | **Conversation History** | Full attempt logs with ability to continue or branch |
39
- | **File Browser** | Integrated explorer with search, preview, git status |
40
- | **Git Integration** | View diffs, commits, and perform git operations |
41
- | **File Attachments** | Attach files to provide context for prompts |
42
- | **Multi-Project** | Manage multiple workspaces with separate boards |
43
- | **Agent Factory** | Discover and manage Claude skills, commands, agents |
44
- | **Themes** | Light, Dark, VS Code Light/Dark, Dracula |
24
+ **Task Management**
25
+ - Kanban board: To Do β†’ In Progress β†’ In Review β†’ Done β†’ Cancelled
26
+ - Drag-and-drop task cards with auto-save
27
+ - Full conversation history per task
28
+
29
+ **AI Interaction**
30
+ - Real-time streaming of Claude responses via Socket.io
31
+ - Checkpoints: Save and rewind to any conversation state
32
+ - File attachments for context
33
+ - Custom commands: `/cook`, `/plan`, `/fix`, `/brainstorm`
34
+ - Detachable chat window
35
+
36
+ **Code Editor**
37
+ - Tabbed CodeMirror editor with syntax highlighting
38
+ - AI-powered inline code suggestions
39
+ - Go-to-definition navigation
40
+ - Multi-file editing
41
+
42
+ **File System**
43
+ - Interactive file tree browser
44
+ - Unified search (files + content)
45
+ - File preview
46
+
47
+ **Git Integration**
48
+ - Full Git workflow: status, stage, commit, diff
49
+ - Visual Git graph
50
+ - Checkpoint Git snapshots for time-travel debugging
51
+
52
+ **Agent Factory**
53
+ - Plugin system for Claude skills, commands, agents
54
+ - Dependency management
55
+ - Per-project plugin installation
56
+
57
+ **Developer Tools**
58
+ - Background shell process manager
59
+ - Terminal output streaming
60
+ - Multi-project workspace support
61
+ - Themes: Light, Dark, VS Code variants, Dracula
45
62
 
46
63
  ---
47
64
 
48
65
  ## Quick Start
49
66
 
50
- ### Option 1: Run with npx (Recommended)
67
+ ### Option 1: Run with npx
51
68
 
52
69
  **Prerequisites:** Node.js 20+, pnpm 9+, [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)
53
70
 
54
71
  ```bash
55
- npx claudews
72
+ npx -y claude-ws
56
73
  ```
57
74
 
75
+ The `-y` flag skips the "Ok to proceed?" prompt.
76
+
58
77
  The first run will:
59
78
  - Auto-create SQLite database in `~/.claude-ws/`
60
- - Run migrations automatically
79
+ - Install dependencies and build automatically
61
80
  - Start the server on http://localhost:8556
62
81
 
63
- ### Option 2: Install globally
82
+ ### Option 2: Install globally (Recommended)
64
83
 
65
84
  ```bash
66
- npm install -g claudews
67
- claudews
85
+ npm install -g claude-ws
86
+ claude-ws
68
87
  ```
69
88
 
89
+ Global installation avoids npx prompts and rebuilding on every run.
90
+
70
91
  ### Option 3: Development from source
71
92
 
72
93
  ```bash
@@ -81,6 +102,25 @@ Open [http://localhost:8556](http://localhost:8556)
81
102
 
82
103
  ---
83
104
 
105
+ ## Updating
106
+
107
+ ### Check current version
108
+ ```bash
109
+ claude-ws --version
110
+ ```
111
+
112
+ ### Update to latest version
113
+ ```bash
114
+ npm update -g claude-ws
115
+ ```
116
+
117
+ ### Force reinstall
118
+ ```bash
119
+ npm install -g claude-ws@latest
120
+ ```
121
+
122
+ ---
123
+
84
124
  ## Tech Stack
85
125
 
86
126
  - **Framework**: Next.js 16 + React 19
@@ -17,6 +17,32 @@ const os = require('os');
17
17
  // Get package root directory
18
18
  const packageRoot = path.resolve(__dirname, '..');
19
19
 
20
+ // Handle CLI flags
21
+ if (process.argv.includes('--version') || process.argv.includes('-v')) {
22
+ const pkg = require(path.join(packageRoot, 'package.json'));
23
+ console.log(`v${pkg.version}`);
24
+ process.exit(0);
25
+ }
26
+
27
+ if (process.argv.includes('--help') || process.argv.includes('-h')) {
28
+ console.log(`
29
+ Claude Workspace - Visual workspace for Claude Code
30
+
31
+ Usage:
32
+ claude-ws [options]
33
+
34
+ Options:
35
+ -v, --version Show version number
36
+ -h, --help Show this help message
37
+
38
+ Examples:
39
+ claude-ws Start Claude Workspace server
40
+
41
+ For more info: https://github.com/Claude-Workspace/claude-ws
42
+ `);
43
+ process.exit(0);
44
+ }
45
+
20
46
  // Database path (in user's home directory for persistence)
21
47
  const DB_DIR = path.join(os.homedir(), '.claude-ws');
22
48
  const DB_PATH = path.join(DB_DIR, 'claude-ws.db');
@@ -35,36 +61,43 @@ async function startServer() {
35
61
 
36
62
  const serverPath = path.join(packageRoot, 'server.ts');
37
63
  const nextBuildDir = path.join(packageRoot, '.next');
64
+ const nodeModulesDir = path.join(packageRoot, 'node_modules');
65
+
66
+ // Check if dependencies are installed
67
+ if (!fs.existsSync(nodeModulesDir) || !fs.existsSync(path.join(nodeModulesDir, 'next'))) {
68
+ console.log('[Claude Workspace] Installing dependencies...');
69
+ const { execSync } = require('child_process');
70
+
71
+ let installCmd = 'npm install --production=false';
72
+ try {
73
+ execSync('which pnpm', { stdio: 'ignore' });
74
+ installCmd = 'pnpm install --no-frozen-lockfile';
75
+ } catch {
76
+ // pnpm not found, use npm
77
+ }
78
+
79
+ try {
80
+ execSync(installCmd, {
81
+ cwd: packageRoot,
82
+ stdio: 'inherit',
83
+ env: { ...process.env }
84
+ });
85
+ } catch (error) {
86
+ console.error('[Claude Workspace] Failed to install dependencies:', error.message);
87
+ process.exit(1);
88
+ }
89
+ }
38
90
 
39
91
  // Check if .next directory exists, if not, build it first
40
92
  if (!fs.existsSync(nextBuildDir)) {
41
- console.log('[Claude Workspace] First run detected - building production bundle...');
93
+ console.log('[Claude Workspace] Building production bundle...');
42
94
  console.log('[Claude Workspace] This may take a minute...');
43
95
  console.log('');
44
96
 
45
97
  const { execSync } = require('child_process');
46
98
  try {
47
- // Use local next binary directly to avoid module singleton conflicts
48
- // when running via npx (which fetches from registry)
49
99
  const nextBin = path.join(packageRoot, 'node_modules', '.bin', 'next');
50
100
 
51
- if (!fs.existsSync(nextBin)) {
52
- // Dependencies not installed, install them first
53
- console.log('[Claude Workspace] Installing dependencies...');
54
- let installCmd = 'npm install --production=false';
55
- try {
56
- execSync('which pnpm', { stdio: 'ignore' });
57
- installCmd = 'pnpm install';
58
- } catch {
59
- // pnpm not found, use npm
60
- }
61
- execSync(installCmd, {
62
- cwd: packageRoot,
63
- stdio: 'inherit',
64
- env: { ...process.env }
65
- });
66
- }
67
-
68
101
  // Run next build using local binary directly
69
102
  execSync(`"${nextBin}" build`, {
70
103
  cwd: packageRoot,
@@ -84,6 +117,8 @@ async function startServer() {
84
117
  console.error('[Claude Workspace] Please ensure all dependencies are installed');
85
118
  process.exit(1);
86
119
  }
120
+ } else {
121
+ console.log('[Claude Workspace] Using cached build from:', nextBuildDir);
87
122
  }
88
123
 
89
124
  // Try to find tsx binary in different possible locations
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-ws",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "private": false,
5
5
  "description": "A beautifully crafted workspace interface for Claude Code with real-time streaming and local SQLite database",
6
6
  "keywords": [
@@ -65,7 +65,8 @@
65
65
  "version:patch": "npm version patch --no-git-tag-version",
66
66
  "version:minor": "npm version minor --no-git-tag-version",
67
67
  "version:major": "npm version major --no-git-tag-version",
68
- "publish:npm": "pnpm run build && npm publish --access public"
68
+ "prepublishOnly": "pnpm run build",
69
+ "publish:npm": "npm publish --access public"
69
70
  },
70
71
  "dependencies": {
71
72
  "@anthropic-ai/claude-agent-sdk": "^0.2.5",
@@ -144,4 +145,4 @@
144
145
  "typescript": "^5"
145
146
  },
146
147
  "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48"
147
- }
148
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Check for available updates on npm registry
3
+ * Shows notification if newer version available
4
+ */
5
+
6
+ import { execSync } from 'child_process';
7
+ import { readFileSync } from 'fs';
8
+ import { join } from 'path';
9
+
10
+ export async function checkForUpdates() {
11
+ try {
12
+ const pkgPath = join(process.cwd(), 'package.json');
13
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
14
+ const currentVersion = pkg.version;
15
+
16
+ // Quick check - don't block startup
17
+ const latestVersion = execSync('npm show claude-ws version', {
18
+ encoding: 'utf-8',
19
+ timeout: 3000,
20
+ stdio: ['pipe', 'pipe', 'ignore'], // Suppress errors
21
+ }).trim();
22
+
23
+ if (latestVersion && latestVersion !== currentVersion) {
24
+ console.log('');
25
+ console.log('\x1b[33m%s\x1b[0m', 'β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”');
26
+ console.log('\x1b[33m%s\x1b[0m', 'β”‚ Update available! β”‚');
27
+ console.log('\x1b[33m%s\x1b[0m', `β”‚ ${currentVersion} β†’ ${latestVersion} β”‚`);
28
+ console.log('\x1b[33m%s\x1b[0m', 'β”‚ Run: npm update -g claude-ws β”‚');
29
+ console.log('\x1b[33m%s\x1b[0m', 'β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜');
30
+ console.log('');
31
+ }
32
+ } catch (error) {
33
+ // Silently fail - don't block startup for update check
34
+ }
35
+ }