Repository navigation
Take Workshop from runvil-workshop - #215
Conversation
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.
|
Important Review skippedToo 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.
|
[Medium impact] The PR appears safe to merge; no actionable issue was identified.
|
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
Cargo.tomlnames 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-workshopbecomesbuild-installer. It no longer builds Workshop. It runscargo workshop bundlein the checkout thatRUNVIL_WORKSHOPnames, then does what it did before: it collects the payload, builds the Qt IFW installer and the DMG, and inmanifestmode writeslatest.jsonandSHA256SUMS..cargo/config.tomlpointsRUNVIL_WORKSHOPat../runvil-workshopwhen the variable is unset.installers.yml. A new action,.github/actions/workshop-checkout, checks Workshop out at the pinned commit.prepareresolves the commit once and every later job uses it. A dispatched run can take aworkshop-refinput 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.crates/workshop/,crates/build-ui/,gateway-pin/, the Gateway scripts intools/, and the two Workshop rule files are gone: 800 files. Their history is inrunvil-workshop.build-xtask. The checks that existed only for Workshop are removed: the tier table, the## Invariantsmarker rule, the desktop-app boundary,harness_pin, andcargo xtask new-crate. Workshop's own copy of the crate runs them now. The checks over every crate stay.cargo xtask sitebuilds the API pages from arunvil-harnesscheckout thatRUNVIL_HARNESSnames.site.ymlchecks it out atmaster.check-workshop,check-workshop-linuxanduiare removed, with the Node, Tauri and stub Gateway steps of the other jobs.runvil-workshophas its own copies. Awordingjob runs the scan, which moved totools/docs-claims.mjs.[workspace.dependencies]keeps the 12 keys the three crates use.Cargo.lockgoes from 796 packages to 82, and no package that stays changes version.deny.tomlallows no git source and six licenses.AGENTS.md, the READMEs,.gitignore,.gitattributesandvibelight.tomlare updated to match.Things worth a look
revin[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.installer.nsior a Tauri config no longer starts the install cells from Workshop's side. Itsbundle.ymlproves the bundle builds on five targets, and the cells run here when the pin moves. A dispatched run withworkshop-reftests any Workshop commit by hand.master. They used to document the pinned harness commit. They now document the tip ofrunvil-harness, refreshed by the nightly run.testjob checks Workshop out for it. Locally it reads the sibling checkout, and it fails namingRUNVIL_WORKSHOPwhen there is none.target/, and the installer moves its files into this repository's, so the two must be on one drive unlessCARGO_TARGET_DIRis set.vibelight.tomlno longer excludesbuild-installer: with every crate excluded,vibelighthas nothing to outline.ci.ymlhas 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 --checkcargo clippy --workspace --all-targets --all-features, withCARGO_BUILD_WARNINGS=denycargo nextest run --locked --workspace --all-features: 196 passedcargo doc --workspace --no-deps --all-features, withRUSTDOCFLAGS="-D warnings"cargo dylint --all,cargo xtask tidy,cargo deny checkandcargo auditnode --test tools/docs-claims.mjscargo xtask site, books-only and full, against siblingrunvil-docsandrunvil-harnesscheckoutscargo installer, unsigned, for Windows: it builtRunvil_0.3.0_x64-setup.exethroughcargo workshop bundleand left both checkouts cleancargo xtask tidyand the scan again in a fresh cloneNot run locally: the macOS and Linux installers, the install cells, a signed build, and the workflows. CI covers those.