Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
37db0a2
Fix stuck p2p timeout handling
Apr 7, 2026
3a0ca77
Route session errors and polish P2P controls
Apr 7, 2026
9c58ad6
fix(push): use dedicated dispatcher for relay to avoid stale keep-ali…
Apr 7, 2026
ce4d1a9
Fix idle UI running effects
Apr 7, 2026
5ac817e
Revert "fix(push): use dedicated dispatcher for relay to avoid stale …
Apr 7, 2026
785a810
ci(docker): smoke-test image before push to block crash-on-startup re…
Apr 7, 2026
e597fa8
fix(push): log every silently swallowed error
Apr 7, 2026
ecb39e0
Fix running-only visual activity semantics
Apr 7, 2026
d822930
Prefer SDK defaults for sub-session start
Apr 7, 2026
5fa7846
Refine combo send confirmation UX
Apr 7, 2026
f5dbe4e
Gate footer thinking animation on running state
Apr 7, 2026
c335816
Route combo confirmation through quick and voice send
Apr 7, 2026
f0fd22d
Disable combo modes without P2P participants
Apr 7, 2026
72b9c86
Harden Windows upgrade scripts for Unicode paths
Apr 7, 2026
6b4c75b
Refine P2P settings layout and combo manager
Apr 7, 2026
6678fa8
Suppress pane-id inline error for transport sessions
Apr 7, 2026
a56facb
Default session startup state to idle
Apr 7, 2026
622d442
Simplify P2P combo mode selection
Apr 7, 2026
4734f2c
Direct-send combo dropdown and refine P2P filters
Apr 7, 2026
cc849a1
Keep preview cards pinned to latest output
Apr 7, 2026
141ce0c
Block daemon upgrade during active P2P runs
Apr 7, 2026
8b87c29
Show upgrade blocked toast for active P2P runs
Apr 7, 2026
ae1fbd2
Polish sub-session idle flash behavior
Apr 7, 2026
e431225
fix(server): import daemon bridge event constants
Apr 7, 2026
fd9664b
Unify P2P combo config selection logic
Apr 7, 2026
b6e40f4
Fix parallel P2P progress projection
Apr 7, 2026
3dd8049
Fix opus context window mapping
Apr 7, 2026
3d753ff
Remove deprecated default p2p combos
Apr 7, 2026
c3f8658
Fix parallel P2P hop bar progress
Apr 7, 2026
a0ba012
Force sub-session cards to follow new content
Apr 7, 2026
61baa8e
Force chat view to follow new content
Apr 7, 2026
b54a868
Sync session running state from realtime timeline events
Apr 7, 2026
303a363
Trigger idle flash from realtime idle state
Apr 7, 2026
d96b048
fix(web): route combo sends and default changes preview to diff
Apr 7, 2026
fa0905e
Warm timeline cache from realtime events
Apr 7, 2026
88a8760
fix(test): remove flaky preview id assertion
Apr 7, 2026
c78e491
Improve P2P discussion detail follow controls
Apr 7, 2026
b39c648
Reuse file markdown preview for P2P details
Apr 7, 2026
d27720a
fix(web): move idle flash to css and add transport card stop
Apr 7, 2026
e7bf500
Add copy actions to P2P discussion list
Apr 7, 2026
8fb85dc
Keep P2P scroll controls visible and mobile-friendly
Apr 7, 2026
7cb7a43
Move P2P copy control beside scroll dock
Apr 7, 2026
437c27a
fix(server): prefer labels in push titles
Apr 7, 2026
0f9cfd3
Refine P2P plan final output instructions
Apr 8, 2026
71fb0f5
Fix idle flash playback for sub-session surfaces
Apr 8, 2026
4160c6f
fix(web): preserve mobile chat scroll on keyboard resize
Apr 8, 2026
56a2eea
Restore terminal subscriptions on reconnect
Apr 8, 2026
5e9e2ef
Add session type switching with stable family IDs
Apr 8, 2026
3443365
feat(web): add openspec quick prompts
Apr 8, 2026
e24b115
feat(web): expand openspec quick actions
Apr 8, 2026
43b58f6
fix(web): default pinned changes previews to diff
Apr 8, 2026
7415990
refactor(web): strengthen openspec action prompts
Apr 8, 2026
cf60033
Fix chat auto-follow top-jump regression
Apr 8, 2026
4e05fac
Harden shutdown close semantics
Apr 8, 2026
2e67a2e
fix(server): restore quick data edits and push titles
Apr 8, 2026
a17cf3e
Enable CC presets in Claude SDK dialogs
Apr 8, 2026
fd19aae
fix(web): stack openspec actions on mobile
Apr 8, 2026
2cc1a88
Fix mobile controls after keyboard dismiss
Apr 8, 2026
64e090d
fix(web): preserve transport timeline during restore
Apr 8, 2026
5611a63
Fix transport queued message handling
Apr 8, 2026
fcc5878
fix(session): serialize sends across settings relaunch
Apr 8, 2026
839a50d
Handle Claude summary resume prompt
Apr 8, 2026
4ae4ddb
Show queued transport messages
Apr 8, 2026
e1e8759
fix(session): recover claude sdk after cli switch
Apr 8, 2026
cb703de
fix(web): tighten openspec dropdown layout
Apr 8, 2026
ee4f4f2
fix(web): avoid replaying sub-session idle flash
Apr 8, 2026
9acef2c
Fix transport timeline history regression
Apr 8, 2026
3eadfdc
Fix transport queue test expectations
Apr 8, 2026
a7777b6
Fix Claude SDK preset name matching
Apr 8, 2026
8b8032b
Fix push notification session labels
Apr 8, 2026
58c6c67
Fix push notification display labels
Apr 8, 2026
53838ba
Refresh docs and landing copy
Apr 8, 2026
7e05d89
Preserve file preview state from changes tab
Apr 8, 2026
ec5a5a5
fix(web): show queued state in sub sessions
Apr 8, 2026
eae2ecd
Default P2P hop timeout to 8 minutes
Apr 8, 2026
36a654b
Move discussion controls into top header
Apr 8, 2026
7dfe903
feat(web): add openspec propose prompts
Apr 8, 2026
6500d7d
Fix cron prompt validation and length guard
Apr 8, 2026
196c498
fix(web): preserve sub-session queues and pin openspec propose
Apr 8, 2026
28919c9
Rename solo P2P button label
Apr 8, 2026
3fbd42a
Fix chat path download button wiring
Apr 8, 2026
fac3f45
Fix mobile file preview close behavior
Apr 8, 2026
d33f305
fix(web): clamp queued message previews
Apr 8, 2026
9cd33d3
fix(web): dock queued transport hints below controls
Apr 8, 2026
6d60538
feat(web): collapse queued transport previews
Apr 8, 2026
04682ef
fix(web): keep pinned previews in external windows
Apr 8, 2026
bf1b5a5
refactor(web): reduce timer churn and cssify action focus
Apr 8, 2026
761692a
fix(web): hide pinned embedded changes panel
Apr 8, 2026
e4d9b74
perf(web): reduce p2p progress bar rerenders
Apr 8, 2026
1f1bb5c
fix(server): prefer labels in push titles
Apr 8, 2026
a9fed4a
fix(server): use labels for sub-session pushes
Apr 8, 2026
80c5498
Protect active timeline cache from eviction
Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,38 @@ jobs:
fi
echo "npm_version=${NPM_VERSION}" >> "$GITHUB_OUTPUT"

- name: Build and push
# Build the image into the local docker daemon first so we can smoke-test
# it BEFORE pushing. Without this step, an image whose Node process
# crashes on startup (e.g. ERR_MODULE_NOT_FOUND from a missing prod dep)
# would still get pushed and auto-deployed to production.
- name: Build (load to local docker for smoke test)
uses: docker/build-push-action@v6
with:
context: .
file: server/Dockerfile
platforms: linux/amd64
tags: imcodes-smoke:test
build-args: |
BUILD_TIME=${{ steps.ts.outputs.value }}
OTA_VERSION=${{ steps.ota.outputs.version }}
APP_VERSION=${{ steps.version_meta.outputs.npm_version }}
cache-from: type=gha
cache-to: type=gha,mode=max
load: true
push: false

- name: Container startup smoke test
run: |
set -euo pipefail
# Override entrypoint to run an import-only check inside the actual
# production image. index.ts has an isMain guard so the import
# resolves all static deps (including all routes/* modules) without
# binding ports or hitting the database. Any ERR_MODULE_NOT_FOUND or
# other top-level eval failure surfaces here, before the image ships.
docker run --rm --entrypoint node imcodes-smoke:test \
-e "import('./dist/server/src/index.js').then(() => { console.log('OK: image loads cleanly'); process.exit(0); }).catch(e => { console.error('FAIL:', e.message); console.error(e.stack); process.exit(1); })"

- name: Build and push (cache hit — only pushes layers)
uses: docker/build-push-action@v6
with:
context: .
Expand Down
1 change: 0 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ Node.js process that manages AI agent sessions via tmux. Entry point: `src/index
- `session-manager.ts` manages all sessions, auto-restart with loop prevention. `provider-registry.ts` manages transport provider lifecycle.
- **Transport relay** (`src/daemon/transport-relay.ts`): Converts transport provider callbacks (`onDelta`, `onComplete`, `onError`) to unified timeline events (`assistant.text`, `session.state`, `tool.call`).
- **Routing** (`src/router/`): `message-router.ts` routes inbound messages to the correct session. `command-parser.ts` handles `/bind`, `/status`, `/send`, etc.
- **Brain dispatcher** (`src/agent/brain-dispatcher.ts`): Parses `@w1`, `@status`, `@reply` commands from the brain session's output, dispatching to workers.
- **Server link** (`src/daemon/server-link.ts`): WebSocket client connecting to the server at `/api/server/:id/ws`. Sends `{ type: 'auth', serverId, token }` on open. Credentials stored in `~/.imcodes/server.json` after `imcodes bind`.
- **Session store** (`src/store/session-store.ts`): JSON file at `~/.imcodes/sessions.json`, debounced writes.

Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,10 @@ Previsualiza tu servidor de desarrollo local desde cualquier dispositivo sin des
### Móvil, reloj y notificaciones
Soporte completo para móvil, autenticación biométrica, notificaciones push, entrada interactiva para sesiones shell y respuestas rápidas desde Apple Watch.

### Discusiones y auditoría multiagente
Puedes ejecutar rondas rápidas de discusión donde varios agentes, incluso de distintos proveedores, revisan o auditan el mismo tema.
### Auditoría cross-modelo y discusiones P2P
La salida de un solo modelo no debería confiarse ciegamente. Las discusiones P2P permiten que múltiples agentes — de distintos proveedores y estilos de pensamiento — colaboren en el análisis del mismo código antes de escribir una sola línea. Cada ronda sigue un pipeline multifase personalizable, donde cada agente lee todas las contribuciones anteriores. Diferentes modelos detectan diferentes tipos de problemas. Esta revisión cruzada entre proveedores encuentra la mayoría de los problemas antes de la implementación, reduciendo drásticamente el retrabajo.

Modos integrados: `audit` (pipeline estructurado audit → review → plan), `review`, `discuss` y `brainstorm` — o define tu propia secuencia de fases. Funciona con Claude Code, Codex, Gemini CLI y Qwen.

### Agentes transport con streaming
Soporte nativo de streaming para agentes transport como OpenClaw y Qwen, sin scraping de terminal.
Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ SSH、VPN、ポート開放なしで、任意のブラウザから agent session
### モバイル、Watch、通知
生体認証、push 通知、shell session の入力、Apple Watch での素早い確認と返信に対応します。

### マルチエージェント議論と監査
複数の agent による discuss / audit / review / brainstorm ラウンドを実行できます。
### クロスモデル監査と P2P ディスカッション
単一モデルの出力を盲信すべきではありません。P2P ディスカッションでは、異なるプロバイダーや思考スタイルを持つ複数の agent が、コードを書く前に同じコードベースで協調分析を行います。各ラウンドはカスタマイズ可能なマルチフェーズパイプラインに従い、各 agent は前の貢献をすべて読んだ上で出力します。異なるモデルは異なる種類の問題を発見します。このクロスプロバイダー相互審査により、実装前に大部分の問題を発見し、手戻りを大幅に削減できます。

組み込みモードは `audit`(構造化された audit → review → plan パイプライン)、`review`、`discuss`、`brainstorm` で、独自のフェーズ構成も定義可能。Claude Code、Codex、Gemini CLI、Qwen で動作します。

### Streaming Transport Agents
OpenClaw や Qwen のような transport 型 agent に対して、terminal scraping ではなくネイティブなストリーミングを提供します。
Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ SSH, VPN, 포트 포워딩 없이 브라우저에서 agent session의 터미널
### 모바일, 워치, 알림
생체 인증, 푸시 알림, shell session 입력, Apple Watch 빠른 응답을 지원합니다.

### 멀티 에이전트 토론과 감사
여러 agent가 discuss / audit / review / brainstorm 라운드를 수행할 수 있습니다.
### 크로스 모델 감사와 P2P 토론
단일 모델의 출력을 맹목적으로 신뢰해서는 안 됩니다. P2P 토론은 서로 다른 프로바이더와 사고 방식을 가진 여러 agent가 코드 작성 전에 동일한 코드베이스에서 협력 분석을 수행합니다. 각 라운드는 커스터마이징 가능한 멀티 페이즈 파이프라인을 따르며, 각 agent는 이전 기여를 모두 읽은 후 출력합니다. 서로 다른 모델이 서로 다른 유형의 문제를 발견합니다. 이 크로스 프로바이더 교차 검토로 구현 전에 대부분의 문제를 찾아내어 재작업을 대폭 줄일 수 있습니다.

내장 모드는 `audit`(구조화된 audit → review → plan 파이프라인), `review`, `discuss`, `brainstorm`이며, 사용자 정의 페이즈 구성도 가능합니다. Claude Code, Codex, Gemini CLI, Qwen에서 작동합니다.

### 스트리밍 Transport Agents
OpenClaw, Qwen 같은 transport agent에 대해 네이티브 스트리밍을 제공합니다.
Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ Claude Code и Codex теперь поддерживают два способа
### Мобильные устройства, часы и уведомления
Есть биометрическая аутентификация, push‑уведомления, ввод для shell‑сессий и быстрые ответы на Apple Watch.

### Многоагентные обсуждения и аудит
Можно запускать быстрые discuss / audit / review / brainstorm раунды между несколькими агентами.
### Кросс-модельный аудит и P2P обсуждения
Выходу одной модели нельзя доверять слепо. P2P обсуждения позволяют нескольким агентам — от разных провайдеров и с разными стилями мышления — совместно анализировать одну кодовую базу ещё до написания кода. Каждый раунд следует настраиваемому многоэтапному пайплайну, где каждый агент читает все предыдущие вклады. Разные модели находят разные типы проблем. Такая перекрёстная проверка выявляет большинство проблем до реализации, резко сокращая переделки.

Встроенные режимы: `audit` (структурированный пайплайн audit → review → plan), `review`, `discuss` и `brainstorm` — или определите собственную последовательность фаз. Работает с Claude Code, Codex, Gemini CLI и Qwen.

### Потоковые transport‑агенты
OpenClaw и Qwen работают через структурированный transport‑stream вместо terminal scraping.
Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,11 @@ Claude Code 和 Codex 现在都支持两种接入方式:CLI 和 SDK。

完整支持移动端,包含生物识别认证和推送通知。Shell 会话在手机上也支持交互式键盘输入(类似 SSH)。子会话预览卡始终显示最新消息。Toast 通知可直接跳转到对应会话。Apple Watch 支持会话快速查看、未读计数和快速回复。

### 多 Agent 讨论与审计
### 跨模型审计与 P2P 讨论

单模型输出不应被盲目信任。你可以快速发起多轮讨论,让多个 agent——甚至跨 provider——围绕同一主题进行 review、audit 或 brainstorming。每个 agent 会读取前面的内容,再追加自己的分析。支持 `discuss`、`audit`、`review`、`brainstorm` 模式。侧边栏中的环形进度条会显示 round / hop 完成情况。支持 Claude Code、Codex、Gemini CLI,也兼容带 sandbox 的 agent。
单模型输出不应被盲目信任。P2P 讨论让多个 agent——跨不同 provider 和思维风格——在写代码之前就对同一代码库进行协作分析。每轮遵循可自定义的多阶段流程,每个 agent 读取所有前序贡献并在此基础上输出。不同模型捕获不同类别的问题:一个发现竞态条件,另一个指出遗漏的 migration,第三个质疑 API 设计。这种跨 provider 交叉审查能在实现前发现绝大部分问题,大幅减少返工。

内置模式包括 `audit`(结构化 audit → review → plan 流水线)、`review`、`discuss` 和 `brainstorm`,也可以自定义阶段序列。侧边栏中的环形进度条会显示 round / hop 完成情况。支持 Claude Code、Codex、Gemini CLI 和 Qwen,也兼容带 sandbox 的 agent。通过 `@@all(config)` 或 UI 配置参与者、轮次、模式和 P2P 设置。

### 流式 Transport Agents

Expand Down
6 changes: 4 additions & 2 deletions README.i18n/README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,11 @@ Claude Code 和 Codex 現在都支援兩種接入方式:CLI 和 SDK。

完整支持移动端,包含生物识别认证和推送通知。Shell 会话在手機上也支持交互式键盘输入(类似 SSH)。子会话預覽卡始终显示最新消息。Toast 通知可直接跳转到对应会话。Apple Watch 支持会话快速檢視、未读计数和快速回复。

### 多 Agent 討論與審計
### 跨模型稽核與 P2P 討論

单模型输出不应被盲目信任。你可以快速发起多轮讨论,让多个 agent——甚至跨 provider——围绕同一主题进行 review、audit 或 brainstorming。每个 agent 会读取前面的内容,再追加自己的分析。支持 `discuss`、`audit`、`review`、`brainstorm` 模式。侧边栏中的环形进度条会显示 round / hop 完成情况。支持 Claude Code、Codex、Gemini CLI,也兼容带 sandbox 的 agent。
單一模型的輸出不應被盲目信任。P2P 討論讓多個 agent——跨不同 provider 和思維風格——在寫程式之前就對同一代碼庫進行協作分析。每輪遵循可自訂的多階段流程,每個 agent 讀取所有前序貢獻並在此基礎上輸出。不同模型捕獲不同類別的問題:一個發現競態條件,另一個指出遺漏的 migration,第三個質疑 API 設計。這種跨 provider 交叉審查能在實現前發現絕大部分問題,大幅減少返工。

內建模式包括 `audit`(結構化 audit → review → plan 流水線)、`review`、`discuss` 和 `brainstorm`,也可以自訂階段序列。側邊欄中的環形進度條會顯示 round / hop 完成情況。支持 Claude Code、Codex、Gemini CLI 和 Qwen,也相容帶 sandbox 的 agent。透過 `@@all(config)` 或 UI 配置參與者、輪次、模式和 P2P 設定。

### 串流 Transport Agents

Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,11 @@ Preview your local dev server from any device — phone, tablet, or remote brows

Full mobile support with biometric auth and push notifications. Shell sessions allow interactive keyboard input on mobile (SSH-like). Sub-session preview cards always show latest messages. Toast notifications navigate directly to the relevant session. Apple Watch support adds quick session monitoring, unread counts, and quick replies from the wrist.

### Multi-Agent Discussions & Audit
### Multi-Agent Discussions & Cross-Provider Audit

Single-model output shouldn't be trusted blindly. Spawn quick discussion rounds where multiple agents — across different providers — review, audit, or brainstorm on the same topic. Each agent reads prior contributions and adds their own. Modes include `discuss`, `audit`, `review`, and `brainstorm`. Ring progress indicator shows round/hop completion in the sidebar. Works across Claude Code, Codex, and Gemini CLI, including sandboxed agents.
Single-model output shouldn't be trusted blindly. P2P discussions let multiple agents — across different providers and thinking styles — collaborate on the same codebase before a single line is written. Each round follows a customizable multi-phase pipeline where every agent reads all prior contributions and builds on them. Different models catch different classes of issues: one spots a race condition, another flags a missing migration, a third questions the API design. This cross-provider scrutiny catches the majority of problems before implementation, dramatically reducing rework cycles.

Built-in modes include `audit` (structured audit → review → plan pipeline), `review`, `discuss`, and `brainstorm` — or define your own phase sequence. Ring progress indicator shows round/hop completion in the sidebar. Works across Claude Code, Codex, Gemini CLI, and Qwen, including sandboxed agents. Configure participants, round counts, modes, and per-session P2P settings via `@@all(config)` or the UI.

### Streaming Transport Agents

Expand Down
Loading
Loading