From 4cee5e7286a88779f96f819dbce17c4acae52a9f Mon Sep 17 00:00:00 2001
From: Haile <118998054+blackmammoth@users.noreply.github.com>
Date: Wed, 8 Jul 2026 11:32:32 +0300
Subject: [PATCH] Fix/resolve different bugs (#964)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix: don't overlap thinking banner over conversation
* feat: support message queue and add attention indicator
* fix(shell): use c to copy for claude
* fix: strip timestamp tags from cursor
* fix: select project when loading session from direct URL
* feat: support attached images for all providers
* feat(opencode): support permission options
* fix: resolve source control and chat UX bugs
- make staging real in the git panel: new /stage and /unstage endpoints,
/status now reports the actual index via porcelain -z (handles renames,
conflicts, and paths with spaces), and Stage/Unstage All run real git
commands instead of toggling client-side state
- add branch search to the header dropdown and Branches tab
- persist the chosen permission mode per provider so a brand-new chat
keeps it once the session id arrives, instead of reverting to default
- replace cmdk's fuzzy model search with strict token matching so
"chatgpt" no longer surfaces unrelated models
- unit tests for the git status parser
* feat(git): commit graph in history view and cross-spawn everywhere
- render a VSCode-style commit graph in the source control history:
lane-assignment algorithm, SVG strip with colored rails, merge and
branch curves, commit dots, and branch/tag badges per commit
- /commits returns parents and ref decorations across all branches
(--branches --remotes --tags --topo-order) using unit-separator
fields so pipes in commit subjects can't break parsing
- collect stats via a single --shortstat pass instead of one
`git show --stat` call per commit; raise the history limit to 50
- replace child_process spawn with cross-spawn in all runtimes,
routes, and services: it resolves .cmd shims and PATHEXT on
Windows (fixing taskmaster's npx invocations) and delegates to
native spawn elsewhere, removing the per-file win32 ternaries
- unit tests for the log parser and lane assignment
* fix: remove gemini support since google discontinued it
* fix: address code review findings
- validate chat image attachments server-side: only files inside the
~/.cloudcli/assets upload store may reach provider file reads
- harden asset serving with nosniff and attachment disposition for
SVGs to prevent stored XSS
- show the timestamp on image-only user messages
- serialize git stage/unstage calls and defer the status re-sync so
rapid toggles can't interleave or flicker
- use a literal hex fallback for commit ref badges (alpha suffix on a
var() string produced invalid CSS)
- stop binding a URL session to a guening
project instead
- add the missing attentionRequiredIndicator key to all sidebar locales
- clean up dangling conjunctions left the
de/ru/tr/ja/zh-CN/zh-TW READMEs
* fix: address code scanning findings
- enforce a second image trust boundary in the provider builders:
buildClaudeUserContent/buildCodexInputItems only accept files inside
the upload store or the run's working directory (CodeQL path
injection)
- drop an always-true selectedProject check in handleSubmit
- remove the unused resume option from spawnCursor
* fix: use CodeQL-recognized containment check for image reads
Replace the path.relative guard in isPathInsideDirectory with the
resolve + startsWith(root + sep) idiom so the path-injection barrier
is visible to code scanning; behavior is unchanged.
* fix(security): canonicalize Claude image attachment reads
Resolve image attachment paths with realpath before reading so symlinks
inside allowed roots cannot escape to arbitrary files. Preserve support for
symlinked project/upload roots and add focused coverage for both cases.
* fix: show agent subtask
* fix(sessions): title app-created sessions from the first user message
App-created sessions (started by sending a message from cloudcli) were
titled with placeholder names — "Untitled Codex Session" from the disk
indexer and, briefly, "New session" from the empty canonical upsert —
before a later sync finally settled on the right text, causing the
sidebar title to flicker.
- Codex/OpenCode synchronizers now title app-created sessions (distinct
app id mapped to a provider id) from the first user message, while
sessions found purely by indexing keep their existing setup. Claude
keeps its AI-generated titles; Cursor already used the first message.
- Decode OpenCode's JSON-string-literal prompts so titles no longer
surface wrapped in quotes; hoist unwrapJsonStringLiteral into
shared/utils since it's now used by both the reader and synchronizer.
- Guard the sidebar upsert merge so an empty summary can never blank out
a title that is already set.
- Add codex/opencode synchronizer tests for the app-created vs indexed
naming paths.
* fix(chat): make message queuing reliable across sessions and turn boundaries
Queued messages had four related defects:
- A queued message flashed and then vanished at flush time: concurrent
transcript refreshes (the `complete` handler racing the watcher-triggered
update) could resolve out of order, letting a stale response overwrite
newer server messages after the optimistic row was pruned. Session slots
now carry a monotonic fetch ticket and discard stale fetch/refresh/
fetchMore responses.
- Switching sessions flushed the previous session's queued draft into the
newly viewed one (sending it with the wrong provider's settings, e.g. a
Claude model into a Codex session). The composer flush is now scoped to
its session, and a draft restored into an idle session sends after a
short grace period so a live-run ack can cancel it.
- The thinking banner never appeared for a queued turn: the chat handler's
session-keyed completeRun safety net could fire after a queued message
had already started the session's next run, emitting a spurious
`complete` that killed it. The safety net is now scoped to its own run
via completeRunIfCurrent (with a regression test).
- Queued messages only sent while their session was being viewed. Drafts
now persist their send options (model, effort, permissions) at queue
time, and a new app-level useQueuedMessageAutoSend hook dispatches a
non-viewed session's queued message as soon as its run completes, using
the storage key as the claim ticket to prevent double sends.
---
README.de.md | 33 +-
README.ja.md | 31 +-
README.ko.md | 33 +-
README.md | 37 +-
README.ru.md | 33 +-
README.tr.md | 33 +-
README.zh-CN.md | 33 +-
README.zh-TW.md | 33 +-
docker/README.md | 9 +-
docker/gemini/Dockerfile | 11 -
electron/launcher/launcher.js | 2 +-
eslint.config.js | 2 +-
package-lock.json | 19 +
package.json | 4 +-
public/api-docs.html | 5 +-
public/icons/gemini-ai-icon.svg | 1 -
redirect-package/README.md | 31 +-
redirect-package/package.json | 2 -
server/claude-sdk.js | 142 +---
server/cli.js | 5 +-
server/cursor-cli.js | 25 +-
server/gemini-cli.js | 638 ------------------
server/gemini-response-handler.js | 117 ----
server/index.js | 170 +----
server/modules/assets/assets.routes.ts | 103 +++
server/modules/assets/index.ts | 3 +
.../assets/services/image-assets.service.ts | 82 +++
.../assets/tests/image-assets.service.test.ts | 46 ++
.../browser-use/browser-use.service.ts | 10 +-
.../tests/sessions-provider-mapping.test.ts | 4 +-
.../notification-orchestrator.service.js | 1 -
.../services/project-clone.service.ts | 4 +-
server/modules/providers/README.md | 8 +-
.../list/claude/claude-sessions.provider.ts | 30 +
.../codex-session-synchronizer.provider.ts | 61 +-
.../list/codex/codex-sessions.provider.ts | 42 +-
.../list/cursor/cursor-models.provider.ts | 20 +-
.../cursor-session-synchronizer.provider.ts | 8 +-
.../list/cursor/cursor-sessions.provider.ts | 71 +-
.../list/gemini/gemini-auth.provider.ts | 307 ---------
.../list/gemini/gemini-mcp.provider.ts | 110 ---
.../list/gemini/gemini-models.provider.ts | 39 --
.../gemini-session-synchronizer.provider.ts | 405 -----------
.../list/gemini/gemini-sessions.provider.ts | 540 ---------------
.../list/gemini/gemini-skills.provider.ts | 44 --
.../providers/list/gemini/gemini.provider.ts | 27 -
.../list/opencode/opencode-auth.provider.ts | 1 -
.../list/opencode/opencode-models.provider.ts | 34 +-
.../opencode-session-synchronizer.provider.ts | 29 +-
.../opencode/opencode-sessions.provider.ts | 31 +-
server/modules/providers/provider.registry.ts | 2 -
server/modules/providers/provider.routes.ts | 1 -
.../services/provider-capabilities.service.ts | 21 +-
.../services/provider-models.service.ts | 2 +-
.../session-conversations-search.service.ts | 96 +--
.../services/session-synchronizer.service.ts | 1 -
.../services/sessions-watcher.service.ts | 14 -
.../providers/tests/codex-sessions.test.ts | 111 +++
server/modules/providers/tests/mcp.test.ts | 37 +-
.../providers/tests/opencode-models.test.ts | 7 +
.../providers/tests/opencode-sessions.test.ts | 139 ++++
.../tests/provider-image-history.test.ts | 180 +++++
.../tests/provider-models.service.test.ts | 16 +-
server/modules/providers/tests/skills.test.ts | 45 +-
.../services/chat-run-registry.service.ts | 16 +
.../services/chat-websocket.service.ts | 43 +-
.../services/shell-websocket.service.ts | 12 +-
.../websocket/tests/chat-image-filter.test.ts | 44 ++
.../websocket/tests/chat-run-registry.test.ts | 46 +-
server/openai-codex.js | 10 +-
server/opencode-cli.js | 50 +-
server/opencode-cli.test.js | 115 +++-
server/routes/agent.js | 28 +-
server/routes/commands.js | 3 +-
server/routes/gemini.js | 25 -
server/routes/git.js | 261 +++++--
server/routes/git.test.js | 106 +++
server/routes/taskmaster.js | 4 +-
server/routes/user.js | 3 +-
server/sessionManager.js | 226 -------
server/shared/image-attachments.ts | 341 ++++++++++
server/shared/tests/image-attachments.test.ts | 298 ++++++++
server/shared/types.ts | 2 +-
server/shared/utils.ts | 45 ++
server/utils/gitConfig.js | 3 +-
server/utils/plugin-process-manager.js | 4 +-
src/components/app/AppContent.tsx | 12 +
.../chat/hooks/useChatComposerState.ts | 284 ++++++--
src/components/chat/hooks/useChatMessages.ts | 65 +-
.../chat/hooks/useChatProviderState.ts | 68 +-
.../chat/hooks/useChatSessionState.ts | 3 +
src/components/chat/types/types.ts | 8 +-
src/components/chat/utils/chatStorage.ts | 48 +-
src/components/chat/view/ChatInterface.tsx | 25 +-
.../chat/view/subcomponents/ChatComposer.tsx | 69 +-
.../view/subcomponents/ChatMessageImages.tsx | 180 +++++
.../view/subcomponents/ChatMessagesPane.tsx | 13 +-
.../view/subcomponents/CommandResultModal.tsx | 1 -
.../view/subcomponents/ImageAttachment.tsx | 10 +-
.../view/subcomponents/MessageComponent.tsx | 49 +-
.../ProviderSelectionEmptyState.tsx | 31 +-
.../view/subcomponents/QueuedMessageCard.tsx | 57 ++
.../git-panel/constants/constants.ts | 3 +-
.../git-panel/hooks/useGitPanelController.ts | 67 ++
src/components/git-panel/types/types.ts | 8 +
.../git-panel/utils/commitGraph.test.ts | 83 +++
src/components/git-panel/utils/commitGraph.ts | 138 ++++
src/components/git-panel/view/GitPanel.tsx | 4 +
.../git-panel/view/GitPanelHeader.tsx | 71 +-
.../git-panel/view/branches/BranchesView.tsx | 52 +-
.../git-panel/view/changes/ChangesView.tsx | 79 ++-
.../view/history/CommitGraphStrip.tsx | 95 +++
.../view/history/CommitHistoryItem.tsx | 46 +-
.../git-panel/view/history/HistoryView.tsx | 15 +-
.../llm-logo-provider/GeminiLogo.tsx | 263 --------
.../llm-logo-provider/SessionProviderLogo.tsx | 5 -
src/components/mcp/constants.ts | 5 -
src/components/mcp/view/McpServers.tsx | 4 +-
.../subcomponents/AgentConnectionsStep.tsx | 7 -
src/components/provider-auth/types.ts | 4 +-
.../provider-auth/view/ProviderLoginModal.tsx | 62 +-
.../settings/constants/constants.ts | 2 +-
.../settings/hooks/useSettingsController.ts | 16 -
src/components/settings/types/types.ts | 1 -
src/components/settings/view/Settings.tsx | 4 -
.../tabs/agents-settings/AgentListItem.tsx | 9 +-
.../agents-settings/AgentsSettingsTab.tsx | 11 +-
.../sections/AgentSelectorSection.tsx | 2 -
.../sections/content/AccountContent.tsx | 9 -
.../sections/content/PermissionsContent.tsx | 112 +--
.../view/tabs/agents-settings/types.ts | 5 -
.../shell/hooks/useShellTerminal.ts | 40 ++
src/components/sidebar/types/types.ts | 1 +
src/components/sidebar/view/Sidebar.tsx | 2 +
.../view/subcomponents/SidebarProjectItem.tsx | 3 +
.../view/subcomponents/SidebarProjectList.tsx | 3 +
.../subcomponents/SidebarProjectSessions.tsx | 3 +
.../view/subcomponents/SidebarSessionItem.tsx | 23 +-
src/components/skills/view/ProviderSkills.tsx | 2 -
src/hooks/useProjectsState.ts | 85 ++-
src/hooks/useQueuedMessageAutoSend.ts | 70 ++
src/i18n/locales/de/chat.json | 22 +-
src/i18n/locales/de/settings.json | 3 -
src/i18n/locales/de/sidebar.json | 3 +-
src/i18n/locales/en/chat.json | 34 +-
src/i18n/locales/en/settings.json | 3 -
src/i18n/locales/en/sidebar.json | 3 +-
src/i18n/locales/fr/chat.json | 20 -
src/i18n/locales/fr/settings.json | 3 -
src/i18n/locales/fr/sidebar.json | 3 +-
src/i18n/locales/it/chat.json | 22 +-
src/i18n/locales/it/settings.json | 3 -
src/i18n/locales/it/sidebar.json | 3 +-
src/i18n/locales/ja/settings.json | 3 -
src/i18n/locales/ja/sidebar.json | 3 +-
src/i18n/locales/ko/chat.json | 4 +-
src/i18n/locales/ko/settings.json | 3 -
src/i18n/locales/ko/sidebar.json | 5 +-
src/i18n/locales/ru/chat.json | 22 +-
src/i18n/locales/ru/settings.json | 3 -
src/i18n/locales/ru/sidebar.json | 3 +-
src/i18n/locales/tr/chat.json | 22 +-
src/i18n/locales/tr/settings.json | 3 -
src/i18n/locales/tr/sidebar.json | 3 +-
src/i18n/locales/zh-CN/chat.json | 4 +-
src/i18n/locales/zh-CN/settings.json | 3 -
src/i18n/locales/zh-CN/sidebar.json | 3 +-
src/i18n/locales/zh-TW/chat.json | 4 +-
src/i18n/locales/zh-TW/settings.json | 3 -
src/i18n/locales/zh-TW/sidebar.json | 3 +-
src/shared/view/ui/PromptInput.tsx | 2 +-
src/stores/useSessionStore.ts | 45 +-
src/types/app.ts | 2 +-
173 files changed, 4172 insertions(+), 4296 deletions(-)
delete mode 100644 docker/gemini/Dockerfile
delete mode 100644 public/icons/gemini-ai-icon.svg
delete mode 100644 server/gemini-cli.js
delete mode 100644 server/gemini-response-handler.js
create mode 100644 server/modules/assets/assets.routes.ts
create mode 100644 server/modules/assets/index.ts
create mode 100644 server/modules/assets/services/image-assets.service.ts
create mode 100644 server/modules/assets/tests/image-assets.service.test.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-auth.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-mcp.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-models.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-session-synchronizer.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-sessions.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini-skills.provider.ts
delete mode 100644 server/modules/providers/list/gemini/gemini.provider.ts
create mode 100644 server/modules/providers/tests/codex-sessions.test.ts
create mode 100644 server/modules/providers/tests/provider-image-history.test.ts
create mode 100644 server/modules/websocket/tests/chat-image-filter.test.ts
delete mode 100644 server/routes/gemini.js
create mode 100644 server/routes/git.test.js
delete mode 100644 server/sessionManager.js
create mode 100644 server/shared/image-attachments.ts
create mode 100644 server/shared/tests/image-attachments.test.ts
create mode 100644 src/components/chat/view/subcomponents/ChatMessageImages.tsx
create mode 100644 src/components/chat/view/subcomponents/QueuedMessageCard.tsx
create mode 100644 src/components/git-panel/utils/commitGraph.test.ts
create mode 100644 src/components/git-panel/utils/commitGraph.ts
create mode 100644 src/components/git-panel/view/history/CommitGraphStrip.tsx
delete mode 100644 src/components/llm-logo-provider/GeminiLogo.tsx
create mode 100644 src/hooks/useQueuedMessageAutoSend.ts
diff --git a/README.de.md b/README.de.md
index fcbafb5f..c2ee36aa 100644
--- a/README.de.md
+++ b/README.de.md
@@ -1,18 +1,18 @@
-
+
@@ -43,7 +43,7 @@
CLI Selection
-Select between Claude Code, Gemini, Cursor CLI and Codex
+Select between Claude Code, Cursor CLI and Codex
|
@@ -63,7 +63,7 @@
- **Session Management** - Resume conversations, manage multiple sessions, and track history
- **Plugin System** - Extend CloudCLI with custom plugins — add new tabs, backend services, and integrations. [Build your own →](https://github.com/cloudcli-ai/cloudcli-plugin-starter)
- **TaskMaster AI Integration** *(Optional)* - Advanced project management with AI-powered task planning, PRD parsing, and workflow automation
-- **Model Compatibility** - Works with Claude, GPT, and Gemini model families (the full list of supported models is available at runtime via `GET /api/providers/:provider/models`)
+- **Model Compatibility** - Works with Claude and GPT model families (the full list of supported models is available at runtime via `GET /api/providers/:provider/models`)
## Quick Start
@@ -103,7 +103,7 @@ Run agents in isolated sandboxes with hypervisor-level isolation. Starts Claude
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project
```
-Supports Claude Code, Codex, and Gemini CLI. See the [sandbox docs](docker/) for setup and advanced options.
+Supports Claude Code and Codex. See the [sandbox docs](docker/) for setup and advanced options.
### Desktop Companion App
@@ -131,7 +131,7 @@ CloudCLI UI is the open source UI layer that powers CloudCLI Cloud. You can self
| **Machine needs to stay on** | Yes | Yes | No |
| **Mobile access** | Any browser on your network | Any browser on your network | Any device |
| **Desktop companion** | Optional. Choose Local CloudCLI | Optional. Choose Local CloudCLI | Optional. Opens cloud environments |
-| **Agents supported** | Claude Code, Cursor CLI, Codex, Gemini CLI | Claude Code, Codex, Gemini CLI | Claude Code, Cursor CLI, Codex, Gemini CLI |
+| **Agents supported** | Claude Code, Cursor CLI, Codex | Claude Code, Codex | Claude Code, Cursor CLI, Codex |
| **File explorer and Git** | Yes | Yes | Yes |
| **MCP configuration** | Synced with `~/.claude` | Managed via UI | Managed via UI |
| **REST API** | Yes | Yes | Yes |
@@ -176,7 +176,7 @@ CloudCLI has a plugin system that lets you add custom tabs with their own fronte
| **[Project Stats](https://github.com/cloudcli-ai/cloudcli-plugin-starter)** | Shows file counts, lines of code, file-type breakdown, largest files, and recently modified files for your current project |
| **[Web Terminal](https://github.com/cloudcli-ai/cloudcli-plugin-terminal)** | Full xterm.js terminal with multi-tab support |
| **[Claude Watch](https://github.com/satsuki19980613/cloudcli-claude-watch)** | Watches long-running Claude Code sessions for hangs and exposes process controls |
-| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Create workspace-scoped scheduled prompts and execute them through a local CLI such as Codex, Claude Code, or Gemini CLI |
+| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Create workspace-scoped scheduled prompts and execute them through a local CLI such as Codex or Claude Code |
| **[PRISM CloudCLI](https://github.com/jakeefr/cloudcli-plugin-prism)** | Session intelligence for Claude Code inside CloudCLI, including token burn visibility |
| **[Sessions](https://github.com/strykereye2/cloudcli-plugin-session-manager)** | View, manage, and kill active Claude Code sessions |
| **[Token Cost Calculator](https://github.com/NightmareAway/cloudcli-plugin-token-cost-calculator)** | Calculate API costs from model prices and token usage, with preset model pricing support |
@@ -203,7 +203,7 @@ Here's what that means in practice:
- **All your sessions, not just one** — CloudCLI UI auto-discovers every session from your `~/.claude` folder. Remote Control only exposes the single active session to make it available in the Claude mobile app.
- **Your settings are your settings** — MCP servers, tool permissions, and project config you change in CloudCLI UI are written directly to your Claude Code config and take effect immediately, and vice versa.
-- **Works with more agents** — Claude Code, Cursor CLI, Codex, and Gemini CLI, not just Claude Code.
+- **Works with more agents** — Claude Code, Cursor CLI and Codex, not just Claude Code.
- **Full UI, not just a chat window** — file explorer, Git integration, MCP management, and a shell terminal are all built in.
- **CloudCLI Cloud runs in the cloud** — close your laptop, the agent keeps running. No terminal to babysit, no machine to keep awake.
@@ -212,7 +212,7 @@ Here's what that means in practice:
Do I need to pay for an AI subscription separately?
-Yes. CloudCLI provides the environment, not the AI. You bring your own Claude, Cursor, Codex, or Gemini subscription. CloudCLI Cloud starts at €7/month for the hosted environment on top of that.
+Yes. CloudCLI provides the environment, not the AI. You bring your own Claude, Cursor, or Codex subscription. CloudCLI Cloud starts at €7/month for the hosted environment on top of that.
@@ -245,7 +245,7 @@ GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) — see [LIC
This project is open source and free to use, modify, and distribute under the AGPL-3.0-or-later license. If you modify this software and run it as a network service, you must make your modified source code available to users of that service.
-CloudCLI UI - (https://cloudcli.ai).
+CloudCLI UI - (https://cloudcli.ai).
## Acknowledgments
@@ -253,7 +253,6 @@ CloudCLI UI - (https://cloudcli.ai).
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** - Anthropic's official CLI
- **[Cursor CLI](https://docs.cursor.com/en/cli/overview)** - Cursor's official CLI
- **[Codex](https://developers.openai.com/codex)** - OpenAI Codex
-- **[Gemini-CLI](https://geminicli.com/)** - Google Gemini CLI
- **[React](https://react.dev/)** - User interface library
- **[Vite](https://vitejs.dev/)** - Fast build tool and dev server
- **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first CSS framework
@@ -266,5 +265,5 @@ CloudCLI UI - (https://cloudcli.ai).
---
- Made with care for the Claude Code, Cursor and Codex community.
+ Made with care for the Claude Code, Cursor and Codex community.
diff --git a/README.ru.md b/README.ru.md
index 12210761..82c5fc86 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,18 +1,18 @@
-

-
Cloud CLI (aka Claude Code UI)
-
Десктопный и мобильный UI для Claude Code, Cursor CLI, Codex и Gemini-CLI.
Используйте локально или удалённо, чтобы просматривать активные проекты и сессии отовсюду.
+

+
Cloud CLI (aka Claude Code UI)
+
Десктопный и мобильный UI для Claude Code, Cursor CLI, Codex.
Используйте локально или удалённо, чтобы просматривать активные проекты и сессии отовсюду.
- CloudCLI Cloud · Документация · Discord · Сообщить об ошибке · Участие в разработке
+ CloudCLI Cloud · Документация · Discord · Сообщить об ошибке · Участие в разработке
-
-
-
-
+
+
+
+
@@ -43,7 +43,7 @@
Выбор CLI
-
Выбирайте между Claude Code, Gemini, Cursor CLI и Codex
+
Выбирайте между Claude Code, Cursor CLI и Codex
@@ -62,7 +62,7 @@
- **Управление сессиями** - возобновляйте диалоги, управляйте несколькими сессиями и отслеживайте историю
- **Система плагинов** - расширяйте CloudCLI кастомными плагинами — добавляйте новые вкладки, бэкенд-сервисы и интеграции. [Создать свой →](https://github.com/cloudcli-ai/cloudcli-plugin-starter)
- **Интеграция с TaskMaster AI** *(опционально)* - продвинутое управление проектами с планированием задач на базе AI, разбором PRD и автоматизацией workflow
-- **Совместимость с моделями** - работает с семействами моделей Claude, GPT и Gemini (полный список поддерживаемых моделей доступен через `GET /api/providers/:provider/models`)
+- **Совместимость с моделями** - работает с семействами моделей Claude и GPT (полный список поддерживаемых моделей доступен через `GET /api/providers/:provider/models`)
## Быстрый старт
@@ -103,7 +103,7 @@ cloudcli
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project
```
-Поддерживаются Claude Code, Codex и Gemini CLI. Подробнее в [документации sandbox](docker/).
+Поддерживаются Claude Code и Codex. Подробнее в [документации sandbox](docker/).
---
@@ -119,7 +119,7 @@ CloudCLI UI — это open source UI-слой, на котором постро
| **Машина должна оставаться включённой** | Да | Нет |
| **Доступ с мобильных устройств** | Любой браузер в вашей сети | Любое устройство, нативное приложение в разработке |
| **Доступные сессии** | Все сессии автоматически обнаруживаются из `~/.claude` | Все сессии внутри вашей облачной среды |
-| **Поддерживаемые агенты** | Claude Code, Cursor CLI, Codex, Gemini CLI | Claude Code, Cursor CLI, Codex, Gemini CLI |
+| **Поддерживаемые агенты** | Claude Code, Cursor CLI, Codex | Claude Code, Cursor CLI, Codex |
| **Проводник файлов и Git** | Да, встроены в UI | Да, встроены в UI |
| **Конфигурация MCP** | Управляется через UI, синхронизируется с вашим локальным конфигом `~/.claude` | Управляется через UI |
| **Доступ из IDE** | Ваша локальная IDE | Любая IDE, подключенная к вашей облачной среде |
@@ -166,7 +166,7 @@ CloudCLI UI — это open source UI-слой, на котором постро
| **[Project Stats](https://github.com/cloudcli-ai/cloudcli-plugin-starter)** | Показывает количество файлов, строки кода, разбивку по типам файлов, самые большие файлы и недавно изменённые файлы для текущего проекта |
| **[Web Terminal](https://github.com/cloudcli-ai/cloudcli-plugin-terminal)** | Полноценный терминал xterm.js с поддержкой нескольких вкладок |
| **[Claude Watch](https://github.com/satsuki19980613/cloudcli-claude-watch)** | Отслеживает зависания долгих сессий Claude Code и предоставляет управление процессами |
-| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Создаёт запланированные промпты для рабочей области и запускает их через локальную CLI, например Codex, Claude Code или Gemini CLI |
+| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Создаёт запланированные промпты для рабочей области и запускает их через локальную CLI, например Codex или Claude Code |
| **[PRISM CloudCLI](https://github.com/jakeefr/cloudcli-plugin-prism)** | Аналитика сессий Claude Code внутри CloudCLI, включая видимость расхода токенов |
| **[Sessions](https://github.com/strykereye2/cloudcli-plugin-session-manager)** | Просмотр, управление и завершение активных сессий Claude Code |
| **[Token Cost Calculator](https://github.com/NightmareAway/cloudcli-plugin-token-cost-calculator)** | Расчёт стоимости API по ценам моделей и использованию токенов, с поддержкой пресетов цен |
@@ -193,7 +193,7 @@ CloudCLI UI и CloudCLI Cloud расширяют Claude Code, а не работ
- **Все ваши сессии, а не одна** — CloudCLI UI автоматически находит каждую сессию из папки `~/.claude`. Remote Control предоставляет только одну активную сессию, чтобы сделать её доступной в мобильном приложении Claude.
- **Ваши настройки — это ваши настройки** — MCP-серверы, права инструментов и конфигурация проекта, изменённые в CloudCLI UI, записываются напрямую в конфиг Claude Code и вступают в силу сразу же, и наоборот.
-- **Работает с большим числом агентов** — Claude Code, Cursor CLI, Codex и Gemini CLI, а не только Claude Code.
+- **Работает с большим числом агентов** — Claude Code, Cursor CLI и Codex, а не только Claude Code.
- **Полноценный UI, а не просто окно чата** — проводник файлов, Git-интеграция, управление MCP и shell-терминал — всё встроено.
- **CloudCLI Cloud работает в облаке** — закройте ноутбук, и агент продолжит работать. Не нужно следить за терминалом и держать машину постоянно активной.
@@ -202,7 +202,7 @@ CloudCLI UI и CloudCLI Cloud расширяют Claude Code, а не работ
Нужно ли отдельно платить за AI-подписку?
-Да. CloudCLI предоставляет среду, а не сам AI. Вы приносите свою подписку Claude, Cursor, Codex или Gemini. CloudCLI Cloud начинается от €7/месяц за хостируемую среду поверх этого.
+Да. CloudCLI предоставляет среду, а не сам AI. Вы приносите свою подписку Claude, Cursor или Codex. CloudCLI Cloud начинается от €7/месяц за хостируемую среду поверх этого.
@@ -241,7 +241,6 @@ GNU General Public License v3.0 - подробности в файле [LICENSE]
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** - официальный CLI от Anthropic
- **[Cursor CLI](https://docs.cursor.com/en/cli/overview)** - официальный CLI от Cursor
- **[Codex](https://developers.openai.com/codex)** - OpenAI Codex
-- **[Gemini-CLI](https://geminicli.com/)** - Google Gemini CLI
- **[React](https://react.dev/)** - библиотека пользовательских интерфейсов
- **[Vite](https://vitejs.dev/)** - быстрый инструмент сборки и dev-сервер
- **[Tailwind CSS](https://tailwindcss.com/)** - utility-first CSS framework
@@ -254,5 +253,5 @@ GNU General Public License v3.0 - подробности в файле [LICENSE]
---
- Сделано с заботой для сообщества Claude Code, Cursor и Codex.
+ Сделано с заботой для сообщества Claude Code, Cursor и Codex.
diff --git a/README.tr.md b/README.tr.md
index bba939f9..24c7f06b 100644
--- a/README.tr.md
+++ b/README.tr.md
@@ -1,18 +1,18 @@
-

-
Cloud CLI (Claude Code UI olarak da bilinir)
-
Claude Code, Cursor CLI, Codex ve Gemini-CLI için masaüstü ve mobil arayüz.
Yerel ya da uzaktan kullanarak aktif projelerine ve oturumlarına her yerden erişebilirsin.
+

+
Cloud CLI (Claude Code UI olarak da bilinir)
+
Claude Code, Cursor CLI, Codex için masaüstü ve mobil arayüz.
Yerel ya da uzaktan kullanarak aktif projelerine ve oturumlarına her yerden erişebilirsin.
- CloudCLI Cloud · Dokümantasyon · Discord · Sorun Bildir · Katkıda Bulun
+ CloudCLI Cloud · Dokümantasyon · Discord · Sorun Bildir · Katkıda Bulun
-
-
-
-
+
+
+
+
@@ -43,7 +43,7 @@
CLI Seçimi
-
Claude Code, Gemini, Cursor CLI ve Codex arasında seçim yap
+
Claude Code, Cursor CLI ve Codex arasında seçim yap
@@ -62,7 +62,7 @@
- **Oturum Yönetimi** — Konuşmalara devam et, birden fazla oturumu yönet ve geçmişi takip et
- **Eklenti Sistemi** — CloudCLI'ı özel eklentilerle genişlet: yeni sekmeler, arka uç servisleri ve entegrasyonlar ekle. [Kendi eklentini yaz →](https://github.com/cloudcli-ai/cloudcli-plugin-starter)
- **TaskMaster AI Entegrasyonu** *(İsteğe Bağlı)* — AI destekli görev planlama, PRD ayrıştırma ve iş akışı otomasyonu ile gelişmiş proje yönetimi
-- **Model Uyumluluğu** — Claude, GPT ve Gemini model aileleriyle çalışır (desteklenen tüm modeller için `GET /api/providers/:provider/models` API'sine bak)
+- **Model Uyumluluğu** — Claude ve GPT model aileleriyle çalışır (desteklenen tüm modeller için `GET /api/providers/:provider/models` API'sine bak)
## Hızlı Başlangıç
@@ -103,7 +103,7 @@ Ajanları hipervizör seviyesinde izolasyonlu sandbox'larda çalıştır. Varsay
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project
```
-Claude Code, Codex ve Gemini CLI destekler. Kurulum ve gelişmiş seçenekler için [sandbox dokümantasyonuna](docker/) bak.
+Claude Code ve Codex'i destekler. Kurulum ve gelişmiş seçenekler için [sandbox dokümantasyonuna](docker/) bak.
---
@@ -120,7 +120,7 @@ CloudCLI UI, CloudCLI Cloud'u güçlendiren açık kaynak arayüz katmanıdır.
| **İzolasyon** | Kendi host'unda çalışır | Hipervizör seviyesi sandbox (microVM) | Tam bulut izolasyonu |
| **Makinenin açık kalması gerek** | Evet | Evet | Hayır |
| **Mobil erişim** | Ağındaki herhangi bir tarayıcı | Ağındaki herhangi bir tarayıcı | Herhangi bir cihaz, native uygulama yolda |
-| **Desteklenen ajanlar** | Claude Code, Cursor CLI, Codex, Gemini CLI | Claude Code, Codex, Gemini CLI | Claude Code, Cursor CLI, Codex, Gemini CLI |
+| **Desteklenen ajanlar** | Claude Code, Cursor CLI, Codex | Claude Code, Codex | Claude Code, Cursor CLI, Codex |
| **Dosya gezgini ve Git** | Evet | Evet | Evet |
| **MCP yapılandırması** | `~/.claude` ile senkron | UI üzerinden yönetilir | UI üzerinden yönetilir |
| **REST API** | Evet | Evet | Evet |
@@ -165,7 +165,7 @@ CloudCLI, kendi frontend UI'sı ve isteğe bağlı Node.js arka ucu olan özel s
| **[Project Stats](https://github.com/cloudcli-ai/cloudcli-plugin-starter)** | Mevcut projen için dosya sayıları, kod satırları, dosya türü dağılımı, en büyük dosyalar ve son değiştirilen dosyaları gösterir |
| **[Web Terminal](https://github.com/cloudcli-ai/cloudcli-plugin-terminal)** | Çoklu sekme destekli tam xterm.js terminali |
| **[Claude Watch](https://github.com/satsuki19980613/cloudcli-claude-watch)** | Uzun süren Claude Code oturumlarını takılmalara karşı izler ve süreç kontrolleri sunar |
-| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Çalışma alanı kapsamlı zamanlanmış prompt'lar oluşturur ve bunları Codex, Claude Code veya Gemini CLI gibi yerel CLI'larla çalıştırır |
+| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | Çalışma alanı kapsamlı zamanlanmış prompt'lar oluşturur ve bunları Codex veya Claude Code gibi yerel CLI'larla çalıştırır |
| **[PRISM CloudCLI](https://github.com/jakeefr/cloudcli-plugin-prism)** | CloudCLI içinde Claude Code oturum zekası ve token tüketimi görünürlüğü sağlar |
| **[Sessions](https://github.com/strykereye2/cloudcli-plugin-session-manager)** | Aktif Claude Code oturumlarını görüntülemeni, yönetmeni ve sonlandırmanı sağlar |
| **[Token Cost Calculator](https://github.com/NightmareAway/cloudcli-plugin-token-cost-calculator)** | Model fiyatları ve token kullanımından API maliyetlerini hesaplar; model fiyatı hazır ayarlarını destekler |
@@ -192,7 +192,7 @@ Pratikte bu ne demek:
- **Tek oturum değil, tüm oturumların** — CloudCLI UI, `~/.claude` klasöründeki her oturumu otomatik keşfeder. Remote Control yalnızca tek aktif oturumu Claude mobil uygulamasına açar.
- **Ayarların sana ait** — UI'da değiştirdiğin MCP sunucuları, araç izinleri ve proje yapılandırması doğrudan Claude Code yapılandırmana yazılır ve anında etkili olur; tersi de geçerli.
-- **Daha fazla ajanla çalışır** — Sadece Claude Code değil; Cursor CLI, Codex ve Gemini CLI de.
+- **Daha fazla ajanla çalışır** — Sadece Claude Code değil; Cursor CLI ve Codex de.
- **Sadece sohbet penceresi değil, tam UI** — dosya gezgini, Git entegrasyonu, MCP yönetimi ve shell terminali hepsi yerleşik.
- **CloudCLI Cloud bulutta çalışır** — laptop'unu kapat, ajan çalışmaya devam eder. Beklemen gereken terminal yok, uyanık tutman gereken makine yok.
@@ -201,7 +201,7 @@ Pratikte bu ne demek:
AI aboneliği için ayrıca ödeme yapmam gerekiyor mu?
-Evet. CloudCLI AI'yi değil, ortamı sağlar. Kendi Claude, Cursor, Codex veya Gemini aboneliğini getirirsin. CloudCLI Cloud, barındırılan ortam için aylık 7 €'dan başlar — bunun üzerine eklenir.
+Evet. CloudCLI AI'yi değil, ortamı sağlar. Kendi Claude, Cursor veya Codex aboneliğini getirirsin. CloudCLI Cloud, barındırılan ortam için aylık 7 €'dan başlar — bunun üzerine eklenir.
@@ -242,7 +242,6 @@ CloudCLI UI — (https://cloudcli.ai).
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — Anthropic'in resmi CLI'ı
- **[Cursor CLI](https://docs.cursor.com/en/cli/overview)** — Cursor'un resmi CLI'ı
- **[Codex](https://developers.openai.com/codex)** — OpenAI Codex
-- **[Gemini-CLI](https://geminicli.com/)** — Google Gemini CLI
- **[React](https://react.dev/)** — Kullanıcı arayüzü kütüphanesi
- **[Vite](https://vitejs.dev/)** — Hızlı derleme aracı ve geliştirme sunucusu
- **[Tailwind CSS](https://tailwindcss.com/)** — Utility-first CSS framework
@@ -255,5 +254,5 @@ CloudCLI UI — (https://cloudcli.ai).
---
- Claude Code, Cursor ve Codex topluluğu için özenle yapıldı.
+ Claude Code, Cursor ve Codex topluluğu için özenle yapıldı.
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 97da920e..9b7c71b6 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -1,18 +1,18 @@
- CloudCLI Cloud · 文档 · Discord · Bug 报告 · 贡献指南
+ CloudCLI Cloud · 文档 · Discord · Bug 报告 · 贡献指南
-
-
-
-
+
+
+
+
@@ -43,7 +43,7 @@
CLI 选择
-
在 Claude Code、Gemini、Cursor CLI 与 Codex 之间进行选择
+
在 Claude Code、Cursor CLI 与 Codex 之间进行选择
@@ -60,7 +60,7 @@
- **会话管理** - 恢复对话、管理多个会话并跟踪历史记录
- **插件系统** - 通过自定义选项卡、后端服务与集成扩展 CloudCLI。 [开始构建 →](https://github.com/cloudcli-ai/cloudcli-plugin-starter)
- **TaskMaster AI 集成** *(可选)* - 结合 AI 任务规划、PRD 分析与工作流自动化,实现高级项目管理
-- **模型兼容性** - 支持 Claude、GPT、Gemini 模型家族(完整支持列表可通过 `GET /api/providers/:provider/models` 接口获取)
+- **模型兼容性** - 支持 Claude、GPT 模型家族(完整支持列表可通过 `GET /api/providers/:provider/models` 接口获取)
## 快速开始
@@ -99,7 +99,7 @@ cloudcli
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project
```
-支持 Claude Code、Codex 和 Gemini CLI。详情请参阅 [沙箱文档](docker/)。
+支持 Claude Code 和 Codex。详情请参阅 [沙箱文档](docker/)。
---
@@ -115,7 +115,7 @@ CloudCLI UI 是 CloudCLI Cloud 的开源 UI 层。你可以在本地机器上自
| **机器需保持开机吗** | 是 | 否 |
| **移动端访问** | 网络内任意浏览器 | 任意设备(原生应用即将推出) |
| **可用会话** | 自动发现 `~/.claude` 中的所有会话 | 云端环境内的会话 |
-| **支持的 Agents** | Claude Code、Cursor CLI、Codex、Gemini CLI | Claude Code、Cursor CLI、Codex、Gemini CLI |
+| **支持的 Agents** | Claude Code、Cursor CLI、Codex | Claude Code、Cursor CLI、Codex |
| **文件浏览与 Git** | 内置于 UI | 内置于 UI |
| **MCP 配置** | UI 管理,与本地 `~/.claude` 配置同步 | UI 管理 |
| **IDE 访问** | 本地 IDE | 任何连接到云环境的 IDE |
@@ -160,7 +160,7 @@ CloudCLI 配备插件系统,允许你添加带自定义前端 UI 和可选 Nod
| **[Project Stats](https://github.com/cloudcli-ai/cloudcli-plugin-starter)** | 展示当前项目的文件数、代码行数、文件类型分布、最大文件以及最近修改的文件 |
| **[Web Terminal](https://github.com/cloudcli-ai/cloudcli-plugin-terminal)** | 支持多标签页的完整 xterm.js 终端 |
| **[Claude Watch](https://github.com/satsuki19980613/cloudcli-claude-watch)** | 监控长时间运行的 Claude Code 会话是否卡住,并提供进程控制 |
-| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | 创建工作区范围的定时提示词,并通过 Codex、Claude Code 或 Gemini CLI 等本地 CLI 执行 |
+| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | 创建工作区范围的定时提示词,并通过 Codex、Claude Code 等本地 CLI 执行 |
| **[PRISM CloudCLI](https://github.com/jakeefr/cloudcli-plugin-prism)** | 在 CloudCLI 中提供 Claude Code 会话智能分析,包括 token 消耗可视化 |
| **[Sessions](https://github.com/strykereye2/cloudcli-plugin-session-manager)** | 查看、管理并终止活动的 Claude Code 会话 |
| **[Token Cost Calculator](https://github.com/NightmareAway/cloudcli-plugin-token-cost-calculator)** | 根据模型价格和 token 用量计算 API 成本,并支持模型价格预设 |
@@ -186,7 +186,7 @@ CloudCLI UI 与 CloudCLI Cloud 是对 Claude Code 的扩展,而非旁观 — M
- **覆盖全部会话** — CloudCLI UI 会自动扫描 `~/.claude` 文件夹中的每个会话。Remote Control 只暴露当前活动的会话。
- **设置统一** — 在 CloudCLI UI 中修改的 MCP、工具权限等设置会立即写入 Claude Code。
-- **支持更多 Agents** — Claude Code、Cursor CLI、Codex、Gemini CLI。
+- **支持更多 Agents** — Claude Code、Cursor CLI、Codex。
- **完整 UI** — 除了聊天界面,还包括文件浏览器、Git 集成、MCP 管理和 Shell 终端。
- **CloudCLI Cloud 保持运行于云端** — 关闭本地设备也不会中断代理运行,无需监控终端。
@@ -195,7 +195,7 @@ CloudCLI UI 与 CloudCLI Cloud 是对 Claude Code 的扩展,而非旁观 — M
需要额外购买 AI 订阅吗?
-需要。CloudCLI 只提供环境。你仍需自行获取 Claude、Cursor、Codex 或 Gemini 订阅。CloudCLI Cloud 从 €7/月起提供托管环境。
+需要。CloudCLI 只提供环境。你仍需自行获取 Claude、Cursor 或 Codex 订阅。CloudCLI Cloud 从 €7/月起提供托管环境。
@@ -234,7 +234,6 @@ GNU 通用公共许可证 v3.0 - 详见 [LICENSE](LICENSE) 文件。
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** - Anthropic 官方 CLI
- **[Cursor CLI](https://docs.cursor.com/en/cli/overview)** - Cursor 官方 CLI
- **[Codex](https://developers.openai.com/codex)** - OpenAI Codex
-- **[Gemini-CLI](https://geminicli.com/)** - Google Gemini CLI
- **[React](https://react.dev/)** - 用户界面库
- **[Vite](https://vitejs.dev/)** - 快速构建工具与开发服务器
- **[Tailwind CSS](https://tailwindcss.com/)** - 实用先行 CSS 框架
@@ -246,5 +245,5 @@ GNU 通用公共许可证 v3.0 - 详见 [LICENSE](LICENSE) 文件。
---
- 为 Claude Code、Cursor 和 Codex 社区精心打造。
+ 为 Claude Code、Cursor 和 Codex 社区精心打造。
diff --git a/README.zh-TW.md b/README.zh-TW.md
index 9f8c972a..de375429 100644
--- a/README.zh-TW.md
+++ b/README.zh-TW.md
@@ -1,18 +1,18 @@
- CloudCLI Cloud · 文件 · Discord · Bug 回報 · 貢獻指南
+ CloudCLI Cloud · 文件 · Discord · Bug 回報 · 貢獻指南
-
-
-
-
+
+
+
+
@@ -43,7 +43,7 @@
CLI 選擇
-
在 Claude Code、Gemini、Cursor CLI 與 Codex 之間進行選擇
+
在 Claude Code、Cursor CLI 與 Codex 之間進行選擇
@@ -60,7 +60,7 @@
- **工作階段管理** — 恢復對話、管理多個工作階段並追蹤歷史紀錄
- **外掛系統** — 透過自訂分頁、後端服務與整合來擴充 CloudCLI。[開始建構 →](https://github.com/cloudcli-ai/cloudcli-plugin-starter)
- **TaskMaster AI 整合** *(選用)* — 結合 AI 任務規劃、PRD 分析與工作流程自動化,實現進階專案管理
-- **模型相容性** — 支援 Claude、GPT、Gemini 模型家族(完整支援列表可透過 `GET /api/providers/:provider/models` 介面取得)
+- **模型相容性** — 支援 Claude、GPT 模型家族(完整支援列表可透過 `GET /api/providers/:provider/models` 介面取得)
## 快速開始
@@ -99,7 +99,7 @@ cloudcli
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project
```
-支援 Claude Code、Codex 和 Gemini CLI。詳情請參閱[沙箱文件](docker/)。
+支援 Claude Code 和 Codex。詳情請參閱[沙箱文件](docker/)。
---
@@ -115,7 +115,7 @@ CloudCLI UI 是 CloudCLI Cloud 的開源 UI 層。你可以在本機上自架它
| **機器需保持開機嗎** | 是 | 否 |
| **行動裝置存取** | 網路內任意瀏覽器 | 任意裝置(原生應用程式即將推出) |
| **可用工作階段** | 自動發現 `~/.claude` 中的所有工作階段 | 雲端環境內的工作階段 |
-| **支援的 Agents** | Claude Code、Cursor CLI、Codex、Gemini CLI | Claude Code、Cursor CLI、Codex、Gemini CLI |
+| **支援的 Agents** | Claude Code、Cursor CLI、Codex | Claude Code、Cursor CLI、Codex |
| **檔案瀏覽與 Git** | 內建於 UI | 內建於 UI |
| **MCP 設定** | UI 管理,與本機 `~/.claude` 設定同步 | UI 管理 |
| **IDE 存取** | 本機 IDE | 任何連線到雲端環境的 IDE |
@@ -160,7 +160,7 @@ CloudCLI 配備外掛系統,允許你新增帶有自訂前端 UI 和選用 Nod
| **[Project Stats](https://github.com/cloudcli-ai/cloudcli-plugin-starter)** | 展示目前專案的檔案數、程式碼行數、檔案類型分佈、最大檔案以及最近修改的檔案 |
| **[Web Terminal](https://github.com/cloudcli-ai/cloudcli-plugin-terminal)** | 支援多分頁的完整 xterm.js 終端機 |
| **[Claude Watch](https://github.com/satsuki19980613/cloudcli-claude-watch)** | 監控長時間執行的 Claude Code 工作階段是否卡住,並提供程序控制 |
-| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | 建立工作區範圍的排程提示詞,並透過 Codex、Claude Code 或 Gemini CLI 等本機 CLI 執行 |
+| **[CloudCLI Scheduler](https://github.com/grostim/cloudcli-cron)** | 建立工作區範圍的排程提示詞,並透過 Codex、Claude Code 等本機 CLI 執行 |
| **[PRISM CloudCLI](https://github.com/jakeefr/cloudcli-plugin-prism)** | 在 CloudCLI 中提供 Claude Code 工作階段智慧分析,包括 token 消耗可視化 |
| **[Sessions](https://github.com/strykereye2/cloudcli-plugin-session-manager)** | 檢視、管理並終止作用中的 Claude Code 工作階段 |
| **[Token Cost Calculator](https://github.com/NightmareAway/cloudcli-plugin-token-cost-calculator)** | 根據模型價格與 token 用量計算 API 成本,並支援模型價格預設 |
@@ -186,7 +186,7 @@ CloudCLI UI 與 CloudCLI Cloud 是對 Claude Code 的擴充,而非旁觀 — M
- **涵蓋全部工作階段** — CloudCLI UI 會自動掃描 `~/.claude` 資料夾中的每個工作階段。Remote Control 只暴露目前活動的工作階段。
- **設定統一** — 在 CloudCLI UI 中修改的 MCP、工具權限等設定會立即寫入 Claude Code。
-- **支援更多 Agents** — Claude Code、Cursor CLI、Codex、Gemini CLI。
+- **支援更多 Agents** — Claude Code、Cursor CLI、Codex。
- **完整 UI** — 除了聊天介面,還包括檔案瀏覽器、Git 整合、MCP 管理和 Shell 終端機。
- **CloudCLI Cloud 持續運作於雲端** — 關閉本機裝置也不會中斷代理執行,無需監控終端機。
@@ -195,7 +195,7 @@ CloudCLI UI 與 CloudCLI Cloud 是對 Claude Code 的擴充,而非旁觀 — M
需要額外購買 AI 訂閱嗎?
-需要。CloudCLI 只提供環境。你仍需自行取得 Claude、Cursor、Codex 或 Gemini 訂閱。CloudCLI Cloud 從 €7/月起提供託管環境。
+需要。CloudCLI 只提供環境。你仍需自行取得 Claude、Cursor 或 Codex 訂閱。CloudCLI Cloud 從 €7/月起提供託管環境。
@@ -234,7 +234,6 @@ GNU 通用公共授權條款 v3.0 — 詳見 [LICENSE](LICENSE) 檔案。
- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — Anthropic 官方 CLI
- **[Cursor CLI](https://docs.cursor.com/en/cli/overview)** — Cursor 官方 CLI
- **[Codex](https://developers.openai.com/codex)** — OpenAI Codex
-- **[Gemini-CLI](https://geminicli.com/)** — Google Gemini CLI
- **[React](https://react.dev/)** — 使用者介面函式庫
- **[Vite](https://vitejs.dev/)** — 快速建構工具與開發伺服器
- **[Tailwind CSS](https://tailwindcss.com/)** — 實用優先 CSS 框架
@@ -246,5 +245,5 @@ GNU 通用公共授權條款 v3.0 — 詳見 [LICENSE](LICENSE) 檔案。
---
- 為 Claude Code、Cursor 和 Codex 社群精心打造。
+ 為 Claude Code、Cursor 和 Codex 社群精心打造。
diff --git a/docker/README.md b/docker/README.md
index 134ebad0..b84ffeb4 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -1,9 +1,9 @@
-
+
# Sandboxed coding agents with a web & mobile IDE (CloudCLI)
-[Docker Sandbox](https://docs.docker.com/ai/sandboxes/) templates that add [CloudCLI](https://cloudcli.ai) on top of Claude Code, Codex, and Gemini CLI. You get a full web and mobile IDE accessible from any browser on any device.
+[Docker Sandbox](https://docs.docker.com/ai/sandboxes/) templates that add [CloudCLI](https://cloudcli.ai) on top of Claude Code and Codex. You get a full web and mobile IDE accessible from any browser on any device.
## Get started
@@ -42,10 +42,6 @@ Store the matching API key and pass `--agent`:
# OpenAI Codex
sbx secret set -g openai
npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project --agent codex
-
-# Gemini CLI
-sbx secret set -g google
-npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project --agent gemini
```
### Available templates
@@ -54,7 +50,6 @@ npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project --agent gemini
|-------|----------|
| **Claude Code** (default) | `docker.io/cloudcliai/sandbox:claude-code` |
| OpenAI Codex | `docker.io/cloudcliai/sandbox:codex` |
-| Gemini CLI | `docker.io/cloudcliai/sandbox:gemini` |
These are used with `--template` when running `sbx` directly (see [Advanced usage](#advanced-usage)).
diff --git a/docker/gemini/Dockerfile b/docker/gemini/Dockerfile
deleted file mode 100644
index dc06db69..00000000
--- a/docker/gemini/Dockerfile
+++ /dev/null
@@ -1,11 +0,0 @@
-FROM docker/sandbox-templates:gemini
-
-USER root
-COPY shared/install-cloudcli.sh /tmp/install-cloudcli.sh
-RUN chmod +x /tmp/install-cloudcli.sh && /tmp/install-cloudcli.sh
-
-USER agent
-RUN npm install -g @cloudcli-ai/cloudcli && cloudcli --version
-
-COPY --chown=agent:agent shared/start-cloudcli.sh /home/agent/.cloudcli-start.sh
-RUN echo '. ~/.cloudcli-start.sh' >> /home/agent/.bashrc
diff --git a/electron/launcher/launcher.js b/electron/launcher/launcher.js
index 80e30b52..93abea41 100644
--- a/electron/launcher/launcher.js
+++ b/electron/launcher/launcher.js
@@ -12,7 +12,7 @@ window.__MOCK_STATE__ = {
{ id: 'env-api', name: 'api-gateway', subdomain: 'api-gateway', access_url: 'https://api-gateway.cloudcli.ai', status: 'running', region: 'fra1', agent: 'Claude Code' },
{ id: 'env-web', name: 'web-frontend', subdomain: 'web-frontend', access_url: 'https://web-frontend.cloudcli.ai', status: 'stopped', region: 'sfo1', agent: 'Codex' },
{ id: 'env-data', name: 'data-pipeline', subdomain: 'data-pipeline', access_url: 'https://data-pipeline.cloudcli.ai', status: 'stopped', region: 'fra1', agent: 'Cursor' },
- { id: 'env-ml', name: 'ml-trainer', subdomain: 'ml-trainer', access_url: 'https://ml-trainer.cloudcli.ai', status: 'paused', region: 'iad1', agent: 'Gemini' },
+ { id: 'env-ml', name: 'ml-trainer', subdomain: 'ml-trainer', access_url: 'https://ml-trainer.cloudcli.ai', status: 'paused', region: 'iad1', agent: 'OpenCode' },
],
};
diff --git a/eslint.config.js b/eslint.config.js
index e002aece..df10d25e 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -161,6 +161,7 @@ export default tseslint.config(
"server/shared/utils.{js,ts}",
"server/shared/frontmatter.ts",
"server/shared/claude-cli-path.ts",
+ "server/shared/image-attachments.ts",
], // classify shared utility files so modules can depend on them explicitly
mode: "file",
},
@@ -168,7 +169,6 @@ export default tseslint.config(
type: "backend-legacy-runtime", // legacy runtime persistence modules used while providers migrate into server/modules
pattern: [
"server/projects.js",
- "server/sessionManager.js",
"server/utils/runtime-paths.js",
], // provider history loading still resolves session data through these legacy runtime files
mode: "file",
diff --git a/package-lock.json b/package-lock.json
index ec345985..8b870c71 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -80,6 +80,8 @@
"@types/better-sqlite3": "^7.6.13",
"@types/cross-spawn": "^6.0.6",
"@types/express": "^5.0.6",
+ "@types/mime-types": "^3.0.1",
+ "@types/multer": "^2.2.0",
"@types/node": "^22.19.7",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
@@ -5994,12 +5996,29 @@
"@types/unist": "*"
}
},
+ "node_modules/@types/mime-types": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-3.0.1.tgz",
+ "integrity": "sha512-xRMsfuQbnRq1Ef+C+RKaENOxXX87Ygl38W1vDfPHRku02TgQr+Qd8iivLtAMcR0KF5/29xlnFihkTlbqFrGOVQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
"license": "MIT"
},
+ "node_modules/@types/multer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.2.0.tgz",
+ "integrity": "sha512-3U1troeqGV8Ntp7Q3klwf4zr23VEoqYVocYXaswm9+8z3O9UHDYAqLxjJ/h550iRADTjKdOdhhasXw6gD6kYtg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/express": "*"
+ }
+ },
"node_modules/@types/node": {
"version": "22.19.7",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz",
diff --git a/package.json b/package.json
index 25861d43..1cad3c55 100644
--- a/package.json
+++ b/package.json
@@ -121,8 +121,6 @@
"claude-code-ui",
"cloudcli",
"codex",
- "gemini",
- "gemini-cli",
"cursor",
"cursor-cli",
"anthropic",
@@ -203,6 +201,8 @@
"@types/better-sqlite3": "^7.6.13",
"@types/cross-spawn": "^6.0.6",
"@types/express": "^5.0.6",
+ "@types/mime-types": "^3.0.1",
+ "@types/multer": "^2.2.0",
"@types/node": "^22.19.7",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
diff --git a/public/api-docs.html b/public/api-docs.html
index 040d8680..c2d60173 100644
--- a/public/api-docs.html
+++ b/public/api-docs.html
@@ -489,7 +489,7 @@
http://localhost:3001/api/agent
- Trigger an AI agent (Claude, Cursor, Codex, Gemini, or OpenCode) to work on a project.
+ Trigger an AI agent (Claude, Cursor, Codex, or OpenCode) to work on a project.