mirror of
https://github.com/andrepimenta/claude-code-chat.git
synced 2025-12-09 19:09:50 +00:00
Init
This commit is contained in:
13
.claude/settings.local.json
Normal file
13
.claude/settings.local.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(npm run compile:*)",
|
||||
"Bash(grep:*)",
|
||||
"Bash(sed:*)",
|
||||
"Bash(rg:*)",
|
||||
"Bash(npx tsc:*)"
|
||||
],
|
||||
"deny": []
|
||||
},
|
||||
"enableAllProjectMcpServers": false
|
||||
}
|
||||
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
out
|
||||
dist
|
||||
node_modules
|
||||
.vscode-test/
|
||||
*.vsix
|
||||
backup
|
||||
5
.vscode-test.mjs
Normal file
5
.vscode-test.mjs
Normal file
@@ -0,0 +1,5 @@
|
||||
import { defineConfig } from '@vscode/test-cli';
|
||||
|
||||
export default defineConfig({
|
||||
files: 'out/test/**/*.test.js',
|
||||
});
|
||||
8
.vscode/extensions.json
vendored
Normal file
8
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||
// for the documentation about the extensions.json format
|
||||
"recommendations": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"ms-vscode.extension-test-runner"
|
||||
]
|
||||
}
|
||||
21
.vscode/launch.json
vendored
Normal file
21
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
// A launch configuration that compiles the extension and then opens it inside a new window
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Run Extension",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"args": [
|
||||
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||
],
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/out/**/*.js"
|
||||
],
|
||||
"preLaunchTask": "${defaultBuildTask}"
|
||||
}
|
||||
]
|
||||
}
|
||||
11
.vscode/settings.json
vendored
Normal file
11
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"files.exclude": {
|
||||
"out": false // set this to true to hide the "out" folder with the compiled JS files
|
||||
},
|
||||
"search.exclude": {
|
||||
"out": true // set this to false to include "out" folder in search results
|
||||
},
|
||||
// Turn off tsc task auto detection since we have the necessary tasks as npm scripts
|
||||
"typescript.tsc.autoDetect": "off"
|
||||
}
|
||||
20
.vscode/tasks.json
vendored
Normal file
20
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "npm",
|
||||
"script": "watch",
|
||||
"problemMatcher": "$tsc-watch",
|
||||
"isBackground": true,
|
||||
"presentation": {
|
||||
"reveal": "never"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
11
.vscodeignore
Normal file
11
.vscodeignore
Normal file
@@ -0,0 +1,11 @@
|
||||
.vscode/**
|
||||
.vscode-test/**
|
||||
src/**
|
||||
.gitignore
|
||||
.yarnrc
|
||||
vsc-extension-quickstart.md
|
||||
**/tsconfig.json
|
||||
**/eslint.config.mjs
|
||||
**/*.map
|
||||
**/*.ts
|
||||
**/.vscode-test.*
|
||||
9
CHANGELOG.md
Normal file
9
CHANGELOG.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Change Log
|
||||
|
||||
All notable changes to the "claude-code-chat" extension will be documented in this file.
|
||||
|
||||
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
- Initial release
|
||||
261
README.md
Normal file
261
README.md
Normal file
@@ -0,0 +1,261 @@
|
||||
# 🚀 Claude Code Chat - Beautiful Claude Code Chat Interface for VS Code
|
||||
|
||||
[](https://marketplace.visualstudio.com/items?itemName=your-extension-id)
|
||||
[](https://claude.ai/code)
|
||||
[](https://www.typescriptlang.org/)
|
||||
|
||||
> **No more terminal commands. Chat with Claude Code through a beautiful, intuitive interface right inside VS Code.**
|
||||
|
||||
Ditch the command line and experience Claude Code like never before. This extension brings a stunning chat interface directly into your editor, making AI assistance accessible, visual, and enjoyable.
|
||||
|
||||
🤖 **Built by Claude Code for Claude Code** - This extension was entirely developed using Claude Code itself. Claude Code created its own chat interface!
|
||||
|
||||
---
|
||||
|
||||
## ✨ **Why Choose Claude Code Chat?**
|
||||
|
||||
🖥️ **No Terminal Required** - Beautiful chat interface replaces command-line interactions
|
||||
⏪ **Restore Checkpoints** - Undo changes and restore code to any previous state
|
||||
💾 **Conversation History** - Automatic conversation history and session management
|
||||
⚡ **Instant Access** - Claude Code integrated directly into VS Code
|
||||
🎨 **VS Code Native** - Seamlessly matches your editor's theme and design
|
||||
📁 **Smart File Context** - Reference any file with simple @ mentions
|
||||
🛑 **Full Control** - Start, stop, and manage AI processes with ease
|
||||
|
||||
---
|
||||
|
||||
## 🌟 **Key Features**
|
||||
|
||||
### 💬 **Beautiful Chat Graphical Interface**
|
||||
- No terminal required - everything through the UI
|
||||
- Real-time streaming responses with typing indicators
|
||||
- One-click message copying with visual feedback
|
||||
- Rich markdown support for code blocks and formatting
|
||||
- Auto-resizing input that grows with your content
|
||||
|
||||
### ⏪ **Checkpoint & Session Management**
|
||||
- **Restore Checkpoints** - Instantly undo changes and restore to any previous state
|
||||
- Automatic Git-based backup system for safe experimentation
|
||||
- Browse and restore from any conversation checkpoint
|
||||
- Automatic conversation saving and restoration
|
||||
- Real-time cost and token tracking
|
||||
- Session statistics and performance metrics
|
||||
|
||||
### 📁 **Smart File Integration**
|
||||
- Type `@` to instantly search and reference workspace files
|
||||
- Image attachments via file browser
|
||||
- Lightning-fast file search across your entire project
|
||||
- Seamless context preservation for multi-file discussions
|
||||
|
||||
### 🛠️ **Tool Management**
|
||||
- Visual dashboard showing all available Claude Code tools
|
||||
- Real-time tool execution with formatted results
|
||||
- Process control - start, stop, and monitor operations
|
||||
|
||||
### 🎨 **VS Code Integration**
|
||||
- Native theming that matches your editor
|
||||
- Status bar integration with connection status
|
||||
- Activity bar panel for quick access
|
||||
- Responsive design for any screen size
|
||||
|
||||
---
|
||||
|
||||
## 🚀 **Getting Started**
|
||||
|
||||
### Prerequisites
|
||||
- **VS Code 1.80+** - Latest version recommended
|
||||
- **Claude Code CLI** - [Install from Anthropic](https://claude.ai/code)
|
||||
- **Active Claude API or subscription** - API or Pro/Max plan
|
||||
|
||||
### Installation
|
||||
|
||||
1. **Install from VS Code Marketplace**
|
||||
```
|
||||
ext install claude-code-chat
|
||||
```
|
||||
|
||||
2. **Or install manually**
|
||||
- Download the `.vsix` file from releases
|
||||
- Run `code --install-extension claude-code-chat-x.x.x.vsix`
|
||||
|
||||
3. **Open Claude Code Chat**
|
||||
- Press `Ctrl+Shift+C` (or `Cmd+Shift+C` on Mac)
|
||||
- Or click the Claude icon in your status bar
|
||||
- Or use Command Palette: `Claude Code: Open Chat`
|
||||
|
||||
---
|
||||
|
||||
## 💡 **Usage Examples**
|
||||
|
||||
### 🔥 **Code Review & Refactoring**
|
||||
```
|
||||
You: @src/components/UserProfile.tsx Can you review this component and suggest improvements?
|
||||
|
||||
Claude: I'll analyze your UserProfile component. Looking at the code, here are my recommendations:
|
||||
|
||||
1. **Performance Optimization**: Add React.memo() to prevent unnecessary re-renders
|
||||
2. **TypeScript Enhancement**: The props interface could be more specific
|
||||
3. **Accessibility**: Missing ARIA labels for screen readers
|
||||
|
||||
[Detailed analysis with code examples follows...]
|
||||
```
|
||||
|
||||
### 📊 **Project Analysis**
|
||||
```
|
||||
You: Analyze the overall architecture of my project and identify potential issues
|
||||
|
||||
Claude: I'll examine your project structure and identify areas for improvement:
|
||||
|
||||
🏗️ **Architecture Overview**
|
||||
- React frontend with TypeScript
|
||||
- Node.js backend with Express
|
||||
- MongoDB database layer
|
||||
|
||||
⚠️ **Identified Issues**
|
||||
- Missing error boundaries in React components
|
||||
- Database queries lack proper indexing
|
||||
- API routes missing input validation
|
||||
|
||||
[Detailed recommendations with implementation examples...]
|
||||
```
|
||||
|
||||
### 🐛 **Debugging Assistant**
|
||||
```
|
||||
You: I'm getting a strange error in my API. Here's the stack trace: [paste error]
|
||||
|
||||
Claude: Looking at this stack trace, the issue appears to be a race condition in your async middleware. Here's what's happening:
|
||||
|
||||
1. **Root Cause**: Multiple requests are modifying shared state
|
||||
2. **Solution**: Implement proper request isolation
|
||||
3. **Prevention**: Add comprehensive error handling
|
||||
|
||||
[Step-by-step debugging guide follows...]
|
||||
```
|
||||
|
||||
### ⏪ **Safe Experimentation with Checkpoints**
|
||||
```
|
||||
You: Can you refactor this entire component to use hooks instead of class components?
|
||||
|
||||
Claude: I'll refactor your component to use React hooks. Don't worry - I'll create a checkpoint first so you can easily restore if needed.
|
||||
|
||||
[Creates automatic checkpoint]
|
||||
|
||||
Here's the refactored component using hooks:
|
||||
[Shows the new implementation]
|
||||
|
||||
If you want to revert these changes, just click "Restore Checkpoint" to go back to your original code instantly.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ **Configuration**
|
||||
|
||||
### Keyboard Shortcuts
|
||||
| Shortcut | Action |
|
||||
|----------|--------|
|
||||
| `Ctrl+Shift+C` | Open Claude Code Chat |
|
||||
| `Ctrl+Enter` | Send message |
|
||||
| `@` | Open file picker |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **Pro Tips & Tricks**
|
||||
|
||||
### 🔥 **File Context Magic**
|
||||
- Type `@` followed by your search term to quickly reference files
|
||||
- Use `@src/` to narrow down to specific directories
|
||||
- Reference multiple files in one message for cross-file analysis
|
||||
|
||||
### ⚡ **Productivity Boosters**
|
||||
- **Creates checkpoints automatically** before changes for safe experimentation
|
||||
- **Restore instantly** if changes don't work out as expected
|
||||
- Use the stop button to cancel long-running operations
|
||||
- Copy message contents to reuse Claude's responses
|
||||
- Open history panel to reference previous conversations
|
||||
|
||||
### 🎨 **Interface Customization**
|
||||
- The UI automatically adapts to your VS Code theme
|
||||
- Messages are color-coded: Green for you, Blue for Claude
|
||||
- Hover over messages to reveal the copy button
|
||||
|
||||
---
|
||||
|
||||
## 🔧 **Advanced Features**
|
||||
|
||||
### 🛠️ **Tool Integration**
|
||||
Claude Code Chat provides full access to all Claude Code tools:
|
||||
- **Bash** - Execute shell commands
|
||||
- **File Operations** - Read, write, and edit files
|
||||
- **Search** - Grep and glob pattern matching
|
||||
- **Web** - Fetch and search web content
|
||||
- **Multi-edit** - Batch file modifications
|
||||
- **While in Beta, all tools are enabled by default, use at your own risk!**
|
||||
|
||||
### 📊 **Analytics & Monitoring**
|
||||
- **Real-time cost tracking** - Monitor your API usage
|
||||
- **Token consumption** - See input/output token counts
|
||||
- **Response timing** - Track performance metrics
|
||||
- **Session statistics** - Comprehensive usage analytics
|
||||
|
||||
### ⏪ **Checkpoint System**
|
||||
- **Git-based backups** - Automatic repository creation for safe experimentation
|
||||
- **Instant restoration** - One-click restore to any previous state
|
||||
- **Conversation checkpoints** - Every major change creates a restore point
|
||||
- **Visual timeline** - See and navigate through all your project states
|
||||
|
||||
### 🔄 **Session Persistence**
|
||||
- **Automatic saving** - Every conversation is preserved
|
||||
- **Smart restoration** - Resume exactly where you left off
|
||||
- **Cross-session context** - Reference previous conversations
|
||||
- **Export capability** - Save conversations for later reference
|
||||
|
||||
---
|
||||
|
||||
## 🤝 **Contributing**
|
||||
|
||||
We welcome contributions! Here's how you can help:
|
||||
|
||||
1. **🐛 Report Bugs** - Use our issue tracker
|
||||
2. **💡 Suggest Features** - Share your ideas
|
||||
3. **🔧 Submit PRs** - Help us improve the codebase
|
||||
4. **📚 Improve Docs** - Make the documentation better
|
||||
|
||||
### Development Setup
|
||||
```bash
|
||||
git clone https://github.com/your-repo/claude-code-chat
|
||||
cd claude-code-chat
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 **License**
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
---
|
||||
|
||||
## 🙏 **Acknowledgments**
|
||||
|
||||
- **Anthropic** - For creating the amazing Claude AI
|
||||
- **VS Code Team** - For the incredible extension platform
|
||||
- **Our Community** - For feedback, suggestions, and contributions
|
||||
|
||||
---
|
||||
|
||||
## 📞 **Support**
|
||||
|
||||
Need help? We've got you covered:
|
||||
|
||||
- 🐛 **Issues**: [GitHub Issues](https://github.com/your-repo/claude-code-chat/issues)
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
**⭐ Star us on GitHub if this project helped you!**
|
||||
|
||||
[**Download Now**](https://marketplace.visualstudio.com/items?itemName=your-extension-id)
|
||||
|
||||
</div>
|
||||
28
eslint.config.mjs
Normal file
28
eslint.config.mjs
Normal file
@@ -0,0 +1,28 @@
|
||||
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
||||
import tsParser from "@typescript-eslint/parser";
|
||||
|
||||
export default [{
|
||||
files: ["**/*.ts"],
|
||||
}, {
|
||||
plugins: {
|
||||
"@typescript-eslint": typescriptEslint,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
parser: tsParser,
|
||||
ecmaVersion: 2022,
|
||||
sourceType: "module",
|
||||
},
|
||||
|
||||
rules: {
|
||||
"@typescript-eslint/naming-convention": ["warn", {
|
||||
selector: "import",
|
||||
format: ["camelCase", "PascalCase"],
|
||||
}],
|
||||
|
||||
curly: "warn",
|
||||
eqeqeq: "warn",
|
||||
"no-throw-literal": "warn",
|
||||
semi: "warn",
|
||||
},
|
||||
}];
|
||||
3445
package-lock.json
generated
Normal file
3445
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
130
package.json
Normal file
130
package.json
Normal file
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"name": "claude-code-chat",
|
||||
"displayName": "claude-code-chat",
|
||||
"description": "Beautiful Claude Code Chat Interface for VS Code",
|
||||
"version": "0.0.1",
|
||||
"engines": {
|
||||
"vscode": "^1.100.0"
|
||||
},
|
||||
"categories": [
|
||||
"Other"
|
||||
],
|
||||
"icon": "icon.png",
|
||||
"main": "./out/extension.js",
|
||||
"contributes": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"title": "Open Claude Code Chat",
|
||||
"category": "Claude Code Chat",
|
||||
"icon": "icon.png"
|
||||
}
|
||||
],
|
||||
"keybindings": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"key": "ctrl+shift+c",
|
||||
"mac": "cmd+shift+c"
|
||||
}
|
||||
],
|
||||
"menus": {
|
||||
"commandPalette": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat"
|
||||
}
|
||||
],
|
||||
"editor/context": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "claude@1",
|
||||
"when": "editorTextFocus"
|
||||
}
|
||||
],
|
||||
"editor/title": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "navigation@1",
|
||||
"when": "true"
|
||||
}
|
||||
],
|
||||
"editor/title/context": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "claude@1"
|
||||
}
|
||||
],
|
||||
"explorer/context": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "claude@1"
|
||||
}
|
||||
],
|
||||
"scm/title": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "navigation@1",
|
||||
"when": "true"
|
||||
}
|
||||
],
|
||||
"view/title": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "navigation@1",
|
||||
"when": "view == workbench.explorer.fileView"
|
||||
}
|
||||
],
|
||||
"touchBar": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "editing",
|
||||
"when": "true"
|
||||
}
|
||||
],
|
||||
"menuBar/file": [
|
||||
{
|
||||
"command": "claude-code-chat.openChat",
|
||||
"group": "1_new@1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"views": {
|
||||
"claude-code-chat": [
|
||||
{
|
||||
"id": "claude-code-chat.chat",
|
||||
"name": "Claude Code Chat",
|
||||
"when": "true",
|
||||
"icon": "icon.png",
|
||||
"contextualTitle": "Claude Code Chat"
|
||||
}
|
||||
]
|
||||
},
|
||||
"viewsContainers": {
|
||||
"activitybar": [
|
||||
{
|
||||
"id": "claude-code-chat",
|
||||
"title": "Claude Code Chat",
|
||||
"icon": "icon.png"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"vscode:prepublish": "npm run compile",
|
||||
"compile": "tsc -p ./",
|
||||
"watch": "tsc -watch -p ./",
|
||||
"pretest": "npm run compile && npm run lint",
|
||||
"lint": "eslint src",
|
||||
"test": "vscode-test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/vscode": "^1.100.0",
|
||||
"@types/mocha": "^10.0.10",
|
||||
"@types/node": "20.x",
|
||||
"@typescript-eslint/eslint-plugin": "^8.31.1",
|
||||
"@typescript-eslint/parser": "^8.31.1",
|
||||
"eslint": "^9.25.1",
|
||||
"typescript": "^5.8.3",
|
||||
"@vscode/test-cli": "^0.0.10",
|
||||
"@vscode/test-electron": "^2.5.2"
|
||||
}
|
||||
}
|
||||
3372
src/extension.ts
Normal file
3372
src/extension.ts
Normal file
File diff suppressed because it is too large
Load Diff
15
src/test/extension.test.ts
Normal file
15
src/test/extension.test.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import * as assert from 'assert';
|
||||
|
||||
// You can import and use all API from the 'vscode' module
|
||||
// as well as import your extension to test it
|
||||
import * as vscode from 'vscode';
|
||||
// import * as myExtension from '../../extension';
|
||||
|
||||
suite('Extension Test Suite', () => {
|
||||
vscode.window.showInformationMessage('Start all tests.');
|
||||
|
||||
test('Sample test', () => {
|
||||
assert.strictEqual(-1, [1, 2, 3].indexOf(5));
|
||||
assert.strictEqual(-1, [1, 2, 3].indexOf(0));
|
||||
});
|
||||
});
|
||||
17
tsconfig.json
Normal file
17
tsconfig.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "Node16",
|
||||
"target": "ES2022",
|
||||
"outDir": "out",
|
||||
"lib": [
|
||||
"ES2022"
|
||||
],
|
||||
"sourceMap": true,
|
||||
"rootDir": "src",
|
||||
"strict": true, /* enable all strict type-checking options */
|
||||
/* Additional Checks */
|
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||
}
|
||||
}
|
||||
44
vsc-extension-quickstart.md
Normal file
44
vsc-extension-quickstart.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Welcome to your VS Code Extension
|
||||
|
||||
## What's in the folder
|
||||
|
||||
* This folder contains all of the files necessary for your extension.
|
||||
* `package.json` - this is the manifest file in which you declare your extension and command.
|
||||
* The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin.
|
||||
* `src/extension.ts` - this is the main file where you will provide the implementation of your command.
|
||||
* The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`.
|
||||
* We pass the function containing the implementation of the command as the second parameter to `registerCommand`.
|
||||
|
||||
## Get up and running straight away
|
||||
|
||||
* Press `F5` to open a new window with your extension loaded.
|
||||
* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`.
|
||||
* Set breakpoints in your code inside `src/extension.ts` to debug your extension.
|
||||
* Find output from your extension in the debug console.
|
||||
|
||||
## Make changes
|
||||
|
||||
* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`.
|
||||
* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.
|
||||
|
||||
## Explore the API
|
||||
|
||||
* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`.
|
||||
|
||||
## Run tests
|
||||
|
||||
* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner)
|
||||
* Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered.
|
||||
* Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A`
|
||||
* See the output of the test result in the Test Results view.
|
||||
* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder.
|
||||
* The provided test runner will only consider files matching the name pattern `**.test.ts`.
|
||||
* You can create folders inside the `test` folder to structure your tests any way you want.
|
||||
|
||||
## Go further
|
||||
|
||||
* [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns.
|
||||
* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension).
|
||||
* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.
|
||||
* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
|
||||
* Integrate to the [report issue](https://code.visualstudio.com/api/get-started/wrapping-up#issue-reporting) flow to get issue and feature requests reported by users.
|
||||
Reference in New Issue
Block a user