Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
11c39b3
feat: integrate standalone web app into shared workspace
BytePioneer-AI Oct 9, 2026
664c430
feat: expose native harness controls in standalone web
BytePioneer-AI Oct 9, 2026
f5fcd7d
feat: share CH threads and page history in web
BytePioneer-AI Oct 10, 2026
bd6604c
fix: improve web session switching and history navigation
BytePioneer-AI Oct 10, 2026
4acdf08
feat: refine web sidebar navigation and icon presentation
BytePioneer-AI Oct 10, 2026
a4f1d9a
fix: simplify web sidebar and keep expanded folders blue
BytePioneer-AI Oct 10, 2026
aedbf93
feat: synchronize shared Host clients and native icon presentation
BytePioneer-AI Oct 10, 2026
c0095ba
fix: restore Web composer command menu
BytePioneer-AI Oct 10, 2026
176badb
fix: repair standalone Web cross-platform CI
BytePioneer-AI Oct 10, 2026
bd4ea5b
fix: preserve lightweight Web sidebar before consolidation
BytePioneer-AI Oct 10, 2026
e595fca
feat: share native pins in a global Web sidebar section
BytePioneer-AI Oct 10, 2026
d51f7a7
feat: unify Web UI and shared Host development
BytePioneer-AI Oct 10, 2026
fd1926d
test: wait for sidebar pin movement before layout checks
BytePioneer-AI Oct 10, 2026
32ef988
feat: restore shared Web images through native file paths
BytePioneer-AI Oct 10, 2026
daa1f13
fix: render native Desktop attachments in shared Web
BytePioneer-AI Oct 10, 2026
bd89451
feat: support arbitrary files in shared Web
BytePioneer-AI Oct 10, 2026
77c35e5
fix: preserve user text alongside uploaded files
BytePioneer-AI Oct 10, 2026
a7d0d09
feat: decouple shared Host lifecycle from Desktop
BytePioneer-AI Oct 10, 2026
d962a3d
merge: integrate independent shared Host into Web
BytePioneer-AI Oct 10, 2026
a5dd430
fix: remove local Web file attachment quotas
BytePioneer-AI Oct 10, 2026
216e27d
fix: repair Web CI prerequisites and Windows path checks
BytePioneer-AI Oct 10, 2026
d7980dd
fix: release Windows caller pipes and confirm Host tree shutdown
BytePioneer-AI Oct 10, 2026
dea186d
fix: terminate a stalled Host owner before proving tree exit
BytePioneer-AI Oct 10, 2026
a9632c6
test: put Windows capture fixture in its own supervised Job
BytePioneer-AI Oct 10, 2026
e39bfea
test: retain Windows process identity during Host recovery
BytePioneer-AI Oct 10, 2026
189981f
fix: match Web sidebar Harness styling to Codex GUI
BytePioneer-AI Oct 11, 2026
68a39bc
fix: unify sidebar typography and native text hierarchy
BytePioneer-AI Oct 11, 2026
76328aa
feat: add projectless sessions to Web Recents
BytePioneer-AI Oct 11, 2026
a4efc47
feat: add Codex-style nested model selector
BytePioneer-AI Oct 11, 2026
f3e9ac5
fix: anchor nested model selector to composer
BytePioneer-AI Oct 11, 2026
cde6751
fix: remove redundant model provider heading
BytePioneer-AI Oct 11, 2026
b98d33a
fix: match Codex model selector width
BytePioneer-AI Oct 11, 2026
db20291
fix: compact model selector row styling
BytePioneer-AI Oct 11, 2026
94955c0
fix: keep final replies outside reasoning folds
BytePioneer-AI Oct 11, 2026
c6203c1
fix: preserve and display context compaction events
BytePioneer-AI Oct 11, 2026
03891a8
fix: use the CodexHost application mark
BytePioneer-AI Oct 11, 2026
bf099de
feat: show thread activity in the web sidebar
BytePioneer-AI Oct 11, 2026
51b4440
feat: share web usage and queued turns
BytePioneer-AI Oct 11, 2026
682a1e3
feat: use the original vector otter for Web branding
BytePioneer-AI Oct 11, 2026
c8bbb4c
fix: connect shared Web thread forks to CH
BytePioneer-AI Oct 12, 2026
d78aedc
feat: use theme-aware otter marks in CodexHost UI
BytePioneer-AI Oct 12, 2026
ccbd641
merge: integrate main into standalone Web branch
BytePioneer-AI Oct 12, 2026
ff42c97
fix: preserve Web Harness routing and queued follow-ups
BytePioneer-AI Oct 12, 2026
3cdd43b
fix: hide unsent web drafts from sidebar
BytePioneer-AI Oct 12, 2026
4be29c6
fix: close web model picker without stealing focus
BytePioneer-AI Oct 12, 2026
48e2853
feat: use colored otter marks in settings and console
BytePioneer-AI Oct 13, 2026
3af4d12
fix: restore Web queue and usage updates after reconnect
BytePioneer-AI Oct 13, 2026
f846322
feat: persist first-message previews and synchronize Web titles
BytePioneer-AI Oct 13, 2026
f67fe8a
fix: edit queued messages through the composer and preserve GUI inputs
BytePioneer-AI Oct 13, 2026
70f8006
feat: show remaining account quota separately in Web
BytePioneer-AI Oct 13, 2026
92b25d2
fix: normalize Pi tokens and preserve unknown Web usage fields
BytePioneer-AI Oct 13, 2026
b547c42
fix: restore Codex session usage after restart
BytePioneer-AI Oct 13, 2026
ac5ebb5
feat: integrate isolated Web Codex and shared Harness settings
BytePioneer-AI Oct 13, 2026
f8ab480
fix: persist latest usage metrics at session boundaries
BytePioneer-AI Oct 13, 2026
c37dc67
docs: propose shared GUI and Web session ownership
BytePioneer-AI Oct 13, 2026
4840283
refactor: extract isolated session runtime and persistence
BytePioneer-AI Oct 15, 2026
ed27c89
feat: move isolated Web Codex ownership into shared Host
BytePioneer-AI Oct 15, 2026
38b153a
feat: route Web Codex sessions through the shared Host gateway
BytePioneer-AI Oct 15, 2026
550bfbc
docs: document shared Web Codex ownership and validation
BytePioneer-AI Oct 15, 2026
7ff33b2
fix: preserve shared Host when starting Desktop and add Web shortcut
BytePioneer-AI Oct 15, 2026
e39a1b7
fix: distinguish draft preparation from required workspace selection
BytePioneer-AI Oct 15, 2026
3b78728
feat: consolidate Web data under the codexhost directory
BytePioneer-AI Oct 15, 2026
3d7a692
fix: connect all Web harnesses by default
BytePioneer-AI Oct 15, 2026
76ff49c
merge: integrate Web data migration into Web development
BytePioneer-AI Oct 15, 2026
553a7d8
Merge branch 'main' into draft/standalone-web-ui
BytePioneer-AI Oct 15, 2026
4d99f53
fix: prevent duplicate web answers after native item replacement
BytePioneer-AI Oct 15, 2026
7de43fa
fix: use user request for attachment thread previews
BytePioneer-AI Oct 15, 2026
9644478
fix: reconcile Web queues after subscribing to thread updates
BytePioneer-AI Oct 15, 2026
fa34512
fix: streamline Web startup output and network access
BytePioneer-AI Oct 15, 2026
3b3ad36
fix: align Web startup output and show live build progress
BytePioneer-AI Oct 15, 2026
e655a39
fix: bound Web build shutdown and forward termination signals
BytePioneer-AI Oct 15, 2026
964f864
fix: hide connected session status label
BytePioneer-AI Oct 15, 2026
ef06ea2
docs: propose Web Codex authentication
BytePioneer-AI Oct 15, 2026
acd4125
fix: sync Web archives with Host and hide them by default
BytePioneer-AI Oct 15, 2026
3f5978d
feat: expand standalone web session workflows
BytePioneer-AI Oct 15, 2026
8e01f19
fix: display local Markdown images in Web
BytePioneer-AI Oct 15, 2026
ff9dcfb
refactor: remove standalone execution and ownership lock machinery
BytePioneer-AI Oct 15, 2026
9e56dfd
feat: replace chat running icon with animated embrace mark
BytePioneer-AI Oct 16, 2026
2daaa50
perf: reduce redundant web and settings polling
BytePioneer-AI Oct 17, 2026
0ba5633
fix: align Web Codex loading and local session setup
BytePioneer-AI Oct 17, 2026
0f35a61
fix: restore per-harness model selection
BytePioneer-AI Oct 18, 2026
0046fb8
fix: exclude Harness helpers from Desktop cleanup
BytePioneer-AI Oct 18, 2026
87630dd
fix: open message thread links in Web
BytePioneer-AI Oct 18, 2026
d2e2c23
feat: restore Web right sidebar file tree via DSH backend
BytePioneer-AI Oct 18, 2026
6c41b47
fix: keep a newly created Thread across an in-flight catalog read
BytePioneer-AI Oct 18, 2026
e12c6d9
feat: restore Web right sidebar preview, terminal, and browser
BytePioneer-AI Oct 18, 2026
0774366
test: match the fake Host projects signature in the catalog race test
BytePioneer-AI Oct 18, 2026
dfa3bce
test: isolate Web terminal cleanup from user shell config
BytePioneer-AI Oct 18, 2026
834b2e5
refactor: share session usage metering across runtimes
BytePioneer-AI Oct 18, 2026
84ed24d
fix: preserve long-running Harness installation outcomes
BytePioneer-AI Oct 18, 2026
066099b
feat: run Web Codex CLI as a shared external Harness
BytePioneer-AI Oct 18, 2026
5cafca4
fix: serialize Host restarts and retain packaged runtime snapshots
BytePioneer-AI Oct 18, 2026
34a82ce
perf: load Web history without waiting for pins or model inspection
BytePioneer-AI Oct 18, 2026
31f3933
feat: show per-turn file changes and cumulative diff summaries
BytePioneer-AI Oct 18, 2026
43fec68
feat: add collapsible sidebar sections and cross-workspace recents
BytePioneer-AI Oct 18, 2026
62639cb
style: refine the Web Harness picker and touch targets
BytePioneer-AI Oct 18, 2026
3246034
docs: clarify event-driven Harness display settings sync
BytePioneer-AI Oct 18, 2026
dc657ca
chore: reconcile saxes dependency placement in lockfile
BytePioneer-AI Oct 18, 2026
eca1054
fix: restore external sidebar rows with stale state caches
BytePioneer-AI Oct 21, 2026
37d03c4
feat: show the console only when launch fails
BytePioneer-AI Oct 21, 2026
1d7cb0e
feat: add the console settings pages to Web settings
BytePioneer-AI Oct 21, 2026
5a26886
style: lighten the Web Harness picker trigger
BytePioneer-AI Oct 21, 2026
156172f
docs: propose the Web phone remote relay architecture
BytePioneer-AI Oct 21, 2026
1332123
fix: hide the Turn duration when history has no timing
BytePioneer-AI Oct 21, 2026
f9b4799
refactor: drop the Web performance and usage setting
BytePioneer-AI Oct 21, 2026
11883f5
feat: manage idle Harness sessions from Web settings
BytePioneer-AI Oct 21, 2026
5ee81db
fix(pi): simplify Fast model eligibility
BytePioneer-AI Oct 21, 2026
35b9f95
feat: add Fast model controls to Web composer
BytePioneer-AI Oct 21, 2026
bda3a9a
Merge origin/main into draft/standalone-web-ui
BytePioneer-AI Oct 22, 2026
5b7c4a9
fix(web): align file change summaries with Codex GUI
BytePioneer-AI Oct 22, 2026
2a0e59c
refactor: streamline shared Host and Web snapshot synchronization
BytePioneer-AI Oct 22, 2026
5920fc9
docs: clarify shared Host lifecycle locking
BytePioneer-AI Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ jobs:
--exclude 'packages/renderer-extension/test/**'
--exclude 'tools/gate-claude-code/run.test.mjs'

# Real Launcher + Node service, with isolated HOME/data and fake Harnesses.
- name: Test independent Host lifecycle
run: npm run test:shared-host

# Rust formatting is already covered by the Linux x64 formatting step.
- name: Check Rust
run: >
Expand Down Expand Up @@ -146,6 +150,8 @@ jobs:
run: npm ci --prefer-offline

# Linux x64 owns TS tests; ARM64 verifies native code and the installed package.
- name: Test independent Host lifecycle
run: npm run test:shared-host

- name: Check Rust
run: >
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

# Dependencies and tool caches
node_modules/
.work/
.dsh-build/
/apps/web-ui/**/lib/
.npm/
.cache/
.wix/
Expand Down
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,8 @@ package-lock.json
Cargo.lock
# Generated models.dev price snapshot.
packages/host-runtime/src/model-prices.generated.ts
# Pinned upstream browser protocol codecs.
apps/web-ui/**/generated/
# Imported browser build outputs and local diagnostics.
apps/web-ui/**/lib/
.work/
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Existing Harness integration and Desktop update audit skills remain applicable t
## Testing & Completion

- Choose build and validation commands from `package.json`, not a copied command catalog. For focused tests, use the repository configuration in `tests/vitest.config.js` or `tests/e2e/playwright.config.js`, and the owning `Cargo.toml` for Rust test features.
- To build and launch from source, run `npm start` at the repository root; `npm start -- --no-build` reuses existing artifacts. On macOS/Windows this stops running Codex Desktop processes before launch. Use it when launching is intended, not as a routine validation command; implementation is in `tools/dev-desktop/run.mjs`.
- To build and launch from source, run `npm start` at the repository root for Desktop or `npm start web` for Web; both restart the shared Host and the corresponding interface, interrupting Host tasks. `--no-build` reuses existing artifacts but still restarts. On macOS/Windows the Desktop command stops running Codex Desktop processes before launch. Use it when launching is intended, not as a routine validation command; implementation is in `tools/dev-desktop/run.mjs`.
- Small, low-risk changes do not require tests. For high-risk or cross-package changes, or when explicitly requested, add focused tests for changed behavior and boundary conditions; do not run full test suites by default.
- Do not claim a check passed unless it was executed. Report skipped or blocked checks and the reason.
- A change is complete only when implementation, contracts, tests, and affected documentation agree.
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ https://github.com/user-attachments/assets/c48192d7-23ff-4f6e-b61a-6345a655bb76
<img width="90%" src="docs/imgs/codexhost-native-overview.png" alt="Claude Code, Pi, Grok Build, and Oh My Pi sessions running in Codex Desktop, with Diff review, Fork, Worktree, and Agent switching">
</div>

## Standalone Web development

This checkout also contains a Web/PWA application. Run `npm ci`, `npm run build:web`, then `npm start web` for an authenticated Web client. The development command restarts the shared Host and this checkout's Web service on the selected port, interrupting running Host tasks. Web and Desktop can each be used alone, share canonical external Threads when both are open, and close without stopping the other or its tasks. Existing saved GUI project metadata remains read-only; no GUI projects are created. This does not launch or restart Desktop. A running older Desktop-owned Host is not taken over; update/restart it separately to transition. `-- --session-source standalone` explicitly selects the independent Harness plugin mode. See [the Web guide](docs/product/standalone-web.md) for connection requirements, plugin distribution and current limitations.

## Quick Start

**Option 1: npm** (macOS / Windows / Linux)
Expand All @@ -84,7 +88,7 @@ Run `codexhost update` to check for the latest release and prepare an upgrade fr

**codexhost does not start, or Codex opens without codexhost features**

Run `codexhost console` (Windows: Start Menu → "codexhost console") to open the local console at `http://127.0.0.1:4399/`. It shows why the last start failed, the Codex Desktop version, Host Runtime logs, and can update codexhost while Codex is not running. It starts together with codexhost: installer launches open it in your browser, and terminal launches print its address.
Run `codexhost console` (Windows: Start Menu → "codexhost console") to open the local console at `http://127.0.0.1:4399/`. It shows why the last start failed, the Codex Desktop version, Host Runtime logs, and can update codexhost while Codex is not running. It starts together with codexhost: installer launches open it in your browser only when startup or Codex UI integration fails, and terminal launches print its address only when startup fails.

**macOS: "App can't be verified" on first launch**

Expand Down Expand Up @@ -296,6 +300,8 @@ npm ci
npm start
```

`npm start` rebuilds and restarts the shared Host and Desktop; `npm start web` rebuilds and restarts the shared Host and Web. Both interrupt running Host tasks. `--no-build` skips building but still restarts the selected interface and Host.

To run the current source with a specific runtime version, use `npm start 0.12.0` (prereleases such as `0.13.0-rc.1` are also accepted). Host status, console version and update-check version reporting use this value. Without a version argument the version remains `<workspace-version>-dev`; `npm start 0.12.0 -- --no-build` reuses artifacts after building once. The override lasts for this launch and does not modify version files or publish packages. Source installations still lack packaged self-update resources; remote npm installation downloads the published package with that version, not the local source.


Expand Down
21 changes: 21 additions & 0 deletions apps/web-ui/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 DeepSeek

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.
13 changes: 13 additions & 0 deletions apps/web-ui/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# CodexHost Web UI

Private browser workspaces imported from the MIT-licensed `deepseek-harness` 0.2.1-alpha.1 Web UI and the local `codexhost-web` fork. The import keeps the selected client plugins, their browser runtime and protocol dependencies, and local CodexHost/mobile changes. It does not include the upstream CLI, release machinery, independent agent execution, or a second Git repository.

The source roster is in `import-manifest.json`. `packages/` and `vendor/` are npm workspaces of the parent CodexHost repository; install dependencies once at that repository root. `npm run build:web:ui` compiles plugin factories with the imported CSS/module-loader preset and builds `apps/web` with Vite. `lib/` and `dist/` are generated and ignored. All Harness execution belongs to the parent repository's Adapters and Web Server, not these browser packages.

The `generated/remote.js` and matching declarations in selected packages are pinned DSH protocol codecs from the imported fork's generated Host descriptors. They are protocol source snapshots, not copies of Harness SDKs or bundled applications. Keep them aligned with the Web Server's DSH protocol compatibility layer; do not generate them from the Desktop Host. The full upstream frontend type-check and test programs are not imported yet; the current integration uses source compilation and the Web Server's browser regression tests.

The right Sidebar also embeds upstream host services: `packages/fs/fs`, `packages/fs/fs-local`, `packages/util/timeout`, `packages/sandbox/sandbox-policy`, `packages/core/scope`, `packages/subprocess/*`, `packages/util/http-proxy`, `packages/util/lazy-require`, and `packages/document/office-to-pdf` are the imported local-filesystem, sandbox-policy, subprocess/PTY, and Office-conversion sources. `packages/host/dsh-web-backend` is the CodexHost adapter that mounts the Typert registry, local filesystem, Connection, gateway, workspace files, Office conversion, subprocess, and terminal services for `packages/web-server`; it supplies only a local Thread's working directory, the sandbox policy's workspace root, and the four Agent fields the terminal controller reads. The imported client plugins are the file tree, document preview, terminal, and sandboxed browser tabs; `packages/test-support/remote-mock` supports their client tests. The one upstream source adaptation in the gateway is `packages/api/gateway/src/index.ts`, which imports the runtime `OperatorPeer` from `src/operator-peer.ts` rather than the Connection plugin root so the embedded backend does not pull the upstream browser-auth and credentials chain; `subprocess-local/src/runner-launch.ts` additionally honors `CODEXHOST_SUBPROCESS_RUNNER` so a packed distribution can run its bundled runner. Dependency patches for FortuneSheet, ExcelJS, and node-pty are copied to the repository `patches/` directory and applied by `scripts/apply-dependency-patches.mjs` after install. `tests/dsh` holds the imported workspace file and terminal-controller tests; they run under Vitest with the same standard-decorator pre-transform the upstream repository uses.

The upstream MIT license is retained in `LICENSE`, framework package licenses remain under `vendor/`, and upstream dependency notices are retained in `THIRD_PARTY_NOTICES.md`. Local import adaptations include private npm manifests, source exports, the selected source build, and removal of the upstream standalone Web Worker preview entry. The root LGPL license does not replace these notices.

See [the Web feature document](../../docs/product/standalone-web.md) for runtime isolation, commands and supported behavior.
Loading
Loading