diff --git a/CHANGELOG.md b/CHANGELOG.md index 62b2320..05eb749 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/). +## [Unreleased] + +### Added + +- Message editing & checkpoint restore +- Reasoning / thinking display +- Shell command execution +- File changes diff view +- Session fork +- Child session navigation (subtask) +- Agent mention (`@` mention) +- Session sharing +- Undo / Redo +- Settings panel +- Keyboard navigation for inline popups (Tab / Arrow keys) + +### Changed + +- Replace hardcoded SVG icons with react-icons/vsc + ## [0.1.0] - 2026-02-24 ### Added @@ -19,3 +39,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/). - Context compression indicator - Todo display - i18n support (English, Japanese) + +[Unreleased]: https://github.com/ktmage/OpenCodeGUI/compare/v0.1.0...HEAD +[0.1.0]: https://github.com/ktmage/OpenCodeGUI/releases/tag/v0.1.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9a1610a..0736a9b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ This project itself is developed primarily through AI-assisted coding, and we we - Node.js v22+ - npm -- [OpenCode](https://github.com/opencode-ai/opencode) installed with LLM provider authentication configured +- [OpenCode](https://github.com/anomalyco/opencode) installed with LLM provider authentication configured #### Setup @@ -75,7 +75,12 @@ npm run check:fix ### Testing -When your change affects behavior, add or update scenario tests. Follow the existing test patterns in `webview/__tests__/scenarios/`. +When your change affects behavior, add or update tests. Follow existing test patterns: + +- **Scenario tests:** `webview/__tests__/scenarios/` +- **Component unit tests:** `webview/__tests__/components/` +- **Hook unit tests:** `webview/__tests__/hooks/` +- **Utility tests:** `webview/__tests__/utils/` ### Review Process @@ -102,7 +107,7 @@ By submitting a pull request, you agree that your contributions are licensed und - Node.js v22+ - npm -- [OpenCode](https://github.com/opencode-ai/opencode) がインストール済みで、LLM プロバイダの認証が完了していること +- [OpenCode](https://github.com/anomalyco/opencode) がインストール済みで、LLM プロバイダの認証が完了していること #### セットアップ @@ -153,7 +158,12 @@ npm run check:fix ### テスト -動作に影響する変更の場合は、シナリオテストを追加・更新してください。`webview/__tests__/scenarios/` にある既存のテストパターンに習って書いてください。 +動作に影響する変更の場合は、テストを追加・更新してください。既存のテストパターンに習って書いてください: + +- **シナリオテスト:** `webview/__tests__/scenarios/` +- **コンポーネント単体テスト:** `webview/__tests__/components/` +- **フック単体テスト:** `webview/__tests__/hooks/` +- **ユーティリティテスト:** `webview/__tests__/utils/` ### レビュー体制 diff --git a/README.md b/README.md index 2541c02..3432cca 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # OpenCodeGUI -An unofficial VS Code sidebar chat interface for [OpenCode](https://github.com/opencode-ai/opencode). +An unofficial VS Code sidebar chat interface for [OpenCode](https://github.com/anomalyco/opencode). OpenCode の非公式 VS Code サイドバーチャットインターフェース。 @@ -37,16 +37,25 @@ Use all OpenCode features from a familiar sidebar chat UI. - Markdown rendering - Tool call collapsible display - Permission approval UI (Allow / Once / Deny) -- Session management (create, switch, delete) +- Session management (create, switch, fork, delete) +- Message editing & checkpoint restore - Model selection - File context attachment +- File changes diff view +- Shell command execution - Context compression indicator +- Reasoning / thinking display - Todo display +- Undo / Redo +- Session sharing +- Agent mention (`@` mention) +- Child session navigation (subtask) +- Settings panel - i18n support (English, Japanese) ### Requirements -- [OpenCode](https://github.com/opencode-ai/opencode) installed +- [OpenCode](https://github.com/anomalyco/opencode) installed - LLM provider authentication configured in OpenCode ### Installation @@ -118,6 +127,11 @@ webview/ # Webview (Browser, React) vscode-api.ts # VS Code Webview API wrapper styles.css # Styles using VS Code theme variables components/ # React components + hooks/ # Custom React hooks + contexts/ # React Context providers + locales/ # i18n locale files + utils/ # Utility functions + __tests__/ # Tests (unit, scenario) dist/ # Build output (not tracked by git) extension.js # Extension bundle @@ -163,16 +177,25 @@ OpenCode の全機能をサイドバーのチャット UI から操作できま - Markdown レンダリング - ツールコールの折りたたみ表示 - パーミッション承認 UI(Allow / Once / Deny) -- セッション管理(作成、切替、削除) +- セッション管理(作成、切替、フォーク、削除) +- メッセージ編集とチェックポイント復元 - モデル選択 - ファイルコンテキスト添付 +- ファイル変更差分表示 +- シェルコマンド実行 - コンテキスト圧縮インジケーター +- 推論(思考過程)表示 - Todo 表示 +- Undo / Redo +- セッション共有 +- エージェントメンション(`@` メンション) +- 子セッションナビゲーション(サブタスク) +- 設定パネル - 多言語対応(英語、日本語) ### 必要条件 -- [OpenCode](https://github.com/opencode-ai/opencode) がインストール済みであること +- [OpenCode](https://github.com/anomalyco/opencode) がインストール済みであること - OpenCode 側で LLM プロバイダの認証が完了していること ### インストール @@ -238,16 +261,17 @@ src/ # Extension Host (Node.js) opencode-client.ts # OpenCode サーバー接続 chat-view-provider.ts # Webview パネル & メッセージングプロトコル -webview/ # Webview (ブラウザ, React) +webview/ # Webview (Browser, React) main.tsx # React エントリーポイント App.tsx # 状態管理 & SSE イベントハンドリング vscode-api.ts # VS Code Webview API ラッパー styles.css # VS Code テーマ変数を使ったスタイル components/ # React コンポーネント - -dist/ # ビルド出力(git 管理外) - extension.js # Extension バンドル - webview/ # Webview バンドル + hooks/ # カスタム React フック + contexts/ # React Context プロバイダー + locales/ # i18n ロケールファイル + utils/ # ユーティリティ関数 + __tests__/ # テスト(単体、シナリオ) esbuild.mjs # Extension ビルド設定 vite.config.ts # Webview ビルド設定 diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index b834a50..90c88ea 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -143,3 +143,35 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +## react-icons (VS Code Icons subset) + +- **Version:** 5.5.0 +- **License:** MIT +- **Source:** https://github.com/react-icons/react-icons + +Copyright 2018 kamijin_fanta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +This project uses only the VS Code Icons (vsc prefix) from react-icons. +VS Code Icons are sourced from [vscode-codicons](https://github.com/microsoft/vscode-codicons) +and licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). diff --git a/package-lock.json b/package-lock.json index 0f68f61..2cbb088 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "@opencode-ai/sdk": "^1.2.10", - "@types/dompurify": "^3.0.5", "dompurify": "^3.3.1", "react-icons": "^5.5.0" }, @@ -19,6 +18,7 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", + "@types/dompurify": "^3.0.5", "@types/node": "^22.0.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", @@ -2252,6 +2252,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, "license": "MIT", "dependencies": { "@types/trusted-types": "*" @@ -2315,6 +2316,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/vscode": { diff --git a/package.json b/package.json index d0d9c48..56439cd 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", + "@types/dompurify": "^3.0.5", "@types/node": "^22.0.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", @@ -92,7 +93,6 @@ }, "dependencies": { "@opencode-ai/sdk": "^1.2.10", - "@types/dompurify": "^3.0.5", "dompurify": "^3.3.1", "react-icons": "^5.5.0" } diff --git a/src/extension.ts b/src/extension.ts index 99fcb72..9b4a022 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -28,7 +28,7 @@ export async function activate(context: vscode.ExtensionContext) { if (isNotFound) { vscode.window.showWarningMessage( vscode.l10n.t( - 'OpenCodeGUI: "opencode" command not found. Please install OpenCode first: https://github.com/opencode-ai/opencode', + 'OpenCodeGUI: "opencode" command not found. Please install OpenCode first: https://github.com/anomalyco/opencode', ), ); return;