chore: add Copilot cloud sandbox setup and dev container with hve-core-all#36
Merged
Merged
Conversation
…e-all Adds a shared best-effort hve-core-all install script, a copilot-setup-steps workflow (.NET 9 + Node 20, SHA-pinned actions), and a matching .NET 9 dev container. All hve-core-all install steps are non-fatal so the sandbox and dev container still start on failure. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 30ac6f6b-0691-4d33-8447-1b6eab516e55
JoshLuedeman
enabled auto-merge
July 22, 2026 19:58
JoshLuedeman
disabled auto-merge
July 22, 2026 19:58
JoshLuedeman
enabled auto-merge
July 22, 2026 19:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
Three files that give this repo a GitHub Copilot cloud sandbox and a matching dev container, both pre-installing the
hve-core-allCopilot CLI plugin from microsoft/hve-core:.devcontainer/setup-hve-core.sh— shared, best-effort, idempotent installer for the Copilot CLI +hve-core-allplugin. Every step is non-fatal (|| echo ::warning::…/|| true) so the sandbox and dev container still start even if the CLI or plugin can't be installed. Committed with the executable bit (mode100755) and LF line endings..github/workflows/copilot-setup-steps.yml—Copilot Setup Stepsworkflow. Single job named exactlycopilot-setup-stepsonubuntu-latest, with top-level and job-levelpermissions: contents: read. Sets up .NET 9 (with NuGet cache) and Node 20, restores dependencies (continue-on-error), runs the shared installer (continue-on-error,env: GITHUB_TOKEN: ${{ github.token }}), and prints tool versions. Triggers:workflow_dispatch+push/pull_requestfiltered to the setup files..devcontainer/devcontainer.json— .NET 9 dev container (mcr.microsoft.com/devcontainers/dotnet:1-9.0-bookworm) + Node 20 feature;postCreateCommandrestores deps then runs the shared installer.Detected stack
net9.0)Ziyada.sln→src/Ziyada(Exe) +tests/Ziyada.Tests(xUnit)dotnet restore); no lockfile, noglobal.jsonwindows-latest@v4)Build / test / lint commands (from README, CONTRIBUTING, CI)
dotnet restoredotnet build --no-restore --configuration Releasedotnet test(xUnit; CI adds--collect:"XPlat Code Coverage")dotnet run --project src/Ziyadadotnet formatstep in CI); style is convention-based perCONTRIBUTING.md.Convention notes / decisions
@v4). Following the security best practice for setup workflows, the new workflow pins third-party actions by full commit SHA (version in a trailing comment). This is the one intentional deviation from the existing@v4convention, using the latest v4.x.x of each action to stay consistent with the repo's major versions:actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9 # v4.3.1actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0.NETversion (9.0.x) and NuGet cache (cache-dependency-path: '**/*.csproj') matchrelease.yml.devcontainer.jsonis strict JSON (no comments) so it validates withjq..devcontainer/setup-hve-core.shso the workflow re-validates when the shared installer changes.Validation
actionlint .github/workflows/copilot-setup-steps.ymljqparse + required-keys ofdevcontainer.jsontrue)100755dotnet restoredry-rundotnetlauncher but no .NET SDK (No .NET SDKs were found). Covered by the workflow'sSetup .NETstep; step is alsocontinue-on-error.devcontainer build1-9.0-bookwormand thenode:1feature were confirmed to exist in their registries;jqstructural validation passed.copilot-setup-stepsworkflow on this PR/branchubuntu-latestrunner (see below)hve-core-all install result — ✅ SUCCESS (clean Ubuntu CI runner)
The
copilot-setup-stepsworkflow ran on a freshubuntu-latestrunner (run29952428005) and passed. TheInstall hve-core-all pluginandVerify toolssteps show the full headless install succeeding from scratch — the Copilot CLI was not pre-installed, so thenpm install -g @github/copilotpath ran and then the plugin installed cleanly:Verify toolsstep output on the runner:Notes:
hve-core-all@hve-core (v3.3.101)installed successfully on a clean runner and appears incopilot plugin list.npm install -g @github/copilotsucceeded fresh (added 3 packages in 4s) andMarketplace "hve-core" added successfully.on first run — confirming the non-fatal fallbacks aren't needed on a clean sandbox.continue-on-error/ non-fatal, so any future auth or network hiccup surfaces a::warning::without failing the job.(An earlier local dry-run via Git Bash on the Windows validation host also succeeded, but the clean-CI run above is the authoritative result for the cloud sandbox.)
Notes
build-and-test(ci.yml) check is failing on this PR withNU1202: Package Terminal.Gui 2.4.17 is not compatible with net9.0 … supports: net10.0. This is caused bysrc/Ziyada/Ziyada.csproj(and the test project) floatingTerminal.GuiviaVersion="2.*", which now resolves to the net10.0-only2.4.17. It is independent of this PR (this branch touches no.csproj/.sln/C# code) and would fail onmainas well. Left unfixed to honor the three-files-only / do-not-modify-unrelated-code scope; a follow-up should pinTerminal.Guito a net9.0-compatible version (e.g.2.4.16) or retarget tonet10.0.