Skip to content

Take Workshop from runvil-workshop - #215

Merged
vinniefalco merged 4 commits into
cppalliance:masterfrom
vinniefalco:master
Nov 13, 2026
Merged

vinniefalco merged 4 commits into
cppalliance:masterfrom
vinniefalco:master

Conversation

@vinniefalco

Copy link
Copy Markdown
Member

Workshop now lives in cppalliance/runvil-workshop, with the tooling that builds it and the Gateway pin. This pull request removes Workshop from this repository and builds the installers from a pinned Workshop commit instead. What stays here is the installer tool, the install tests, the releases, and the documentation site.

What changed

  • The pin. The root Cargo.toml names the Workshop commit in [workspace.metadata.workshop]: e32d4caa, whose CI and Bundle runs are green. It is not a Cargo dependency: no crate here links Workshop.
  • cargo installer (second commit). build-workshop becomes build-installer. It no longer builds Workshop. It runs cargo workshop bundle in the checkout that RUNVIL_WORKSHOP names, then does what it did before: it collects the payload, builds the Qt IFW installer and the DMG, and in manifest mode writes latest.json and SHA256SUMS. .cargo/config.toml points RUNVIL_WORKSHOP at ../runvil-workshop when the variable is unset.
  • A check before any build. The installer refuses a checkout whose workspace version or toolchain channel differs from this repository's. The release file names and the tag check use this version while Tauri names its files with Workshop's, and the Cargo that runs the installer also builds Workshop.
  • installers.yml. A new action, .github/actions/workshop-checkout, checks Workshop out at the pinned commit. prepare resolves the commit once and every later job uses it. A dispatched run can take a workshop-ref input to build another commit, and a tag always builds the pin. The cells take the Gateway version as a fourth argument, since the Gateway pin left with Workshop.
  • The removal (third commit). crates/workshop/, crates/build-ui/, gateway-pin/, the Gateway scripts in tools/, and the two Workshop rule files are gone: 800 files. Their history is in runvil-workshop.
  • build-xtask. The checks that existed only for Workshop are removed: the tier table, the ## Invariants marker rule, the desktop-app boundary, harness_pin, and cargo xtask new-crate. Workshop's own copy of the crate runs them now. The checks over every crate stay.
  • The docs site (first commit). No crate here depends on the Engine or the Harness any more, so cargo xtask site builds the API pages from a runvil-harness checkout that RUNVIL_HARNESS names. site.yml checks it out at master.
  • CI. check-workshop, check-workshop-linux and ui are removed, with the Node, Tauri and stub Gateway steps of the other jobs. runvil-workshop has its own copies. A wording job runs the scan, which moved to tools/docs-claims.mjs.
  • Housekeeping. [workspace.dependencies] keeps the 12 keys the three crates use. Cargo.lock goes from 796 packages to 82, and no package that stays changes version. deny.toml allows no git source and six licenses. AGENTS.md, the READMEs, .gitignore, .gitattributes and vibelight.toml are updated to match.

Things worth a look

  • Moving the pin. To ship newer Workshop work, change rev in [workspace.metadata.workshop]. When Workshop changed its version or its toolchain channel, change this repository's in the same commit, or the installer refuses the checkout.
  • What lost a check. A Workshop change to installer.nsi or a Tauri config no longer starts the install cells from Workshop's side. Its bundle.yml proves the bundle builds on five targets, and the cells run here when the pin moves. A dispatched run with workshop-ref tests any Workshop commit by hand.
  • The API pages follow master. They used to document the pinned harness commit. They now document the tip of runvil-harness, refreshed by the nightly run.
  • One test needs a Workshop checkout. It compares the names the installers lay the payload out under with the names Workshop looks for. The test job checks Workshop out for it. Locally it reads the sibling checkout, and it fails naming RUNVIL_WORKSHOP when there is none.
  • Target folders. Workshop's bundle is built in the checkout's target/, and the installer moves its files into this repository's, so the two must be on one drive unless CARGO_TARGET_DIR is set.
  • vibelight.toml no longer excludes build-installer: with every crate excluded, vibelight has nothing to outline.
  • Extra workflows. Installers and Site both run on this pull request. Installers is the first run of the new checkout action, of the macOS and Linux installer builds from a checkout, and of the cells with their new argument.
  • Commit 2 alone. Its ci.yml has no Workshop checkout yet, so the one test above would fail there. Commit 3 adds it.

Verification

Run locally on Windows, all passing:

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets --all-features, with CARGO_BUILD_WARNINGS=deny
  • cargo nextest run --locked --workspace --all-features: 196 passed
  • cargo doc --workspace --no-deps --all-features, with RUSTDOCFLAGS="-D warnings"
  • cargo dylint --all, cargo xtask tidy, cargo deny check and cargo audit
  • node --test tools/docs-claims.mjs
  • cargo xtask site, books-only and full, against sibling runvil-docs and runvil-harness checkouts
  • cargo installer, unsigned, for Windows: it built Runvil_0.3.0_x64-setup.exe through cargo workshop bundle and left both checkouts clean
  • The tests, cargo xtask tidy and the scan again in a fresh clone

Not run locally: the macOS and Linux installers, the install cells, a signed build, and the workflows. CI covers those.

The crates that the rustdoc sites document moved to `cppalliance/runvil-harness`, and this workspace will stop depending on them, so `cargo doc` in this workspace will not find them. `cargo xtask site` now reads `RUNVIL_HARNESS`, the root of a `runvil-harness` checkout, and `build_rustdoc` runs `cargo doc` in that checkout with the `target/site-doc` folder of this workspace as the target. `.github/workflows/site.yml` sets `RUNVIL_HARNESS` and checks out `cppalliance/runvil-harness` on each run that is not a `pull_request` run.

- `checkouts` checks the two roots and returns `None` for the harness root when `books_only` is set. `build` takes `harness: Option<&Path>` in place of `options: Options`, so `None` is the one books-only signal that `build` and `check_links` get.
- `checkout_root` replaces `docs_root`. It takes the variable name and the repository name as parameters, so the two variables get the same checks and the same error text.
- A full build fails before it clears or builds anything when `RUNVIL_HARNESS` is unset, empty, or not a directory. The `RUNVIL_DOCS` check runs first.
- A books-only build ignores `RUNVIL_HARNESS`, also when the value names no directory. A `pull_request` run of the workflow is in that state, because the job sets the variable but skips the checkout.
- The new checkout step names no commit, so each site documents the commit that the checkout has at build time. The comment on `RUSTDOC_SITES` no longer says that the root `Cargo.toml` pins that commit.
- Four new tests pin the two failures of `site` for `RUNVIL_HARNESS` and the two results of `checkouts`. No test in this diff runs `build_rustdoc`, so the change to `.current_dir(harness)` has no test.
- The workflow comment now says that the CI of `cppalliance/runvil-harness` builds the rustdoc on each PR. This diff cannot show that.
Workshop, the desktop app, moved to its own repository, `cppalliance/runvil-workshop`, and the tool of that repository builds the Tauri bundle with `cargo workshop bundle`. This repository keeps the installers, so the `build-workshop` crate becomes `build-installer`: `cargo installer` runs `cargo workshop bundle` in the checkout that `RUNVIL_WORKSHOP` names and builds each installer from that bundle. `installers.yml` gets the checkout from the new `workshop-checkout` action, at the `rev` that `[workspace.metadata.workshop]` pins in the root `Cargo.toml`.

- The installer is the default mode of `cargo installer`, and `manifest` stays a mode. The plain Workshop build is removed, with `Request::Build`, `BuildRequest`, `Profile` and the `--release` flag.
- The code that built Workshop is removed: `plugin.rs`, `sidecar.rs`, the Tauri CLI command, the `node` check, and the sidecar staging with its cleanup. `BuildError` and `StepError` are removed with the cleanup, so each step now returns a `String` error.
- `RUNVIL_WORKSHOP` is the one input that names the checkout, and `BuildEnvironment` holds the path as `workshop_root`. `.cargo/config.toml` sets the variable to `../runvil-workshop` when it is unset, and `BUILD_WORKSHOP_ROOT` is removed.
- The Workshop pin is `rev` in `[workspace.metadata.workshop]`. When the `workshop-checkout` action gets no `ref`, it reads `rev` with an `awk` scan and stops the job if the value is not a 40-digit commit id.
- `workshop::check` runs before any command. It refuses a checkout whose `workspace.package.version` or `toolchain.channel` differs from the value in this workspace, and the crate gets the `toml` dependency to read the two values.
- For a Windows target, `cargo workshop bundle` is the only build step, and the installer is the NSIS setup from the bundle. This build reads no staged Gateway, no `gateway-pin/pin.json` and no Qt IFW, and it does not run the Gateway version check.
- A macOS or Linux build now runs the Gateway version check after the bundle step, not before it. A Gateway at the wrong version stops the build only after Workshop is built.
- A Gateway that `--gateway-binary` or `RUNVIL_GATEWAY_SIDECAR` names goes to the bundle step as `--gateway-binary` with an absolute path. The build no longer copies a named Gateway into the source tree.
- Without `CARGO_TARGET_DIR`, the bundle is in `target` in the Workshop checkout (`workshop_target_root`), and the installer output is in `target` in this workspace. `collect` moves the files from one to the other, so the two directories must be on one filesystem.
- Three steps of `build_installer` are removed, and nothing in this diff replaces them. The build no longer clears the bundle directory before the bundle step, no longer checks that the bundle holds the libraries of the Plugins, and no longer refuses a stub Gateway.
- The `manifest` mode now reads `plugins.updater.pubkey` from `tauri.conf.json` in the Workshop checkout. The manifest job of `installers.yml` checks out Workshop for that read.
- In `installers.yml`, `prepare` resolves the Workshop commit one time, and the later jobs check out that commit from `workshop-sha`. The new `workshop-ref` input applies only to a dispatched run, so a tag or a pull request builds the pinned commit.
- `prepare` reads the Gateway version from `gateway-pin/pin.json` in the checkout. `cell.sh` and `cell.ps1` get that version as a fourth argument and no longer read a pin file.
- The `pull_request` path list drops each path under `crates/workshop/`, `gateway-pin/**` and each `tools/` script, and adds `.github/actions/**`, `.cargo/config.toml`, `rust-toolchain.toml` and `crates/build-installer/**`. `Cargo.toml` stays in the list, so a change of `rev` starts the workflow.
- `cargo installer` does not read `rev`, so a local build uses the checkout at the commit that the checkout has. Nothing in this diff reads the `git` key, and the action names `cppalliance/runvil-workshop` itself.
- No test runs the real `cargo workshop bundle`. The unit tests use `FakeRunner` with a Workshop tree in a temporary directory, and `tests/cancellation.rs` uses a fake Cargo, so no test here checks the layout of a real bundle.
- One test, `the_installed_names_match_workshop_s_gateway_lookup`, reads the real checkout and panics when `RUNVIL_WORKSHOP` names no checkout. In this diff, only `installers.yml` uses the `workshop-checkout` action.
- The tests that read the Tauri configuration files of Workshop are removed from `tests/bundle.rs`. No test in this diff now checks that those files agree with the bundle directories that `collect` reads, or that only the Windows bundle holds the Gateway.
- This diff changes no file under `crates/workshop/`, and `default-members` in `Cargo.toml` still lists those crates.
Workshop, the desktop app, now has its own repository, `runvil-workshop`, which also holds the tooling that builds it and the Gateway pin. This repository keeps the installer tool, the documentation site tooling and the structural checks. The commit deletes 800 files, mainly `crates/workshop/`, `crates/build-ui/` and `gateway-pin/`, and removes the Workshop parts from `build-xtask`, `Cargo.toml`, `deny.toml` and `.github/workflows/ci.yml`.

- `product.rs` no longer has the desktop-app boundary rule or `Family::Workshop`, and it keeps the container privacy rule. The workspace now holds no container, so only the `suite` fixtures exercise that rule.
- `tidy.rs` no longer has the tier check or the `## Invariants` marker check. `crate_walk_violations` replaces `marker_violations` as the one owner of the read failures of the crate walk.
- `[workspace.dependencies]` now names no git dependency, so the commit removes the `harness_pin` check and `deny.toml` sets `allow-git = []`.
- `OWNED` in `unsafe_allowlist.rs` and `ALLOWED` in `type_size.rs` are now empty, so no crate has an exemption from the two checks.
- The new `violations_against` takes the list of owned crates as a parameter, so the fixtures pass `FIXTURE_OWNED`. One new test, `with_no_owned_crate_a_relaxation_in_any_crate_is_reported`, pins the violation text for an empty list.
- The `test` job now checks out Workshop with `./.github/actions/workshop-checkout`, because one test of `build-installer` reads the pinned Workshop.
- `.github/workflows/ci.yml` no longer has the `check-workshop`, `check-workshop-linux` and `ui` jobs. The new `wording` job runs `node --test tools/docs-claims.mjs`, and `ci-green` needs it.
- The wording scan moves to `tools/docs-claims.mjs` and no longer has `HOST_ALLOWED`, `TERM_ALLOWED` or `PLUGIN_ALLOWED`, so a phrase such as "test harness" or "Tauri plugin" in a rulebook now fails. The scan skips the `runvil-workshop`, `runvil-docs` and `runvil-harness` checkouts and no longer skips `node_modules` or `dist`.
- The license allow list in `deny.toml` goes from sixteen entries to six. A new dependency under `ISC` or `BSD-3-Clause` now fails `cargo deny check`.
- `cargo xtask` no longer has the `new-crate` subcommand, which made only `workshop-*` crates.
- `vibelight.toml` no longer excludes `crates/build-installer`, so the outline tool now analyzes that crate.
- The commit removes the `float_roundtrip` feature from `serde_json` and the `[profile.dist]` section from `Cargo.toml`.
- `Cargo.lock` goes from 796 packages to 82. It gets no new package, and no package that stays changes its version.
- No file under `crates/build-installer` or `crates/build-user-guide` changes, and `.github/workflows/ci.yml` is the only workflow in the diff.
Workshop, the desktop app, is now in its own repository, `cppalliance/runvil-workshop`, and this repository holds the tooling that builds the installers and the documentation site. `AGENTS.md`, `README.md` and `crates/README.md` now describe that layout, and the first two say that the root `Cargo.toml` pins the Workshop commit from which the installers are built.

- `AGENTS.md` drops the `## SPA and CSS Rules` section. Its two rules are about the CSS of the Workshop UI and about persisted UI state.
- `AGENTS.md` names `tools/docs-claims.mjs` as the wording check, in place of `crates/workshop/ui/test/docs-claims.mjs`.
- The verification commands in `AGENTS.md` no longer exclude `workshop`, `workshop-server` and `workshop-server-api`. The tests and the lint each lose the second run with `-p workshop -p workshop-server -p workshop-server-api`.
- `AGENTS.md` adds a condition for the tests: one test of `build-installer` reads the Workshop checkout that `RUNVIL_WORKSHOP` names. It says that `.cargo/config.toml` sets this variable to the checkout beside this repository unless the variable is already set.
- `README.md` now says that Workshop pins the Gateway release that each installer holds. It no longer names `gateway-pin/pin.json`.
- `AGENTS.md` and `README.md` no longer say that this repository pins `cppalliance/runvil-harness` by commit.
- The diff has no code, configuration or test. Thus it cannot confirm the items that the documents now name: `tools/docs-claims.mjs`, `[workspace.metadata.workshop]`, `RUNVIL_WORKSHOP` and the `.cargo/config.toml` setting.
@coderabbitai

coderabbitai Bot commented Nov 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 821 files, which is 671 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to Team to raise the limit.

Usage-priced reviews support at most 300 files.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: d649bf9b-1edd-4272-b0f8-63de934310dd
Commits

Reviewing files that changed from the base of the PR and between 43dc035 and 8426a51.

Files ignored due to path filters: 62

  • Cargo.lock is excluded by !**/*.lock
  • crates/build-installer/ifw/config/installer-logo.png is excluded by !**/*.png
  • crates/build-installer/ifw/config/installer-logo@2x.png is excluded by !**/*.png
  • crates/build-installer/ifw/config/installer-watermark.png is excluded by !**/*.png
  • crates/build-installer/ifw/config/installer-watermark@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/app-icon.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/128x128.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/128x128@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/32x32.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/64x64.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square107x107Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square142x142Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square150x150Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square284x284Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square30x30Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square310x310Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square44x44Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square71x71Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/Square89x89Logo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/StoreLogo.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-hdpi/ic_launcher.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-hdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-hdpi/ic_launcher_round.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-mdpi/ic_launcher.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-mdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-mdpi/ic_launcher_round.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xhdpi/ic_launcher.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xhdpi/ic_launcher_round.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxhdpi/ic_launcher.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxxhdpi/ic_launcher.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/android/mipmap-xxxhdpi/ic_launcher_round.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/icon.ico is excluded by !**/*.ico
  • crates/workshop/desktop/icons/icon.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/installer-header.bmp is excluded by !**/*.bmp
  • crates/workshop/desktop/icons/installer-header.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/installer-sidebar.bmp is excluded by !**/*.bmp
  • crates/workshop/desktop/icons/installer-sidebar.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-20x20@1x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-20x20@2x-1.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-20x20@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-20x20@3x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-29x29@1x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-29x29@2x-1.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-29x29@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-29x29@3x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-40x40@1x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-40x40@2x-1.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-40x40@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-40x40@3x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-512@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-60x60@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-60x60@3x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-76x76@1x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-76x76@2x.png is excluded by !**/*.png
  • crates/workshop/desktop/icons/ios/AppIcon-83.5x83.5@2x.png is excluded by !**/*.png
  • crates/workshop/package-lock.json is excluded by !**/package-lock.json
  • crates/workshop/ui/icons/runvil-icon.png is excluded by !**/*.png
  • crates/workshop/ui/icons/runvil-icon@2x.png is excluded by !**/*.png
Files selected for processing: 821

  • .cargo/config.toml
  • .cursor/rules/workshop-architecture.mdc
  • .cursor/rules/workshop-spa.mdc
  • .gitattributes
  • .githooks/pre-push
  • .github/actions/workshop-checkout/action.yml
  • .github/fixtures/workshop-package-smoke/gateway.state.toml
  • .github/fixtures/workshop-package-smoke/gateway.toml
  • .github/installers/cell.ps1
  • .github/installers/cell.sh
  • .github/workflows/ci.yml
  • .github/workflows/installers.yml
  • .github/workflows/site.yml
  • .gitignore
  • AGENTS.md
  • Cargo.toml
  • README.md
  • crates/README.md
  • crates/build-installer/AGENTS.md
  • crates/build-installer/Cargo.toml
  • crates/build-installer/README.md
  • crates/build-installer/ifw/config/config.xml
  • crates/build-installer/ifw/packages/com.runvil.gateway/meta/installscript.qs
  • crates/build-installer/ifw/packages/com.runvil.gateway/meta/package.xml
  • crates/build-installer/ifw/packages/com.runvil.workshop/meta/installscript.qs
  • crates/build-installer/ifw/packages/com.runvil.workshop/meta/package.xml
  • crates/build-installer/packaging/gateway-Info.plist
  • crates/build-installer/src/main.rs
  • crates/build-installer/src/main/args.rs
  • crates/build-installer/src/main/gateway.rs
  • crates/build-installer/src/main/installer.rs
  • crates/build-installer/src/main/installer/bundle.rs
  • crates/build-installer/src/main/installer/collect.rs
  • crates/build-installer/src/main/installer/ifw.rs
  • crates/build-installer/src/main/manifest.rs
  • crates/build-installer/src/main/pipeline.rs
  • crates/build-installer/src/main/runner.rs
  • crates/build-installer/src/main/tests.rs
  • crates/build-installer/src/main/tests/args.rs
  • crates/build-installer/src/main/tests/bundle.rs
  • crates/build-installer/src/main/tests/collect.rs
  • crates/build-installer/src/main/tests/failures.rs
  • crates/build-installer/src/main/tests/gateway.rs
  • crates/build-installer/src/main/tests/ifw.rs
  • crates/build-installer/src/main/tests/installer.rs
  • crates/build-installer/src/main/tests/manifest-args.rs
  • crates/build-installer/src/main/tests/manifest.rs
  • crates/build-installer/src/main/tests/stage.rs
  • crates/build-installer/src/main/tests/workshop.rs
  • crates/build-installer/src/main/workshop.rs
  • crates/build-installer/tests/cancellation.rs
  • crates/build-installer/tests/environment.rs
  • crates/build-ui/Cargo.toml
  • crates/build-ui/src/lib-tests.rs
  • crates/build-ui/src/lib.rs
  • crates/build-ui/tests/it/main.rs
  • crates/build-workshop/AGENTS.md
  • crates/build-workshop/README.md
  • crates/build-workshop/src/main/installer.rs
  • crates/build-workshop/src/main/pipeline.rs
  • crates/build-workshop/src/main/plugin.rs
  • crates/build-workshop/src/main/sidecar.rs
  • crates/build-workshop/src/main/tests.rs
  • crates/build-workshop/src/main/tests/failures.rs
  • crates/build-workshop/src/main/tests/gateway.rs
  • crates/build-workshop/src/main/tests/installer.rs
  • crates/build-workshop/src/main/tests/plugin.rs
  • crates/build-workshop/src/main/tests/sidecar.rs
  • crates/build-xtask/Cargo.toml
  • crates/build-xtask/src/debug_spelling-tests.rs
  • crates/build-xtask/src/harness_pin-tests.rs
  • crates/build-xtask/src/harness_pin.rs
  • crates/build-xtask/src/main.rs
  • crates/build-xtask/src/manifest.rs
  • crates/build-xtask/src/new_crate.rs
  • crates/build-xtask/src/product.rs
  • crates/build-xtask/src/product/container_tests.rs
  • crates/build-xtask/src/product/test_support.rs
  • crates/build-xtask/src/product/tests.rs
  • crates/build-xtask/src/site-tests.rs
  • crates/build-xtask/src/site.rs
  • crates/build-xtask/src/tidy-tests.rs
  • crates/build-xtask/src/tidy.rs
  • crates/build-xtask/src/type_size.rs
  • crates/build-xtask/src/unsafe_allowlist-tests.rs
  • crates/build-xtask/src/unsafe_allowlist.rs
  • crates/workshop/AGENTS.md
  • crates/workshop/agents/Cargo.toml
  • crates/workshop/agents/agents/chat.md
  • crates/workshop/agents/src/conversation-run.rs
  • crates/workshop/agents/src/conversation.rs
  • crates/workshop/agents/src/discovery-tests.rs
  • crates/workshop/agents/src/discovery.rs
  • crates/workshop/agents/src/lib.rs
  • crates/workshop/agents/src/protocol.rs
  • crates/workshop/agents/src/state.rs
  • crates/workshop/agents/src/table.rs
  • crates/workshop/agents/src/tee-tests.rs
  • crates/workshop/agents/src/tee.rs
  • crates/workshop/agents/src/timer.rs
  • crates/workshop/agents/src/transcript-tests.rs
  • crates/workshop/agents/src/transcript.rs
  • crates/workshop/agents/tests/it/conversation.rs
  • crates/workshop/agents/tests/it/main.rs
  • crates/workshop/agents/tests/it/support.rs
  • crates/workshop/desktop/AGENTS.md
  • crates/workshop/desktop/Cargo.toml
  • crates/workshop/desktop/Entitlements.plist
  • crates/workshop/desktop/Info.plist
  • crates/workshop/desktop/README.md
  • crates/workshop/desktop/build.rs
  • crates/workshop/desktop/icons/AGENTS.md
  • crates/workshop/desktop/icons/android/mipmap-anydpi-v26/ic_launcher.xml
  • crates/workshop/desktop/icons/android/values/ic_launcher_background.xml
  • crates/workshop/desktop/icons/icon.icns
  • crates/workshop/desktop/installer.nsi
  • crates/workshop/desktop/permissions/autogenerated/desktop_update_supported.toml
  • crates/workshop/desktop/permissions/autogenerated/quit.toml
  • crates/workshop/desktop/src/bridge.rs
  • crates/workshop/desktop/src/config.rs
  • crates/workshop/desktop/src/drops.rs
  • crates/workshop/desktop/src/gateway.rs
  • crates/workshop/desktop/src/gateway/boot.rs
  • crates/workshop/desktop/src/gateway/identity.rs
  • crates/workshop/desktop/src/gateway/supervisor.rs
  • crates/workshop/desktop/src/gateway/supervisor/launch.rs
  • crates/workshop/desktop/src/gateway/supervisor/lifecycle.rs
  • crates/workshop/desktop/src/gateway/supervisor/recovery.rs
  • crates/workshop/desktop/src/gateway/supervisor/signals.rs
  • crates/workshop/desktop/src/gateway/tests.rs
  • crates/workshop/desktop/src/gateway/tests/boot-launch-wait.rs
  • crates/workshop/desktop/src/gateway/tests/boot.rs
  • crates/workshop/desktop/src/gateway/tests/cancellation.rs
  • crates/workshop/desktop/src/gateway/tests/identity.rs
  • crates/workshop/desktop/src/gateway/tests/recovery.rs
  • crates/workshop/desktop/src/gateway/tests/shutdown.rs
  • crates/workshop/desktop/src/linux_media.rs
  • crates/workshop/desktop/src/main.rs
  • crates/workshop/desktop/src/menu-tests.rs
  • crates/workshop/desktop/src/menu.rs
  • crates/workshop/desktop/src/navigation.rs
  • crates/workshop/desktop/src/quit-tests.rs
  • crates/workshop/desktop/src/quit.rs
  • crates/workshop/desktop/src/window_state-tests.rs
  • crates/workshop/desktop/src/window_state.rs
  • crates/workshop/desktop/tauri.conf.json
  • crates/workshop/desktop/tauri.linux.conf.json
  • crates/workshop/desktop/tauri.macos.conf.json
  • crates/workshop/desktop/tauri.unsigned.conf.json
  • crates/workshop/desktop/tauri.windows.conf.json
  • crates/workshop/gateway-discovery/CONTRACT.md
  • crates/workshop/gateway-discovery/Cargo.toml
  • crates/workshop/gateway-discovery/fixtures/gateway-invalid-port.json
  • crates/workshop/gateway-discovery/fixtures/gateway-no-boot-identity.json
  • crates/workshop/gateway-discovery/fixtures/gateway-unknown-field.json
  • crates/workshop/gateway-discovery/fixtures/gateway.json
  • crates/workshop/gateway-discovery/src/atomic.rs
  • crates/workshop/gateway-discovery/src/cancellation.rs
  • crates/workshop/gateway-discovery/src/error.rs
  • crates/workshop/gateway-discovery/src/file-tests.rs
  • crates/workshop/gateway-discovery/src/file.rs
  • crates/workshop/gateway-discovery/src/health.rs
  • crates/workshop/gateway-discovery/src/health/connection.rs
  • crates/workshop/gateway-discovery/src/health/tests-connection.rs
  • crates/workshop/gateway-discovery/src/health/tests.rs
  • crates/workshop/gateway-discovery/src/lib.rs
  • crates/workshop/gateway-discovery/src/lock-tests.rs
  • crates/workshop/gateway-discovery/src/lock.rs
  • crates/workshop/gateway-discovery/src/paths.rs
  • crates/workshop/gateway-discovery/src/peer-tests.rs
  • crates/workshop/gateway-discovery/src/peer.rs
  • crates/workshop/gateway-discovery/src/shutdown.rs
  • crates/workshop/gateway-discovery/src/stale-tests.rs
  • crates/workshop/gateway-discovery/src/stale.rs
  • crates/workshop/gateway-discovery/src/sys.rs
  • crates/workshop/gateway-discovery/src/sys/linux.rs
  • crates/workshop/gateway-discovery/src/sys/macos.rs
  • crates/workshop/gateway-discovery/src/sys/windows.rs
  • crates/workshop/gateway-discovery/src/validated-tests.rs
  • crates/workshop/gateway-discovery/src/validated.rs
  • crates/workshop/gateway/Cargo.toml
  • crates/workshop/gateway/build.rs
  • crates/workshop/gateway/src/binding.rs
  • crates/workshop/gateway/src/binding/publication.rs
  • crates/workshop/gateway/src/binding/shutdown.rs
  • crates/workshop/gateway/src/binding/tests.rs
  • crates/workshop/gateway/src/binding/tests/atomic.rs
  • crates/workshop/gateway/src/binding/tests/publication.rs
  • crates/workshop/gateway/src/binding/tests/shutdown.rs
  • crates/workshop/gateway/src/client.rs
  • crates/workshop/gateway/src/client/events.rs
  • crates/workshop/gateway/src/client/progress_stream.rs
  • crates/workshop/gateway/src/client/socket.rs
  • crates/workshop/gateway/src/client/sse.rs
  • crates/workshop/gateway/src/client/tests.rs
  • crates/workshop/gateway/src/client/tests/progress.rs
  • crates/workshop/gateway/src/client/tests/socket.rs
  • crates/workshop/gateway/src/client/tests/switch.rs
  • crates/workshop/gateway/src/client/tests/timeouts.rs
  • crates/workshop/gateway/src/handles.rs
  • crates/workshop/gateway/src/heartbeat-tests.rs
  • crates/workshop/gateway/src/heartbeat.rs
  • crates/workshop/gateway/src/lib.rs
  • crates/workshop/gateway/src/progress-wire-tests.rs
  • crates/workshop/gateway/src/progress-wire.rs
  • crates/workshop/gateway/src/progress.rs
  • crates/workshop/gateway/src/progress/presenter.rs
  • crates/workshop/gateway/src/progress/tests-presenter.rs
  • crates/workshop/gateway/src/progress/tests-recovery.rs
  • crates/workshop/gateway/src/progress/tests.rs
  • crates/workshop/gateway/src/refresh.rs
  • crates/workshop/gateway/src/resolve-tests.rs
  • crates/workshop/gateway/src/resolve.rs
  • crates/workshop/gateway/src/test_gateway-process.rs
  • crates/workshop/gateway/src/test_gateway.rs
  • crates/workshop/gateway/src/version-tests.rs
  • crates/workshop/gateway/src/version.rs
  • crates/workshop/look/AGENTS.md
  • crates/workshop/look/THIRD_PARTY_NOTICES.md
  • crates/workshop/look/controls.css
  • crates/workshop/look/css.d.ts
  • crates/workshop/look/dropdown.css
  • crates/workshop/look/dropdown.ts
  • crates/workshop/look/icons.ts
  • crates/workshop/look/modal.css
  • crates/workshop/look/modal.ts
  • crates/workshop/look/package.json
  • crates/workshop/look/progress.css
  • crates/workshop/look/progress.ts
  • crates/workshop/look/semantic.css
  • crates/workshop/look/shimmer.css
  • crates/workshop/look/shimmer.ts
  • crates/workshop/look/sizes.css
  • crates/workshop/look/status-bar.css
  • crates/workshop/look/status-bar.ts
  • crates/workshop/look/test/boundary.mjs
  • crates/workshop/look/test/icons.mjs
  • crates/workshop/look/test/shared-modal.mjs
  • crates/workshop/look/test/shared-progress.mjs
  • crates/workshop/look/test/shared-status-bar.mjs
  • crates/workshop/look/test/shared-toast.mjs
  • crates/workshop/look/test/shimmer.mjs
  • crates/workshop/look/test/skin-css.mjs
  • crates/workshop/look/test/workshop-dropdown.mjs
  • crates/workshop/look/toast.css
  • crates/workshop/look/toast.ts
  • crates/workshop/look/tokens.css
  • crates/workshop/look/tsconfig.json
  • crates/workshop/menu/Cargo.toml
  • crates/workshop/menu/src/catalog-chat.rs
  • crates/workshop/menu/src/catalog-tests.rs
  • crates/workshop/menu/src/catalog.rs
  • crates/workshop/menu/src/handles.rs
  • crates/workshop/menu/src/lib.rs
  • crates/workshop/menu/src/menu.rs
  • crates/workshop/menu/src/menu/memory.rs
  • crates/workshop/menu/src/menu/tests-memory.rs
  • crates/workshop/menu/src/menu/tests.rs
  • crates/workshop/menu/tests/it/main.rs
  • crates/workshop/package.json
  • crates/workshop/platform/AGENTS.md
  • crates/workshop/platform/action-registry.ts
  • crates/workshop/platform/command-registry.ts
  • crates/workshop/platform/context-key-expr.ts
  • crates/workshop/platform/context-key-service.ts
  • crates/workshop/platform/event.ts
  • crates/workshop/platform/keybinding-parser.ts
  • crates/workshop/platform/keybinding-registry.ts
  • crates/workshop/platform/keybinding-resolver.ts
  • crates/workshop/platform/lifecycle.ts
  • crates/workshop/platform/menu-registry.ts
  • crates/workshop/platform/package.json
  • crates/workshop/platform/panel-registry.ts
  • crates/workshop/platform/quick-access-registry.ts
  • crates/workshop/platform/reconnect-backoff.ts
  • crates/workshop/platform/result.ts
  • crates/workshop/platform/service-registry.ts
  • crates/workshop/platform/status-bar.ts
  • crates/workshop/platform/status-indicators.ts
  • crates/workshop/platform/test/actions.mjs
  • crates/workshop/platform/test/boundary.mjs
  • crates/workshop/platform/test/command-failures.mjs
  • crates/workshop/platform/test/context-keys.mjs
  • crates/workshop/platform/test/keybindings.mjs
  • crates/workshop/platform/test/lifecycle.mjs
  • crates/workshop/platform/test/quick-access.mjs
  • crates/workshop/platform/test/reconnect-backoff.mjs
  • crates/workshop/platform/test/service-registry.mjs
  • crates/workshop/platform/test/workshop-part.mjs
  • crates/workshop/platform/text-control-service.ts
  • crates/workshop/platform/tsconfig.json
  • crates/workshop/platform/workshop-part.ts
  • crates/workshop/plugin-bashkit/Cargo.toml
  • crates/workshop/plugin-bashkit/src/lib.rs
  • crates/workshop/plugin-std/Cargo.toml
  • crates/workshop/plugin-std/src/lib.rs
  • crates/workshop/protocol/Cargo.toml
  • crates/workshop/protocol/src/catalog.rs
  • crates/workshop/protocol/src/error.rs
  • crates/workshop/protocol/src/input.rs
  • crates/workshop/protocol/src/lib.rs
  • crates/workshop/protocol/src/menu.rs
  • crates/workshop/protocol/src/status.rs
  • crates/workshop/protocol/src/workbench.rs
  • crates/workshop/protocol/tests/fixtures/workshop-frames.json
  • crates/workshop/protocol/tests/it/frames.rs
  • crates/workshop/protocol/tests/it/main.rs
  • crates/workshop/protocol/tests/it/workshop_frames.rs
  • crates/workshop/registry/Cargo.toml
  • crates/workshop/registry/src/lib.rs
  • crates/workshop/registry/src/push-tests.rs
  • crates/workshop/registry/src/push.rs
  • crates/workshop/registry/src/registry.rs
  • crates/workshop/registry/src/traits.rs
  • crates/workshop/registry/tests/it/main.rs
  • crates/workshop/run-log/Cargo.toml
  • crates/workshop/run-log/README.md
  • crates/workshop/run-log/src/append.rs
  • crates/workshop/run-log/src/error.rs
  • crates/workshop/run-log/src/lib.rs
  • crates/workshop/run-log/src/read.rs
  • crates/workshop/run-log/src/record.rs
  • crates/workshop/run-log/src/recorder.rs
  • crates/workshop/run-log/src/schema.rs
  • crates/workshop/run-log/tests/it/append.rs
  • crates/workshop/run-log/tests/it/fidelity.rs
  • crates/workshop/run-log/tests/it/main.rs
  • crates/workshop/run-log/tests/it/read.rs
  • crates/workshop/run-log/tests/it/recorder.rs
  • crates/workshop/run-log/tests/it/result.rs
  • crates/workshop/server-api/Cargo.toml
  • crates/workshop/server-api/src/lib-tests.rs
  • crates/workshop/server-api/src/lib.rs
  • crates/workshop/server/AGENTS.md
  • crates/workshop/server/Cargo.toml
  • crates/workshop/server/build.rs
  • crates/workshop/server/src/agents.rs
  • crates/workshop/server/src/agents/bindings-tests.rs
  • crates/workshop/server/src/agents/bindings.rs
  • crates/workshop/server/src/agents/broker-tests.rs
  • crates/workshop/server/src/agents/broker.rs
  • crates/workshop/server/src/agents/gateway.rs
  • crates/workshop/server/src/agents/language_guide.rs
  • crates/workshop/server/src/agents/language_guide/tests.rs
  • crates/workshop/server/src/agents/relay-tests.rs
  • crates/workshop/server/src/agents/relay.rs
  • crates/workshop/server/src/agents/search-tests.rs
  • crates/workshop/server/src/agents/search.rs
  • crates/workshop/server/src/agents/socket-tests.rs
  • crates/workshop/server/src/agents/socket.rs
  • crates/workshop/server/src/agents/socket_frames-tests.rs
  • crates/workshop/server/src/agents/socket_frames.rs
  • crates/workshop/server/src/agents/state.rs
  • crates/workshop/server/src/agents/status-tests.rs
  • crates/workshop/server/src/agents/status.rs
  • crates/workshop/server/src/agents/tests.rs
  • crates/workshop/server/src/agents/wire-tests.rs
  • crates/workshop/server/src/agents/wire.rs
  • crates/workshop/server/src/app.rs
  • crates/workshop/server/src/app/compose.rs
  • crates/workshop/server/src/app/test_helpers.rs
  • crates/workshop/server/src/app/tests.rs
  • crates/workshop/server/src/assets.rs
  • crates/workshop/server/src/cross_site.rs
  • crates/workshop/server/src/csp.rs
  • crates/workshop/server/src/error.rs
  • crates/workshop/server/src/fixtures.rs
  • crates/workshop/server/src/lib.rs
  • crates/workshop/server/src/routes.rs
  • crates/workshop/server/src/routes/assets-tests.rs
  • crates/workshop/server/src/routes/assets.rs
  • crates/workshop/server/src/routes/gateway_config-tests-recovery.rs
  • crates/workshop/server/src/routes/gateway_config-tests.rs
  • crates/workshop/server/src/routes/gateway_config.rs
  • crates/workshop/server/src/routes/health.rs
  • crates/workshop/server/src/routes/prompts-tests.rs
  • crates/workshop/server/src/routes/prompts.rs
  • crates/workshop/server/src/routes/realtime-origin-tests.rs
  • crates/workshop/server/src/routes/realtime-origin.rs
  • crates/workshop/server/src/routes/realtime-tests.rs
  • crates/workshop/server/src/routes/realtime.rs
  • crates/workshop/server/src/serve-tests.rs
  • crates/workshop/server/src/serve.rs
  • crates/workshop/server/src/websocket.rs
  • crates/workshop/server/src/workshop_socket-menu.rs
  • crates/workshop/server/src/workshop_socket.rs
  • crates/workshop/server/tests/common/mod.rs
  • crates/workshop/server/tests/fixtures/agent-frames.json
  • crates/workshop/server/tests/fixtures/realtime/client-events.json
  • crates/workshop/server/tests/fixtures/realtime/effective-sessions.json
  • crates/workshop/server/tests/fixtures/realtime/invalid-sequences.json
  • crates/workshop/server/tests/fixtures/realtime/server-events.json
  • crates/workshop/server/tests/fixtures/realtime/valid-sequences.json
  • crates/workshop/server/tests/it/agents.rs
  • crates/workshop/server/tests/it/agents/lifecycle.rs
  • crates/workshop/server/tests/it/agents/refusals.rs
  • crates/workshop/server/tests/it/agents/replacement.rs
  • crates/workshop/server/tests/it/agents/revoke.rs
  • crates/workshop/server/tests/it/agents/turns.rs
  • crates/workshop/server/tests/it/boot.rs
  • crates/workshop/server/tests/it/chat_gate.rs
  • crates/workshop/server/tests/it/chat_gate/canonical_sequence.rs
  • crates/workshop/server/tests/it/chat_gate/compaction.rs
  • crates/workshop/server/tests/it/chat_gate/lifecycle.rs
  • crates/workshop/server/tests/it/chat_gate/overload.rs
  • crates/workshop/server/tests/it/chat_gate/protocol.rs
  • crates/workshop/server/tests/it/chat_gate/recovery.rs
  • crates/workshop/server/tests/it/heartbeat.rs
  • crates/workshop/server/tests/it/heartbeat_loop.rs
  • crates/workshop/server/tests/it/heartbeat_loop/recovery.rs
  • crates/workshop/server/tests/it/heartbeat_loop/refresh_on_reconnect.rs
  • crates/workshop/server/tests/it/heartbeat_loop/startup_convergence.rs
  • crates/workshop/server/tests/it/main.rs
  • crates/workshop/server/tests/it/realtime_relay.rs
  • crates/workshop/server/tests/it/realtime_relay/authentication.rs
  • crates/workshop/server/tests/it/realtime_relay/canonical_sequence.rs
  • crates/workshop/server/tests/it/realtime_relay/lifecycle.rs
  • crates/workshop/server/tests/it/realtime_relay/overload.rs
  • crates/workshop/server/tests/it/realtime_relay/protocol.rs
  • crates/workshop/server/tests/it/realtime_relay/recovery.rs
  • crates/workshop/server/tests/it/std_real_directory.rs
  • crates/workshop/server/tests/it/user_state.rs
  • crates/workshop/server/tests/it/workshop_socket.rs
  • crates/workshop/server/tests/it/workshop_socket/menu.rs
  • crates/workshop/server/tests/it/workshop_socket/menu/failures.rs
  • crates/workshop/server/tests/it/workshop_socket/menu/restart.rs
  • crates/workshop/server/tests/it/workshop_socket/status.rs
  • crates/workshop/server/tests/it/workspace_shutdown.rs
  • crates/workshop/server/tests/it/workspace_timeout.rs
  • crates/workshop/status/Cargo.toml
  • crates/workshop/status/src/handles.rs
  • crates/workshop/status/src/lib.rs
  • crates/workshop/status/src/status.rs
  • crates/workshop/status/tests/it/main.rs
  • crates/workshop/support/Cargo.toml
  • crates/workshop/support/src/atomic.rs
  • crates/workshop/support/src/backoff.rs
  • crates/workshop/support/src/bus.rs
  • crates/workshop/support/src/config.rs
  • crates/workshop/support/src/deadline.rs
  • crates/workshop/support/src/error_message-tests.rs
  • crates/workshop/support/src/error_message.rs
  • crates/workshop/support/src/fixtures.rs
  • crates/workshop/support/src/lib.rs
  • crates/workshop/support/src/state_bucket-tests.rs
  • crates/workshop/support/src/state_bucket.rs
  • crates/workshop/support/tests/it/config.rs
  • crates/workshop/support/tests/it/main.rs
  • crates/workshop/ui/AGENTS.md
  • crates/workshop/ui/THIRD_PARTY_NOTICES.md
  • crates/workshop/ui/build.mjs
  • crates/workshop/ui/index.html
  • crates/workshop/ui/package.json
  • crates/workshop/ui/pcm-worklet.js
  • crates/workshop/ui/src/base/paths.ts
  • crates/workshop/ui/src/css.d.ts
  • crates/workshop/ui/src/main.ts
  • crates/workshop/ui/src/parts/agent/agent-commands.ts
  • crates/workshop/ui/src/parts/agent/agent-handle.ts
  • crates/workshop/ui/src/parts/agent/agent-menu.ts
  • crates/workshop/ui/src/parts/agent/agent-pane-header.css
  • crates/workshop/ui/src/parts/agent/agent-pane-header.ts
  • crates/workshop/ui/src/parts/agent/agent-panel.ts
  • crates/workshop/ui/src/parts/agent/agent-session-view.ts
  • crates/workshop/ui/src/parts/agent/agent-session.css
  • crates/workshop/ui/src/parts/agent/agent-toolbar.css
  • crates/workshop/ui/src/parts/agent/agent-toolbar.ts
  • crates/workshop/ui/src/parts/agent/agent.contribution.ts
  • crates/workshop/ui/src/parts/agent/index.ts
  • crates/workshop/ui/src/parts/agent/markdown-render.css
  • crates/workshop/ui/src/parts/agent/markdown-render.ts
  • crates/workshop/ui/src/parts/agent/mode-chip.css
  • crates/workshop/ui/src/parts/agent/mode-chip.ts
  • crates/workshop/ui/src/parts/agent/transcript/collapsible.css
  • crates/workshop/ui/src/parts/agent/transcript/collapsible.ts
  • crates/workshop/ui/src/parts/agent/transcript/feed-scroll.ts
  • crates/workshop/ui/src/parts/agent/transcript/human-message.css
  • crates/workshop/ui/src/parts/agent/transcript/human-message.ts
  • crates/workshop/ui/src/parts/agent/transcript/motion.ts
  • crates/workshop/ui/src/parts/agent/transcript/reconcile.ts
  • crates/workshop/ui/src/parts/agent/transcript/rows.ts
  • crates/workshop/ui/src/parts/agent/transcript/tail-status.ts
  • crates/workshop/ui/src/parts/agent/transcript/tool-labels.ts
  • crates/workshop/ui/src/parts/agent/transcript/tool-line.css
  • crates/workshop/ui/src/parts/agent/transcript/tool-line.ts
  • crates/workshop/ui/src/parts/agent/transcript/transcript-model.ts
  • crates/workshop/ui/src/parts/agent/transcript/transcript-view.ts
  • crates/workshop/ui/src/parts/agent/transcript/transcript.css
  • crates/workshop/ui/src/parts/agent/transcript/turn-footer.ts
  • crates/workshop/ui/src/parts/agent/transcript/web-hover-card.ts
  • crates/workshop/ui/src/parts/chatbox/chat-box-view.ts
  • crates/workshop/ui/src/parts/chatbox/chat-box.css
  • crates/workshop/ui/src/parts/chatbox/chat-box.ts
  • crates/workshop/ui/src/parts/chatbox/chip-view.ts
  • crates/workshop/ui/src/parts/chatbox/mention-chip.ts
  • crates/workshop/ui/src/parts/chatbox/tentative-mark.ts
  • crates/workshop/ui/src/parts/chatbox/typeahead-popup.css
  • crates/workshop/ui/src/parts/chatbox/typeahead-popup.ts
  • crates/workshop/ui/src/parts/chatbox/types.ts
  • crates/workshop/ui/src/parts/chrome/about-dialog.css
  • crates/workshop/ui/src/parts/chrome/about-dialog.ts
  • crates/workshop/ui/src/parts/chrome/chrome.contribution.ts
  • crates/workshop/ui/src/parts/chrome/command-center.css
  • crates/workshop/ui/src/parts/chrome/command-center.ts
  • crates/workshop/ui/src/parts/chrome/model-picker-trigger.css
  • crates/workshop/ui/src/parts/chrome/model-picker-trigger.ts
  • crates/workshop/ui/src/parts/chrome/token-ring.css
  • crates/workshop/ui/src/parts/chrome/token-ring.ts
  • crates/workshop/ui/src/parts/chrome/update-view.css
  • crates/workshop/ui/src/parts/chrome/update-view.ts
  • crates/workshop/ui/src/parts/chrome/window-chrome.css
  • crates/workshop/ui/src/parts/chrome/window-chrome.ts
  • crates/workshop/ui/src/parts/chrome/zoom.ts
  • crates/workshop/ui/src/parts/editor/closed-editors.ts
  • crates/workshop/ui/src/parts/editor/editor-commands.ts
  • crates/workshop/ui/src/parts/editor/editor-lifecycle.ts
  • crates/workshop/ui/src/parts/editor/editor-menus.ts
  • crates/workshop/ui/src/parts/editor/editor-panel.css
  • crates/workshop/ui/src/parts/editor/editor-panel.ts
  • crates/workshop/ui/src/parts/editor/editor-settings-service.ts
  • crates/workshop/ui/src/parts/editor/editor-surface.ts
  • crates/workshop/ui/src/parts/editor/editor.contribution.ts
  • crates/workshop/ui/src/parts/editor/find-widget.ts
  • crates/workshop/ui/src/parts/editor/goto-line.ts
  • crates/workshop/ui/src/parts/editor/index.ts
  • crates/workshop/ui/src/parts/gateway/gateway-config-bridge.ts
  • crates/workshop/ui/src/parts/gateway/gateway-config-panel.css
  • crates/workshop/ui/src/parts/gateway/gateway-config-panel.ts
  • crates/workshop/ui/src/parts/gateway/gateway.contribution.ts
  • crates/workshop/ui/src/parts/gateway/index.ts
  • crates/workshop/ui/src/parts/layout/dock-theme.ts
  • crates/workshop/ui/src/parts/layout/drop-position.ts
  • crates/workshop/ui/src/parts/layout/keybinding-dispatcher.ts
  • crates/workshop/ui/src/parts/layout/layout-boot.ts
  • crates/workshop/ui/src/parts/layout/layout-persistence.ts
  • crates/workshop/ui/src/parts/layout/layout.contribution.ts
  • crates/workshop/ui/src/parts/layout/panel-close.ts
  • crates/workshop/ui/src/parts/layout/panel-tab.ts
  • crates/workshop/ui/src/parts/layout/panel-types.ts
  • crates/workshop/ui/src/parts/layout/tab-names.ts
  • crates/workshop/ui/src/parts/layout/watermark.css
  • crates/workshop/ui/src/parts/layout/watermark.ts
  • crates/workshop/ui/src/parts/layout/zones.css
  • crates/workshop/ui/src/parts/layout/zones.ts
  • crates/workshop/ui/src/parts/menu/edit.contribution.ts
  • crates/workshop/ui/src/parts/menu/index.ts
  • crates/workshop/ui/src/parts/menu/menu.ts
  • crates/workshop/ui/src/parts/menu/menubar.contribution.ts
  • crates/workshop/ui/src/parts/menu/menubar.ts
  • crates/workshop/ui/src/parts/menu/stubs.contribution.ts
  • crates/workshop/ui/src/parts/menu/window-menu.css
  • crates/workshop/ui/src/parts/quickinput/commands-history.ts
  • crates/workshop/ui/src/parts/quickinput/quick-access-providers.ts
  • crates/workshop/ui/src/parts/quickinput/quick-input.css
  • crates/workshop/ui/src/parts/quickinput/quick-input.ts
  • crates/workshop/ui/src/parts/quickinput/quickinput.contribution.ts
  • crates/workshop/ui/src/parts/run/index.ts
  • crates/workshop/ui/src/parts/run/run-panel.css
  • crates/workshop/ui/src/parts/run/run-panel.ts
  • crates/workshop/ui/src/parts/run/run-rows.ts
  • crates/workshop/ui/src/parts/run/run.contribution.ts
  • crates/workshop/ui/src/parts/shared/clipboard.ts
  • crates/workshop/ui/src/parts/shared/panel-dialog.ts
  • crates/workshop/ui/src/parts/status/activity-indicator.ts
  • crates/workshop/ui/src/parts/status/mic-meter.ts
  • crates/workshop/ui/src/parts/status/status-bar.ts
  • crates/workshop/ui/src/parts/status/status.contribution.ts
  • crates/workshop/ui/src/parts/stt/realtime-stt.ts
  • crates/workshop/ui/src/parts/stt/stt.css
  • crates/workshop/ui/src/parts/stt/stt.ts
  • crates/workshop/ui/src/parts/take/take-registry-events.ts
  • crates/workshop/ui/src/parts/take/take-registry-patches.ts
  • crates/workshop/ui/src/parts/take/take-registry-state.ts
  • crates/workshop/ui/src/parts/take/take-registry-types.ts
  • crates/workshop/ui/src/parts/take/take-registry.ts
  • crates/workshop/ui/src/parts/workbench.contributions.ts
  • crates/workshop/ui/src/parts/workspace-document/index.ts
  • crates/workshop/ui/src/parts/workspace-document/workspace-document.contribution.ts
  • crates/workshop/ui/src/parts/workspace/add-folder.ts
  • crates/workshop/ui/src/parts/workspace/file-actions.ts
  • crates/workshop/ui/src/parts/workspace/index.ts
  • crates/workshop/ui/src/parts/workspace/open-recent.ts
  • crates/workshop/ui/src/parts/workspace/workshop-panel.css
  • crates/workshop/ui/src/parts/workspace/workshop-panel.ts
  • crates/workshop/ui/src/parts/workspace/workspace-drops.ts
  • crates/workshop/ui/src/parts/workspace/workspace.contribution.ts
  • crates/workshop/ui/src/services/agent-session.ts
  • crates/workshop/ui/src/services/agent-socket.ts
  • crates/workshop/ui/src/services/closed-editors.ts
  • crates/workshop/ui/src/services/command-failure-toasts.ts
  • crates/workshop/ui/src/services/commands-history.ts
  • crates/workshop/ui/src/services/editor-settings-service.ts
  • crates/workshop/ui/src/services/error-catalog.ts
  • crates/workshop/ui/src/services/gateway-config-api.ts
  • crates/workshop/ui/src/services/json-request.ts
  • crates/workshop/ui/src/services/layout-policy.ts
  • crates/workshop/ui/src/services/model-service.ts
  • crates/workshop/ui/src/services/protocol.ts
  • crates/workshop/ui/src/services/quick-input-service.ts
  • crates/workshop/ui/src/services/realtime-event-decoder.ts
  • crates/workshop/ui/src/services/realtime-transcription.ts
  • crates/workshop/ui/src/services/recent-files-store.ts
  • crates/workshop/ui/src/services/run-api.ts
  • crates/workshop/ui/src/services/speech-capture.ts
  • crates/workshop/ui/src/services/speech-level.ts
  • crates/workshop/ui/src/services/stt-status.ts
  • crates/workshop/ui/src/services/toast-service.ts
  • crates/workshop/ui/src/services/tree-state-service.ts
  • crates/workshop/ui/src/services/ui-storage.ts
  • crates/workshop/ui/src/services/update-service.ts
  • crates/workshop/ui/src/services/workbench-service.ts
  • crates/workshop/ui/src/services/workshop-socket.ts
  • crates/workshop/ui/src/services/workspace-api.ts
  • crates/workshop/ui/src/services/workspace-events.ts
  • crates/workshop/ui/src/services/workspace-file-client.ts
  • crates/workshop/ui/src/services/zone-state-service.ts
  • crates/workshop/ui/src/tokens/component.css
  • crates/workshop/ui/style.css
  • crates/workshop/ui/test/about-dialog.mjs
  • crates/workshop/ui/test/active-editor-key.mjs
  • crates/workshop/ui/test/activity-led.mjs
  • crates/workshop/ui/test/agent-keybindings.mjs
  • crates/workshop/ui/test/agent-menu.mjs
  • crates/workshop/ui/test/agent-session-service.mjs
  • crates/workshop/ui/test/agent-session-view.mjs
  • crates/workshop/ui/test/agent-socket.mjs
  • crates/workshop/ui/test/agent-stt-boot.mjs
  • crates/workshop/ui/test/agent-stt.mjs
  • crates/workshop/ui/test/agent-toolbar.mjs
  • crates/workshop/ui/test/agent-wire-fixtures.mjs
  • crates/workshop/ui/test/barberpole-beside-indicators.mjs
  • crates/workshop/ui/test/boot-queue.mjs
  • crates/workshop/ui/test/boot-ui-storage.mjs
  • crates/workshop/ui/test/chat-box.mjs
  • crates/workshop/ui/test/chatbox-boundary.mjs
  • crates/workshop/ui/test/close-commands.mjs
  • crates/workshop/ui/test/closed-editors.mjs
  • crates/workshop/ui/test/command-center.mjs
  • crates/workshop/ui/test/command-failure-toast.mjs
  • crates/workshop/ui/test/disconnect-recovery.mjs
  • crates/workshop/ui/test/disposable-adoption.mjs
  • crates/workshop/ui/test/dock-css.mjs
  • crates/workshop/ui/test/drop-position.mjs
  • crates/workshop/ui/test/dropdown-bundle-css.mjs
  • crates/workshop/ui/test/editor-commands.mjs
  • crates/workshop/ui/test/editor-idioms.mjs
  • crates/workshop/ui/test/editor-panel.mjs
  • crates/workshop/ui/test/editor-save-as.mjs
  • crates/workshop/ui/test/editor-save-race.mjs
  • crates/workshop/ui/test/editor-save-timeout.mjs
  • crates/workshop/ui/test/editor-settings.mjs
  • crates/workshop/ui/test/error-catalog.mjs
  • crates/workshop/ui/test/feed-scroll.mjs
  • crates/workshop/ui/test/files-actions.mjs
  • crates/workshop/ui/test/fixtures/audio/pcm16le-24khz.json
  • crates/workshop/ui/test/fixtures/replay/jfk-native-recaptured.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/jfk-native.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-agreed-shrink.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-final-word.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-punctuation-case.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-short-word-final.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-silence-short-word.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-skipped-word-then-speech.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-sliding-window.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-trailing-echo-same-pass.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/scripted-trailing-echo.snapshots.json
  • crates/workshop/ui/test/fixtures/replay/ui-baseline.json
  • crates/workshop/ui/test/fixtures/replay/ui-metrics.json
  • crates/workshop/ui/test/foundation-css.mjs
  • crates/workshop/ui/test/gateway-config-bridge.mjs
  • crates/workshop/ui/test/gateway-config-menu.mjs
  • crates/workshop/ui/test/helpers/boot.mjs
  • crates/workshop/ui/test/helpers/bundle-seams.mjs
  • crates/workshop/ui/test/helpers/css-values.mjs
  • crates/workshop/ui/test/helpers/lazy-feature.mjs
  • crates/workshop/ui/test/helpers/leak-check.mjs
  • crates/workshop/ui/test/helpers/tauri-dialog-stub.mjs
  • crates/workshop/ui/test/helpers/tauri-event-stub.mjs
  • crates/workshop/ui/test/helpers/tauri-webview-stub.mjs
  • crates/workshop/ui/test/helpers/tauri-window-stub.mjs
  • crates/workshop/ui/test/helpers/ui-storage.mjs
  • crates/workshop/ui/test/json-request-timeout.mjs
  • crates/workshop/ui/test/keybinding-dispatcher.mjs
  • crates/workshop/ui/test/layout-open-registry.mjs
  • crates/workshop/ui/test/layout-policy-boot.mjs
  • crates/workshop/ui/test/lazy-css-entry-bundle.mjs
  • crates/workshop/ui/test/lazy-panel-sizing.mjs
  • crates/workshop/ui/test/leak-check.mjs
  • crates/workshop/ui/test/led-error-after-thinking.mjs
  • crates/workshop/ui/test/markdown-render.mjs
  • crates/workshop/ui/test/mention-chip.mjs
  • crates/workshop/ui/test/menu-registries.mjs
  • crates/workshop/ui/test/menu-spec.mjs
  • crates/workshop/ui/test/menubar-submenu.mjs
  • crates/workshop/ui/test/menus.mjs
  • crates/workshop/ui/test/mic-meter.mjs
  • crates/workshop/ui/test/mode-chip.mjs
  • crates/workshop/ui/test/model-picker-trigger.mjs
  • crates/workshop/ui/test/model-service.mjs
  • crates/workshop/ui/test/models-push-refresh.mjs
  • crates/workshop/ui/test/no-local-storage.mjs
  • crates/workshop/ui/test/no-shared-ui.mjs
  • crates/workshop/ui/test/open-recent.mjs
  • crates/workshop/ui/test/panel-registry.mjs
  • crates/workshop/ui/test/pcm-worklet.mjs
  • crates/workshop/ui/test/quick-access-wording.mjs
  • crates/workshop/ui/test/quick-input-css.mjs
  • crates/workshop/ui/test/quick-input.mjs
  • crates/workshop/ui/test/realtime-wire-fixtures.mjs
  • crates/workshop/ui/test/recent-files-store.mjs
  • crates/workshop/ui/test/run-api.mjs
  • crates/workshop/ui/test/run-panel.mjs
  • crates/workshop/ui/test/smoke.mjs
  • crates/workshop/ui/test/speech-capture.mjs
  • crates/workshop/ui/test/status-frames.mjs
  • crates/workshop/ui/test/status-indicators.mjs
  • crates/workshop/ui/test/stt-capture-score.mjs
  • crates/workshop/ui/test/stt-replay.mjs
  • crates/workshop/ui/test/stt-stream.mjs
  • crates/workshop/ui/test/tab-menu.mjs
  • crates/workshop/ui/test/tab-shimmer.mjs
  • crates/workshop/ui/test/take-reducer-loader.mjs
  • crates/workshop/ui/test/take-registry-regressions.mjs
  • crates/workshop/ui/test/take-registry.mjs
  • crates/workshop/ui/test/text-control-service.mjs
  • crates/workshop/ui/test/titlebar-browser-mode.mjs
  • crates/workshop/ui/test/titlebar-macos.mjs
  • crates/workshop/ui/test/titlebar-style.mjs
  • crates/workshop/ui/test/token-ring.mjs
  • crates/workshop/ui/test/tool-line.mjs
  • crates/workshop/ui/test/transcript-model.mjs
  • crates/workshop/ui/test/tree-state-service.mjs
  • crates/workshop/ui/test/typeahead-popup.mjs
  • crates/workshop/ui/test/ui-storage.mjs
  • crates/workshop/ui/test/update-service.mjs
  • crates/workshop/ui/test/update-view.mjs
  • crates/workshop/ui/test/watermark.mjs
  • crates/workshop/ui/test/window-chrome.mjs
  • crates/workshop/ui/test/window-menu.mjs
  • crates/workshop/ui/test/workbench-fields-css.mjs
  • crates/workshop/ui/test/workbench-frames.mjs
  • crates/workshop/ui/test/workbench-mount.mjs
  • crates/workshop/ui/test/workbench-service.mjs
  • crates/workshop/ui/test/workshop-layout.mjs
  • crates/workshop/ui/test/workshop-panel-menu.mjs
  • crates/workshop/ui/test/workshop-panel-restore.mjs
  • crates/workshop/ui/test/workshop-wire-fixtures.mjs
  • crates/workshop/ui/test/workshop-zones.mjs
  • crates/workshop/ui/test/workspace-drops.mjs
  • crates/workshop/ui/test/workspace-files.mjs
  • crates/workshop/ui/test/workspace-switch.mjs
  • crates/workshop/ui/test/zone-stability.mjs
  • crates/workshop/ui/test/zone-state-service.mjs
  • crates/workshop/ui/test/zoom.mjs
  • crates/workshop/ui/tsconfig.json
  • crates/workshop/user-state/Cargo.toml
  • crates/workshop/user-state/src/error.rs
  • crates/workshop/user-state/src/handlers-tests.rs
  • crates/workshop/user-state/src/handlers.rs
  • crates/workshop/user-state/src/handles.rs
  • crates/workshop/user-state/src/lib.rs
  • crates/workshop/user-state/src/store-tests.rs
  • crates/workshop/user-state/src/store.rs
  • crates/workshop/user-state/tests/it/main.rs
  • crates/workshop/workspace/Cargo.toml
  • crates/workshop/workspace/src/blocking.rs
  • crates/workshop/workspace/src/error-tests.rs
  • crates/workshop/workspace/src/error.rs
  • crates/workshop/workspace/src/handlers.rs
  • crates/workshop/workspace/src/handlers/file-tests.rs
  • crates/workshop/workspace/src/handlers/file.rs
  • crates/workshop/workspace/src/handlers/file_state-tests.rs
  • crates/workshop/workspace/src/handlers/file_state.rs
  • crates/workshop/workspace/src/handlers/tests.rs
  • crates/workshop/workspace/src/handles.rs
  • crates/workshop/workspace/src/lib.rs
  • crates/workshop/workspace/src/test_support.rs
  • crates/workshop/workspace/src/workspace.rs
  • crates/workshop/workspace/src/workspace/backing-ui-state-memory.rs
  • crates/workshop/workspace/src/workspace/backing.rs
  • crates/workshop/workspace/src/workspace/confine.rs
  • crates/workshop/workspace/src/workspace/pointer.rs
  • crates/workshop/workspace/src/workspace/stall.rs
  • crates/workshop/workspace/src/workspace/tests.rs
  • crates/workshop/workspace/src/workspace/tests/backing.rs
  • crates/workshop/workspace/src/workspace/tests/close.rs
  • crates/workshop/workspace/src/workspace/tests/grants.rs
  • crates/workshop/workspace/src/workspace/tests/jail.rs
  • crates/workshop/workspace/src/workspace/tests/pointer.rs
  • crates/workshop/workspace/src/workspace/tests/reopen.rs
  • crates/workshop/workspace/src/workspace/tests/switch.rs
  • crates/workshop/workspace/src/workspace/tests/ui_state_memory.rs
  • crates/workshop/workspace/src/workspace/tests/write_stall.rs
  • crates/workshop/workspace/src/workspace/token.rs
  • crates/workshop/workspace/src/workspace/tree.rs
  • crates/workshop/workspace/src/workspace_file.rs
  • crates/workshop/workspace/src/workspace_file/actor.rs
  • crates/workshop/workspace/src/workspace_file/siblings.rs
  • crates/workshop/workspace/src/workspace_file/tests-mutations.rs
  • crates/workshop/workspace/src/workspace_file/tests-ui-state-kv.rs
  • crates/workshop/workspace/src/workspace_file/tests.rs
  • crates/workshop/workspace/src/workspace_file/ui_state_kv.rs
  • crates/workshop/workspace/tests/it/main.rs
  • crates/workshop/workspace/tests/it/save_timeout.rs
  • deny.toml
  • gateway-pin/README.md
  • gateway-pin/pin.json
  • tools/bump-gateway.mjs
  • tools/bump-gateway.test.mjs
  • tools/docs-claims.mjs
  • tools/fetch-gateway-sidecar.mjs
  • tools/fetch-gateway-sidecar.test.mjs
  • tools/gateway-archive.mjs
  • tools/gateway-archive.test.mjs
  • tools/gateway-pin.mjs
  • tools/gateway-pin.test.mjs
  • tools/gateway-tts-live.mjs
  • tools/gateway-tts-live.test.mjs
  • tools/stage-gateway-sidecar.mjs
  • tools/stage-gateway-sidecar.test.mjs
  • vibelight.toml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@greptile-apps

greptile-apps Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issue was identified.

Summary

Moves Workshop out of this workspace and builds installers from a pinned external checkout.

  • Runvil builds installers from a checked Workshop checkout.
  • Installer jobs build from one selected Workshop commit.
  • The docs site builds API pages from a Harness checkout.
  • Workshop source and its build tooling leave the Runvil repository.

No actionable issues were identified.

Intentional constraints acknowledged by vinniefalco:

  • API pages follow the current Harness checkout rather than the former pin.
  • Workshop-side packaging edits no longer trigger this repository's install cells; pin changes and manual runs cover them here.
  • Bundle moves require both target directories on one drive unless CARGO_TARGET_DIR is set.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  Pin["Cargo.toml Workshop pin"] --> Prepare["Prepare resolves Workshop commit"]
  Override["Manual workshop-ref"] --> Prepare
  Prepare --> Build["Build jobs use resolved commit"]
  Build --> Bundle["cargo workshop bundle in Workshop checkout"]
  Bundle --> Installer["cargo installer collects and packages files"]
  Installer --> Cells["Install cells check selected components"]
  Installer --> Manifest["Manifest verifies updater signatures"]
  Cells --> Release["Tag release publishes files"]
  Manifest --> Release
Loading

Reviews (1) · Last reviewed commit: "Update docs after Workshop moved to its ..." · Reviewed by Greptile

@vinniefalco
vinniefalco merged commit 8426a51 into cppalliance:master Nov 13, 2026
30 checks passed

This branch was previously deployed

1 inactive deployment
github-pages — 8426a517 Deployed Nov 13, 2026 by vinniefalco via deploy #192
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant